ตัวเลข ” 23 ” 

 

การขายวิญญาณ ฉบับ Real World เขียนเกรินเหมือนเด็กติดเกมเลยแฮะ

 

แต่จะเปรียบช่วงตลอดชีวิตที่ผ่านมาเสมือนประโยคที่ว่า ”ขายวิญญาณให้ซาตาน” ก็ไม่แปลก เราเคยคิดและ challenge ตัวเองเมื่อนานมาแล้วว่า ไอ้อายุที่คนมันจบปริญญาตรีกัน มัน 22 , 23 เลยนิหว่า

 

แล้วไอ้คนอายุ “23” นี่มันควรเป็นยังไงนะ เราจะไปได้ไกลขนาดไหน แล้วไอ้นิยามของคำว่าไปไกล มันจำเป็นต้องเป็นยังไงของบริบทของคนอายุ 23

 

เป็นการตั้งคำถามสมัยยังเด็ก เอาจริงๆมันก็คงเป็นคำถามที่ใครก็คงเคยคิดว่า จบปริญญา แล้วเราจะเป็นยังไง เราจะทำอะไรกันต่อไป แล้วจะเป็นยังไงเมื่อเราเข้าและจบมหาลัย แต่เราดันเป็นไอ้เด็กที่คิดคำถามนี้ตั้งแต่ “เด็ก” ไม่รู้ว่าเด็กขนาดไหนเหมือนกัน ซึ่งถ้าเอาเท่าที่พอจะจำความได้คำถามนี้คือเกิดขึ้นช่วงมัธยมต้นหรืออาจจะประถมด้วยซ้ำ พอย้อนไป คำถามที่เกิดขึ้นเมื่อเด็กคนนั้นอายุ 12,13 หรืออาจจะต่ำกว่านั้น มันค่อนข้างเป็นช่วงเวลาที่ยาวนานเอาเรื่องเมื่อเทียบกับตัวเลข “23”

 

กลายเป็นเราดันมีโจทย์ที่ตั้งธงมาว่า เราจะ ”ต้องเก่ง” ให้ได้ แต่พอเราถึงเลข “23” จริงๆ มันดันมีคำถามเกิดขึ้นมาอีกว่า การขายวิญญาณของเราในช่วงที่ผ่านมานั้น มันคุ้มจริงๆมั้ย ?

 

จึงเกิดเป็นคำถามว่า ทำไมเราต้อง Wanna be ที่จะเก่งในตลอดช่วงที่ผ่านมา เราเชื่อว่าตัวเองโง่ และเราไม่ใช่ Born to be แบบคนอื่นๆ แล้วทำไมเราถึงไม่ใช้ชีวิตไปเรื่อย ใจเย็นๆ แบบคนอื่น?

 

ตลอดช่วงชีวิตที่ผ่านมาเราได้แลกอะไรหลากหลายอย่างเพื่อเดินทางมาถึงวันนี้ค่อนข้างเยอะ ในความที่สมองค่อนข้างช้ากว่าจะเข้าใจอะไรแบบจริงๆจังๆ กลายเป็นเรื่องใดเรื่องหนึ่งเราต้อง Take เวลากับมันเยอะกว่าชาวบ้าน แต่เราเชื่อในกฏ 10,000 ชั่วโมง ซึ่งก็ไม่รู้นะ ว่ามันจริงมั้ย ณ เวลานั้น

 

แต่เราเชื่อว่าถ้าเราทุ่มเทให้กับมัน เราควรจะได้ผลตอบแทนตามสิ่งที่เราทุ่มเทสิ  #แต่ !! ประโยคนี้ใช้ไม่ได้กับความรัก ! พิสูจน์แล้ว! ไม่ว่าทุ่มมากหรือน้อยแค่ไหนก็พังได้ #โสด

 

กลับมาเรื่องของเรา ก็นั้นละ ที่มาของไอ้ประโยคที่ว่าขายวิญญาณ   จริงๆถ้าจะพูดจริงๆมันก็คือการแลก “ชีวิตวัยเด็ก ที่หายไป” กับสิ่งที่เราดันตั้งโจทย์ตั้งแต่เด็ก ไม่ว่าจะเป็นความสนุกวัยเด็กที่หายไป เกมที่หายไป หรือ เพื่อนก็หายไปเช่นกัน จะด้วยนิสัยที่เหี้ยเอง หรือ ปากเหี้ย อันนี้น่าจะประเด็นใหญ่ ถถถ แต่ก็ทำให้แต่ละช่วงชีวิต มัธยม มหาลัย ทำงาน เราเหลือเพื่อนสนิทช่วงละ 2-3 คนเท่านั้นเอง ทำให้มันเป็นที่มาของคำถามว่ามันคุ้มจริงๆมั้ยที่เราแลกมันไป ถ้าเราใช้เวลากับอย่างอื่น กับเพื่อนมากกว่านี้ละ?

 

