เมื่อมีการพูดถึงคำว่า 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 นะ เพื่อทำให้คุณ คุณ คุณ ทำความเข้าใจกับขั้นตอนการทำงาน และความต้องการของฝ่ายต่าง ๆ ในองค์กร เพื่อให้ได้ขั้นตอนการทำงานที่เหมาะสม ที่ช่วยลดปัญหาต่าง ๆ ลงไป ที่ช่วยลดความเจ็บปวดต่าง ๆ ลงไป จากนั้นจึงเริ่มมองหาวิธี และ เครื่องมือมาใช้งานต่อไปในองค์กรใหญ่ ๆ นั้น แน่นอนว่าต้องมีคนประสานงาน
เพื่อให้ทุกฝ่ายทำงานไปในทิศทางเดียวกัน ถามว่า งานเยอะไหม ? ตอบว่าเยอะมาก ถามว่า ปัญหาเยอะไหม ? ตอบว่าเยอะมาก แต่ถามว่ายากไหม ? ตอบว่ายาก นั่นแสดงว่าทำได้นะสิ !! ต้องค่อย ๆ แก้ไขปัญหาไปเรื่อย ๆ อย่าหยุดยั้ง แสดงดังรูปแต่ถ้าเริ่มต้นที่เครื่องมือแล้ว คุณจะสนใจ solution เพียงอย่างเดียว โดยไม่สนใจขั้นตอนการทำงานเลย นั่นคือ หลุมพลางหนึ่งที่คนส่วนใหญ่ตกลงไป
สุดท้ายขอสรุปแนวทางที่ดีสำหรับการเริ่ม CI และ CD ไว้ดังนี้
- ให้เริ่มที่คนและขั้นตอนการทำงาน ก่อนเครื่องมือเสมอ
- ให้เข้าใจปัญหา และ ความต้องการของแต่ละทีมก่อนเสมอ
- สร้างขั้นตอนการทำงานเดียวเท่านั้น โดยรวมเอาความต้องการต่าง ๆ ของแต่ละทีม (พร้อมที่จะเปลี่ยนแปลงเสมอเสมอ)
- จากนั้นจึงเริ่มนำเอาเครื่องมือมาใช้งาน
- ต้องมีคนที่คอยจัดการตั้งแต่ข้อ 1-4 เสมอ