Launch guidance
ช่วงนี้ผมกำลังอ่านหนังสือ The DevOps Handbook หนังสือเล่มนี้เป็นภาคทฤษฎีที่อยู่เบื้องหลังนิยายในหนังสือ The Phoenix project อีกที
ในหนังสือพูดถึง Launch guidance ซึ่งเป็นเหมือน checklist ที่ควรมีเพื่อให้เวอร์ชั่นใหม่ของซอฟต์แวร์ถูก deploy อย่าราบรื่น หลาย ๆ องค์กรเรียกสิ่งนี้ว่า deployment checklist
บ่อยครั้ง ๆ deployment checklist ที่ผมเห็นจะให้ความสำคัญกับการผ่านคืน deploy ไปอย่างราบรื่น แต่ไม่ค่อยครอบคลุมถึงสถานการณ์หลังจากวันนั้น เป็นสาเหตุให้ผมประทับใจกับ Launch guidance ที่เห็นหนังสือและอยากจะเอามาแบ่งปันกับทุกคน ในหนังสือแนะนำว่า Launch guidance มักจะครอบคลุมหัวข้อดังต่อไปนี้เป็นอย่างน้อย
จำนวน defect และความรุนแรงของมัน
เพื่อให้มั่นใจว่าแอพพลิเคชันทำงานได้ตามที่ถูกออกแบบมา
จำนวนครั้งและความถี่ของ alert / alarm
เพื่อดูว่าแอพพลิเคชันมีส่ง alert ที่เราไม่สามารถ take action อะไรได้บ้างไหม สถานการณ์ในฝันคือเราอยากให้แอพพลิเคชันเตือนเราสักครั้งก่อนที่จะมีผู้ใช้งานสักคนรู้สึกถึงความผิดปรกติ มากกว่าโดนถล่มด้วย alert และ alarm ต่าง ๆ ที่คอยขัดจังหวะเราตอนแก้ปัญหาขณะที่ระบบเราล่มไปแล้ว
ความครอบคลุมของ Monitoring
เรามี monitoring เพียงพอที่จะทำให้เรารู้ว่าจะเอาระบบกลับมายังไงถ้าทีอะไรผิดปรกติเกิดขึ้นหรือยัง
โครงสร้างระบบ
Service ต่าง ๆ มันผูกกันหลวม ๆ เพียงพอที่จะรองรับการเปลี่ยนแปลงและการ deploy ถี่ ๆ บน production หรือยัง นี่น่าจะเป็นเหตุผลหนึ่งที่หลาย ๆ องค์กรให้ความสนใจกับ microservices architecture ทุกวันนี้
กระบวนการ deploy
เรามีกระบวนการอัตโนมัติที่คาดหวังผลลัพธ์ได้ในการ deploy โค้ดไปบน production ไหม
ความสะอาดของ Production Environment
มีหลักฐานของพฤติกรรมดี ๆ การจัดการกับ production (เช่น GitOps) ที่จะสนับสนุนให้เรา share ownership ในการจัดการ production environment ได้ไหม
สรุป
จากเรื่องราวในหนังสือ บริบทที่เค้าไม่แบ่งแยก Dev กับ Ops แล้ว หน้าที่ในการส่งมอบซอฟต์แวร์ให้ถึงมือ users เป็นความรับผิดชอบร่วมกันของทุกคน ในบริบทนี้ทั้ง developers และ product manager ก็ผลัดกันถือ pager (สมัยนี้คงเป็นโทรศัพท์ที่ระบบจะส่ง alert/ alarm มาเมื่อมีปัญหา) เพื่อให้ทุกคนได้ช่วยกันได้ feedback จากการตัดสินใจของตนบน production environment
developer จะได้ feedback จากวิธีแก้ปัญหาที่ตัวเองเลือก ขณะที่ product manager จะได้ feedback ของการจัดเรียงปัญหาที่ตัวเองเลือกให้ทีมแก้