บางคนอาจจะมองว่าคุ้ม บางคนอาจจะมองว่าไม่คุ้ม ก็ไม่รู้สินะ เราไม่ได้บอกว่ามันควรเป็นแบบไหน เราแค่มาเล่าให้ฟังว่าชีวิตเราเดินทางมาถึงเลข “23” ซึ่งถ้าเอาจริงๆมันก็เป็นเลขที่คนมองว่าเด็กมาก แต่นั้นละ เราเดินทางมาถึงเลขนี้ด้วยจุดประสงค์ ด้วยการมีเส้นทางที่เราร่างขึ้นเองตั้งแต่ต้น เราเลยไม่เคยมองว่าเลขนี้มันคือเด็กหรือผู้ใหญ่

 

ซึ่งเอาเข้าจริงสิ่งที่เราต้องแลกเมื่อเราเลือกที่จะ ‘วิ่ง’ ในวัยที่ควรหัดเดินมันมากกว่าที่เราคิด สิ่งที่คุณต้องเตรียมใจคือ “การล้ม” และ “เจ็บ” เราเป็นคนหนึ่งที่ล้มและล้มบ่อย ล้มแรง ล้มเรื่อยๆ ล้มจนเราคิดในใจกูนี่มัน Mr.Error ชัดๆ ล้มจนท้อ เราจนคิดว่าตัวเองเป็นโรคซึมเศร้าไปแล้ว ซึ่งก็ไม่รู้ว่า อาจจะเป็นจริงๆก็ได้

 

การล้ม มันเกิดขึ้นได้หลายรูปแบบ เดินๆวิ่งๆอยู่ สะดุด ล้มเองก็เกิดขึ้นได้อาจจะบ่อยครั้งด้วย หรือ ยืนพักอยู่เฉยๆ มีคนมาชนล้มก็มี เมื่อคุณตัวเล็กและคนอื่นเห็นว่าคุณไม่ได้พร้อมในสนามนี้ โลกมันไม่ได้สวยงามขนาดที่เขาจะให้คุณขี่หลัง หรือ จะจูงคุณเดินไปด้วยเสมอไป โลกที่เรายืนและเส้นทางที่เราจะไปมันโหดร้ายกว่านั้น

 

เมื่อครั้งหนึ่งที่คุยงานกับลูกค้า ที่จบไม่ค่อยสวยนัก พร้อมกับเพื่อนในทีมที่ไปคุยด้วย ในวันนั้นเพื่อนพูดขึ้นมาว่า “ถ้าเป็นกู คงช็อคไปละ” นี่คือสิ่งที่เราต้องแลกกว่าจะได้มันมา สิ่งนี้นั้นเราเรียกว่า “ประสบการณ์”  แล้วไอ้ประสบการณ์เนี่ยมันไม่ใช่ว่าเราจะร้องขอจากคุณครู ว่าสอนผมหน่อยครับได้ มันไม่มีทางเกิดขึ้นได้ เจ้าสิ่งนี้มันเป็นสิ่งที่เราต้องล้มเอง เราถึงจะเรียนรู้ว่าควรทำยังไง

 

ถ้าเราล้มครั้งแรกแล้วเจ็บ อันนั้นไม่แปลก แต่ถ้าเราล้มด้วยเหตุเดิมแล้วยังเจ็บเท่าเดิม หรือ เจ็บหนักกว่าเดิม อันนี้เราต้องคิดละ เป็นเพราะเขาทำให้เราล้ม หรือ เป็นเพราะเราที่ไม่เรียนรู้จากครั้งก่อน

 

