maxresdefault
การ 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