การ deploy มันคืออะไร ?
มันคือการพูดถึงขั้นตอนการของนำ code แต่ละบรรทัด
ย้ายไปยัง server ต่าง ๆ หรือไม่ ?
นั่นหมายความว่า
เรากำลังแก้ไขปัญหาบางอย่าง
เรากำลังทำงานที่น่าเบื่อซำแล้วซ้ำอีก
ไม่ว่าจะใช้เครื่องมือใด ๆ ก็ตาม
แต่เรากลับพบว่า เครื่องมือใด ๆ ก็ไม่ใช่ปัญหา
แล้วปัญหามันเกิดขึ้นมาได้อย่างไรล่ะ ?
สิ่งที่น่าสนใจสำหรับการ deploy software
เราพบว่าไม่ว่าจะใช้เครื่องมือที่ดีเพียงใด
ก็ยังพบว่า การ deploy มักจะเกิดความผิดพลาดเสมอ
จึงเกิดคำถามตามมามากมาย เช่น
- ทำไมเกิดข้อผิดพลาด ?
- ทำไมเรา deploy ระบบที่มี bug เพียบขึ้นไปล่ะ ?
- ทำไมระบบมี downtime ด้วยล่ะ ?
- สิ่งที่ deploy ขึ้นไปมันไม่น่าจะผิดพลาดนะ !!
- ไม่ทดสอบระบบกันหรือไง ?
หรือว่าปัญหาจริง ๆ มันอยู่ที่ขั้นตอนการทำงานที่กำหนดกันขึ้นมาเอง
หรือว่าปัญหาจริง ๆ มันอยู่ที่คน
ลองกลับไปดูที่ทีม และ องค์กรของเราสิว่า มีขั้นตอนการ deploy software อย่างไร ?
ทำการ deploy แบบใหม่ ๆ หรือ Big Bang หรือไม่ ?
ทำการ deploy แบบเล็ก ๆ บ่อย ๆ หรือไม่ ?
การ deploy แต่ละครั้งส่งผลกระทบมากหรือน้อย ?
การ deploy มีปัญหาอะไรบ้าง ?
ลองตั้งคำถามสิว่า
- เราต้องการ release manager หรือไม่ ?
- เราต้องการการ deploy แบบพิเศษหรือด่วน ๆ ในทุก ๆ วันหรือไม่ ?
- เราต้องอยู่เฝ้าในทุก ๆ การ deploy หรือไม่ ?
หรือ
เราต้องการเพียงขั้นตอนการ deploy ที่ดี
เราต้องการเพียงขั้นตอนการ deploy ที่มันมีคุณภาพ
เราต้องการเพียงขั้นตอนการ deploy ที่รวดเร็ว
เราต้องการการทำงานร่วมกันที่ดีของคนที่เกี่ยวข้อง
ในบทความต่อ ๆ ไปจะอธิบายถึงเรื่อง
- การเริ่มต้นที่ดี
- การจัดการเรื่อง branch
- การควบคุม
- การ monitoring