แต่ถ้าเราล้มตั้งแต่รอบแรกแล้วเลือกที่จะหยุดเดินต่อ เราคงไม่สามารถมาถึงจุดนี้ ถ้าเราล้มแล้วเจ็บ แล้วเราบอกตัวเองว่าพอเหอะไม่สนุกเลย เราคงไปต่อไม่ได้ สิ่งที่อยากจะเล่าคือเราว่าไม่ว่าจะล้มมาเจ็บแค่ไหน จากเรื่องไหน สิ่งที่ต้องทำคือ ลุกให้ไว แล้ว Review ว่าอะไรคือต้นตอที่ทำให้เราล้ม แล้วอย่ามาทำให้เราล้มอีก และที่สำคัญ ท้อได้ พักได้ แต่ห้ามหยุด โลกนี้มันโหดร้ายกว่าที่คิด การที่เราหยุด มันไม่ใช่หมายความว่าโลกรอบๆตัวเราหยุดด้วย ทุกคนยังคงเดินไปข้างหน้า การที่เราหยุดไม่ต่างกับการที่เราถอยหลัง ถ้าเหนื่อยนักก็เดินช้าๆก็ได้

 

ถึงวันนี้ วันที่ตัวเลข “23” ซึ่งถ้ามองจากคนรอบตัวที่เรารู้จัก เอาจริงๆคนรอบตัวเราส่วนใหญ่อายุหลัก 20ปลาย ถึง 30กลาง กันทั้งนั้น ก็คงมองว่าตัวเลขนี้มันเด็กมาก แต่เราก็หวังว่า โพสนี้ ที่เราเขียนยาวๆนี้ จะช่วยอะไรใครได้ ไม่ว่าจะเป็นรุ่นน้อง หรือรุ่นพี่ หรือท่านใดๆก็ตาม

 

มาวันนี้เราค่อนข้างภูมิใจในตัวเองที่วันนั้น เลือกที่จะขายวิญญาณ จึงเป็นที่มาของเส้นทางที่เดินทางมาถึงวันนี้ วันที่เราสวมหมวกหลายๆใบพร้อมกัน

 

ไม่ว่าจะเป็น โปรแกรมเมอร์ , Chief Technology Officer (CTO) และ หนึ่งในเจ้าของบริษัทที่มาเลเซีย พร้อมภาระอันหนักอึ่งที่ต้องพยายามทำให้บริษัทรอดช่วงนี้ไปให้ได้, CEO บริษัทซอฟแวร์เล็กๆในไทย , ที่ปรึกษาให้กับบริษัทในไทยบางบริษัท  ที่เราได้สร้างการเปลี่ยนแปลงให้กับเขาเหล่านั้น , รองนายกสมาคมโปรแกรมเมอร์ไทย ที่ได้เริ่มทำมาตั้งแต่ สามสี่ปีก่อน และ บัณฑิต เกียรตินิยมอันดับ 2 ที่ยังไม่ทันรับปริญญา Who care?

 

เราเชื่อในประโยคที่ว่า “ไม่มี โชคดีและบังเอิญ บนโลกใบใหญ่ใบนี้” การเดินทางในช่วงตลอดหลายปีที่ผ่านมาเราจึง “ยืน” ด้วยตัวเองให้มากที่สุด ด้วยสมมุติฐานว่า โลกรอบๆตัวจะถล่มก็ได้ แต่กูต้องยืนได้ด้วยตัวเอง เมื่อไม่มีโชคดีหรือเรื่องบังเอิญ เราต้องสร้าง “โอกาส” ให้ตัวเองให้มากที่สุด อย่าโทษดินฟ้าอากาศ ว่าไม่มีโอกาส ไม่มีประสบการณ์  

 

ถึงแม้เราจะไม่ได้เริ่มจากติดลบ หรือ เริ่มจาก 0 แต่เราก็ไม่ได้เริ่มจาก 10 เหมือนกัน เราไม่ได้มีทุนชีวิตมากกว่าคนอื่น ทุกสิ่งเกิดจากความพยายาม ที่เราเขียนยาวๆทั้งหมด เราเชื่อว่า ไม่ว่าใครก็ตามที่อาจจะยังไม่เจอเส้นทางตัวเอง หรือ พึ่งเจอ ไม่ว่าตอนนี้จะอายุยี่สิบต้นๆ หรือ สามสิบกลางๆ เราเชื่อว่ามันพึ่งเริ่มทั้งนั้น  

ณ ตอนนี้เราเริ่มอยู่ตัวแล้ว เราพร้อมจะแชร์ ช่วยเหลือ สนับสนุนคนอื่นมากขึ้นกว่าเดิม จากเดิมที่เราทำแต่สมาคม ในวงของโปรแกรมเมอร์ ตอนนี้เราพร้อมจะออกไปแชร์ความรู้ ในมหาลัย หรือที่ไหนก็ตามแต่ ใครอยากให้ช่วยอะไร ทักมาได้เลย ไม่มีเงินอะไรก็คุยได้ โดยเฉพาะถ้าได้แชร์กับ โรงเรียน มหาลัย ขอที่พักให้พอ ถ้าต่างจังหวัด  หรือถ้าโปรแกรมเมอร์ใครจะจัดงาน ตอนนี้เรากลับมาแล้วว เรามีทุกอย่างพร้อมสนับสนุน ทั้งส่วนตัวและสมาคมฯ

 

