wrong
เมื่อมีการพูดถึงคำว่า Continuous Integration (CI) และ Continuous Delivery (CD) แล้ว
คนส่วนใหญ่มักจะคิดถึง หรือ พูดถึงเครื่องมือต่าง ๆ ก่อน
ไม่ว่าจะเป็น Jenkins บ้างล่ะ
ไม่ว่าจะเป็น Bamboo บ้างล่ะ
ไม่ว่าจะเป็น Travis CI บ้างล่ะ
ไม่ว่าจะเป็น Circle CI บ้างล่ะ
ไม่ว่าจะเป็น Docker บ้างล่ะ
ไม่ว่าจะเป็น Ansible บ้างล่ะ

ซึ่งเครื่องมือเหล่านี้มันเป็นเพียงตัวช่วยทำให้ความต้องการเราสำเร็จเท่านั้น
แต่ก่อนอื่นต้องเข้าใจตัวเองก่อนว่า

  • ปัญหาคืออะไร ?
  • แต่ละคน แต่ละทีมต้องการอะไร ?
  • ขั้นตอนการทำงานเป็นอย่างไร ?
  • คนพร้อมไหม ?
  • องค์กรพร้อมไหม ?

บ่อยครั้งในการพูดคุยเรื่อง CI และ CD

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

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

ในการเริ่มต้นต้องกลับไปมองที่คน และ โครงสร้างของทีมก่อนว่าเป็นอย่างไร ?
มีปัญหาอะไรบ้าง ?
ต้องการแก้ไข และ ปรับปรุงอะไรบ้าง ?

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

หนักไปกว่านั้นต่างฝ่ายก็ตั้งแง่ตั้งโล่ห์ใส่กัน
กลายเป็นการทำงานแบบ Silo หรือของใครของมันหนักกว่าเดิมอีก !!
แทนที่จะช่วยแก้ไขปัญหา กลับมาสร้างปัญหา

ดังนั้นสิ่งที่ต้องรู้ และ เข้าใจก่อนคือ

Continuous Integration Process
Continuous Delivery Process
จะเห็นว่าคำว่า process หรือ ขั้นตอนการทำงาน
มันจะตามหลัง CI และ CD นะ

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

ในองค์กรใหญ่ ๆ นั้น แน่นอนว่าต้องมีคนประสานงาน

เพื่อให้ทุกฝ่ายทำงานไปในทิศทางเดียวกัน
ถามว่า งานเยอะไหม ?
ตอบว่าเยอะมาก

ถามว่า ปัญหาเยอะไหม ?
ตอบว่าเยอะมาก

แต่ถามว่ายากไหม ?
ตอบว่ายาก นั่นแสดงว่าทำได้นะสิ !!
ต้องค่อย ๆ แก้ไขปัญหาไปเรื่อย ๆ อย่าหยุดยั้ง

แสดงดังรูป

roee2

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

สุดท้ายขอสรุปแนวทางที่ดีสำหรับการเริ่ม CI และ CD ไว้ดังนี้

  1. ให้เริ่มที่คนและขั้นตอนการทำงาน ก่อนเครื่องมือเสมอ
  2. ให้เข้าใจปัญหา และ ความต้องการของแต่ละทีมก่อนเสมอ
  3. สร้างขั้นตอนการทำงานเดียวเท่านั้น โดยรวมเอาความต้องการต่าง ๆ ของแต่ละทีม (พร้อมที่จะเปลี่ยนแปลงเสมอเสมอ)
  4. จากนั้นจึงเริ่มนำเอาเครื่องมือมาใช้งาน
  5. ต้องมีคนที่คอยจัดการตั้งแต่ข้อ 1-4 เสมอ

ดังนั้นมาเริ่มสร้าง CI และ CD process ที่ช่วยแก้ปัญหากันดีกว่าสร้างปัญหานะครับ !!

Reference Website
https://dzone.com/articles/why-most-companies-are-getting-continuous-delivery
http://sdtimes.com/software-testing-is-all-about-automation/
http://devjam.com/2015/05/08/from-ci-to-cd-misunderstandings-of-devops-and-continuous-delivery/