จากเหตุการณ์ BSOD (Blue Screen of Death) ใน Windows OS นั้น
ที่เกิดจากการ rollout ของ CrowdStrike
ซึ่งส่งผลกรพทบต่อบริษัทต่าง ๆ จำนวนมาก
ในมุมมองของ Software Developer นั้นได้เรียนรู้อะไรจากเหตุการณ์นี้บ้าง ?
เรื่องแรกที่สำคัญมาก ๆ คือ แนวทางในการทดสอบ
ควรต้องจำลอง environment การทดสอบให้คล้ายหรือเหมือนจริงให้ได้มากที่สุด
test case ให้ครอบคลุมในส่วนต่าง ๆ
แต่ใช้ชีวิตจริงเป็นอย่างไร ตรงนี้น่าจะต้องทำการปรับปรุงให้ดียิ่งขึ้น
ที่สำคัญเรื่องของ strategy ของการทดสอบก็สำคัญ
โดยต้องสร้างสมดุลระหว่าง คุณภาพที่สูง กับความเร็วในการส่งมอบ เช่น
- Unit test
- Integration test
- Component test
- Contract test
- End-to-end test
ต้องกำหนดให้ชัดเจน และ ต้องลงมือทำให้เป็นปกติ
มันไม่ใช่เรื่องใหม่แต่อย่างใด !!
แต่มักจะละเลย
เรามีเวลามากพอในการแก้ไขปัญหา แต่ไม่มีเวลาทำให้มันดี
มีคำพูดที่น่าสนใจคือ Quality is not important util the software is important
เรื่องต่อมาคือ เรื่องของการ rollout
เป็นเรื่องของ deployment strategy ที่น่าสนใจ เพื่อลดปัญหาลงไปบน production
เช่น
- Big bang
- Blue-green deployment
- Canary release
- Stage rollout เช่น canary (nightly), dev, beta และ stable เป็นต้น
จะเห็นได้ว่าปัญหาดังกล่าวมาจากการ rollout แบบ Big bang
ที่สำคัญเรื่องการทดสอบก็ไม่ค่อยดีด้วย จึงทำให้เกิดปัญหาอันยิ่งใหญ่
มีคำพูดที่ตลกร้ายคือ ระบบปกติมา 365 วัน แต่มีปัญหาวันเดียว คนจะจดจำ 1 วันนั้นเสมอ !!
ที่สำคัญคือ ผลกระทบจากปัญหานั่นเอง ว่ามันร้ายแรงอย่างไรต่อธุรกิจ
ดังนั้นในการ rollout ควรจะค่อย ๆ ปล่อยออกมาเช่น
- เริ่มจากการ Eat Your Own Dog Food ก่อน นั่นคือ rollout ใช้ภายในองค์กรก่อนว่ามีปัญหาอะไรหรือไม่
- จากนั้นค่อย rollout แบบ canary release ไป เช่น 10%, 30%, 50% และ 100% ในที่สุด หรือจะแบ่งตามกลุ่มผู้ใช้งานก็ได้ ในแต่ละขั้นตอนก็ monitor ดูว่ามีปัญหาเกิดขึ้นหรือไม่
เรื่องสุดท้าย เมื่อเกิดข้อผิดพลาดขึ้นแล้ว ไม่ใช่มานั่งหาว่าใครผิด
สิ่งที่ควรต้องทำคือ การแก้ไขที่รวดเร็ว
จากนั้นจำการสรุปปัญหา หาแนวทางการแก้ไขและป้องกันไม่ให้เกิดซ้ำขึ้นอีก
ทุกความผิดพลาด สร้างความรู้ใหม่ ๆ ขึ้นมาเสมอ
อยู่ที่ว่าจะเรียนรู้จากมันหรือไม่ หรือเพียงให้มันผ่าน ๆ ไป