ตอนแรกตั้งใจจะเขียนรีวิวชีวิตสั้นๆ เนื่องในโอกาสวันนี้ครบ 23 ขวบ และ เราพึ่งเรียนจบ ก็เลยเอาวะเขียนรีวิวเส้นทางชีวิตเรา ซึ่งไม่รู้จะมีใครอ่านมาถึงมั้ย พร้อมชวนคนมางานรับปริญญาละกัน

 

จะมีงานซ้อมรับปริญญาวันที่

 

————————————————————

วันซ้อมย่อย
– มจธ.บางมด คณะเทคโนโลยีสารสนเทศ
– วันที่ 10 พฤศจิกายน ก่อน 12:00 และ หลัง14:00

– วันที่ 11 พฤศจิกายน หลัง 17:00

————————————————————

 

ถ้าใครสะดวกเรียนเชิญทุกท่าน เราไม่กล้าทักไปเองส่วนตัว เกรงใจ มาเหอะ

 

และ เอาจริงๆ โพสนี้เป็นโพสที่ยากเหมือนกันที่จะเขียน เราไม่รู้ว่าการเขียนออกมา จะทำให้คนเข้าใจจุดประสงค์ที่เราเขียนมั้ย หรือ ไม่รู้ว่าจะคิดว่าเป็นโพสขิงหรือป่าว หรือ มันคุ้มค่ากันมั้ย เพราะถ้าจะเอาจริงๆ ตอนนี้เราเชื่อว่าหลายๆคนที่รู้จักเรา กว่า 30-40% น่าจะคิดว่าเราจบมหาลัยมาสักพักแล้ว ถถถ ถ้าจะมาเขียนรีวิวหรือเขียนชวนคนมางานรับปริญญาตัวเอง ก็จะทำให้ความน่าเชื่อถือ หายไปมั้ยนะ แต่ไม่เป็นไร เราเชื่อว่าตัวเลขไม่ใช่ตัวกำหนดอะไร

 

Key take away.

  1. หาเส้นทางตัวเองให้เจอ ว่าเราอยากไปทางไหน
  2. เตรียมใจที่จะล้ม และตั้งสติให้ได้เมื่อล้ม
  3. ล้มได้ พักได้ แต่ถ้าอยากไปถึงจุดหมาย อยากให้เดินต่อ ถ้าเหนื่อยมากไม่ต้องวิ่งก็ได้
  4. ไม่มีโชคดีบนโลกใบนี้ โอกาสสร้างได้ด้วยตัวเองเชื่อเรา

 

ปล. ขอบคุณรูปสวยๆจาก Sirirat Channoi

Improves performance ให้กับ MYSQL Galera Cluster

 

หนึ่งสิ่งที่ได้เจอหลังจากใช้ Galera Cluster มาใน Production รู้สึกว่าเอ้ะทำไม Performance มันตก !!

จริงมันช้าแปลกๆอยู่ละ พึ่งสังเกตุ ถถถถถ

วันนี้เลยขอเขียนบทความนี้ เผื่อเป็นทางออกให้หลายๆคนที่กำลังใช้ Galera Cluster อยู่

” binary logging ” และ ” innodb_flush_log_at_trx_commit  ” คือพระเอก ในวันนี้

ซึ่งเจ้าสองตัวนี้เราจะต้องไปจัดการมันในไฟล์ .cnf หรือ galera.cnf ขึ้นอยู่กับเราจัดการไฟล์ Config สำหรับ mysql galera cluster ของเรายังไง

 

innodb_flush_log_at_trx_commit

เป็น Option ที่ให้เรา config ได้ โดยจะเป็นสิ่งที่เกี่ยวข้องกับการ Write และ Flush log

โดยจะมีทั้งหมด 3 options ด้วยกัน

  • innodb_flush_log_at_trx_commit = 0 จะทำการ Write และ Flush log 1 ครั้งต่อ 1 วินาที
  • innodb_flush_log_at_trx_commit = 1 [Default]  จะทำการ Write และ Flush log ทุกๆ transaction
  • innodb_flush_log_at_trx_commit = 2  จะทำการ Write ทุกๆ transation แต่จะ Flush log ทุกๆ 1 วินาที

*Transation ใดๆ ที่ไม่ได้ Write แต่ไม่ได้ Flush อาจจะทำให้ข้อมูลหายได้ ถ้าเกิด crash ! ใน Database ปกติ ซึ่งหากเป็นปกติผมจะแนะนำให้ใช้เป็น innodb_flush_log_at_trx_commit = 1

แต่สำหรับ Galera cluster นั้นเป็น synchronous replication แปลว่า ทุก Commit ของแต่ละ transaction ที่ได้ commit ลง Node แรกนั้นได้ Sync ไปยัง Node อื่นๆ ใน Cluster อยู่แล้ว ทำให้ในเคสนี้เราเปิดเป็น  innodb_flush_log_at_trx_commit = 2  ได้เลย!! ยกเว้น node ทั้งหมดใน Cluster เราจะพังพร้อมกัน ถถถ

 

binary logging

เป็นสิ่งที่จะเก็บการเปลี่ยนแปลงต่างๆ ไม่ว่าจะเป็นในแง่ของ Data หรือ structure เช่น  CREATE, ALTER, INSERT, UPDATE and DELETE ซึ่งเป็น statements ที่จะทำให้เกิดการเปลี่ยนแปลงกับข้อมูลใน Table  จะทำการ Log ทั้งหมด

แต่ถ้าเป็นพวก SELECT  หรือ SHOW จะไม่ได้มีการ Log ใดๆ

ซึ่งสิ่งที่เราต้องทำคือการเปิดเจ้า Binary logging ตัวนี้ พอเราไปไล่ Code ใน Database เราจะเจอว่า ไม่ว่าเราเปิดหรือปิด Bin-log มันก็ยังคงไปเรียก function log_and_order แต่เป็นการมาจาก class ที่แตกต่างกัน

  • จาก TC_LOG_BINLOG ในกรณีที่ Binary logging ได้ทำการ enabled
  • จาก TC_LOG_MMAP ในกรณีที่ Binary logging ได้ทำการ disabled

ซึ่งไอ้เจ้า innodb_flush_log_at_trx_commit มันจะถูกเรียกใช้เฉพาะเมื่อมี Class TC_LOG_BINLOG หรือแปลอีกทีคือ เราจำเป็นที่จะต้องเปิด Binary logging เพื่อให้สามารถใช้ Option innodb_flush_log_at_trx_commit ได้

หากเป็นการเรียกผ่าน TC_LOG_MMAP สิ่งที่เกิดขึ้นคือมันจะไปผ่าน TC_LOG_MMAP::log_one_transaction แปลว่าจะมีการ Log ทุกๆ Transation นั้นเป็นสาเหตุที่ทำให้ Write preformane ของเราช้าลง

 

ซึ่งสรุปได้ว่า ถ้าจะทำให้  Write performance ของเราดีขึ้น จะต้องปรับเป็น innodb_flush_log_at_trx_commit  = 2 และ เปิดใช้งาน Binary logging ด้วย

ซึ่งเราจำเป็นที่จะต้องปรับ Config นี้ไปยังทุกๆ node ใน Cluster ด้วย

 

หลังจากนั้นผลที่ได้จากการทดสอบจาก Record ใน Table จำนวน 2,000,000 ด้วย Tools sysbench โดยมีการ Setup Lab สำหรับการทดสอบ ดังนี้

3 Servers สำหรับ Mysql Galera cluster โดย Memory 2GB

และ 1 Servers สำหรับการยิง Load test จาก Sysbench

 

 

ซึ่งทำให้ได้ผลว่า Performance โดยรวมดีขึ้นประมาณ 15% ทั้งนี้ขึ้นอยู่กับจำนวน Record ด้วย

 

จบฮะ ใครมีอะไรสงสัยส่ง Message มาคุยกันได้ที่ Facebook : Issaret Prachitmutita

และเร็วๆนี้จะมี Class Jump into DevOps รอบ 2 ซึ่งครอบคลุมเนื้อหา Docker , Rancher , Circleci, ELK for logging , API Gateway with KONG  ใครสนใจทักแชทมาลงชื่อไว้ฮะ ได้วันเวลาที่แน่นอนจะแจ้งไป

 

ขอบคุณครับ.

 

อ่านต่อ:

https://lists.launchpad.net/maria-developers/msg10086.html

https://jira.mariadb.org/browse/MDEV-3861

http://worklog.askmonty.org/worklog/Server-Sprint/?tid=116

https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit