opbeat_illustration
แนวคิด Continuous Delivery นั้นช่วยเหลือทุก ๆ คน
ส่งผลดีทั้งฝ่าย business
ส่งผลดีทั้งฝ่าย development
ส่งผลดีต่อองค์กร

โดยแนวคิดหลักของ Continuous Delivery คือ

ทำการเปลี่ยนแปลง แก้ไข เล็ก ๆ บ่อย ๆ
จากนั้นทำการทดสอบในทุกระดับ
เพื่อลดความเสี่ยงจากการ deploy code ใหม่ ๆ

ดังนั้น ถ้ามองในมุมของ business แล้ว
จะเห็นได้ว่า มันทำให้ทุกคนรู้ได้อย่างทันท่วงทีว่า
product หรือ feature ใหม่ ๆ นั้นมันทำงานได้อย่างถูกต้อง หรือ เกิดข้อผิดพลาด
อีกทั้งยัง เปิดโอกาสให้เราสามารถทำการทดลอง product หรือ feature
ได้บ่อย และ มาก ตามที่เราต้องการ
ซึ่งเป็นวิธีการที่ช่วยทำให้รู้ได้ว่า
สิ่งที่สร้างไปนั้น เป็นสิ่งที่ลูกค้าต้องการหรือไม่ ?

Continuous Delivery จึงเป็นหนึ่งในแนวปฏิบัติของ Agile
นั่นคือ การพัฒนาแบบ increamental

จากแนวคิดของ Continuous Delivery นั้น ดูเหมือนจะดีนะ แต่ !!

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

ทีม development กับ ทีม operation แยกออกจากกัน
แน่นอนว่า ต้องมีกำแพงกั้นระหว่างทีมแน่นอน
เนื่องจาก ทีม development ต้องการเปลี่ยนแปลงอย่างรวดเร็ว
ส่วน ทีม operation นั้นต้องการให้ product หรือ feature มันเสถียร

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

Screen Shot 2558-11-03 at 1.11.21 PM

ตัวอย่างเช่น สิ่งที่ส่งมอบไปให้ทีม operation มันไม่ตรงตามที่อยากได้ เช่น

  • ระบบงาน monitoring ยากมาก
  • ทำการจัดการข้อมูล หรือ สรุปข้อมูลยากมาก ๆ
  • Log message ไม่ช่วยอะไรเลย
  • ไม่ได้ออกแบบระบบมาเพื่อรองรับผู้ใช้งานจำนวนสูง

ดังนั้น สิ่งที่เราต้องการ คือ แนวคิด Continuous Delivery มันต้องอยู่ในทุก ๆ ส่วน

เพื่อทำให้เราสามารถ
สร้าง ทดสอบ deploy
product หรือ feature เล็ก ๆ ได้บ่อยเท่าที่ต้องการ
แน่นอนว่า ต้องมาพร้อมกับคุณภาพเสมอ

แต่บางคนอาจจะบอกว่า
เราต้องสร้างระบบที่ perfect มาก ๆ
ดังนั้น จำเป็นต้องใช้เวลามากนะ !!

เป็นคำพูดที่ดูดี และ สมเหตุสมผลอย่างมาก

แต่ สิ่งที่สำคัญกว่า คือ การสร้างสิ่งที่มีคุณค่าต่อลูกค้า
ก่อนที่จะไปเสียเวลากับสิ่งอื่น ๆ
ดังนั้น การพัฒนาแบบ increamental จึงสำคัญมาก ๆ

ลองคิดดูสิว่า
ถ้าคุณไม่ทำการ release งานบ่อย ๆ
คุณจะรู้ได้อย่างไรว่า สิ่งที่คุณสร้างมานั้นมีคุณค่าต่อลูกค้าจริง ๆ

จากปัญหาระหว่างทีม Development และ Operation !!

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

อีกสิ่งหนึ่งที่สำคัญมาก ๆ ของ Continuous Delivery คือ

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

ทีม development ควรมองว่าทีม operation นั้น คือ ลูกค้า
เป็นหนึ่งในลูกค้าที่จะใช้งาน product หรือ feature ที่สร้างขึ้นมา

จะเห็นได้ว่าสิ่งต่าง ๆ เหล่านี้ มันคือ การเปลี่ยนแปลงวัฒนธรรมขององค์กร !!

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

ดังนั้น Continuous Delivery และ DevOps มันไม่ใช่ tools นะครับ

แต่มันบอกว่าเราเข้าใจลูกค้าเรามากเพียงใด
เพื่อที่จะหาวิธีการมาสร้าง แก้ไข
ให้ตรงตามความต้องการ
ส่วน tools มันคือ ตัวช่วยเหลือเท่านั้นเอง

ปิดท้ายด้วยข้อมูลจาก ThoughtWorks Technology Radar สรุปไว้ว่า

การแยก หรือ สร้างทีม DevOps ขึ้นมาในองค์กร
เป็นสิ่งที่ควรระวัง และ ควรหลีกเลี่ยงอย่างมาก (Proceed with caution)
แนะนำให้นำคนที่มีความสามารถด้าน operation มาอยู่ในทีม development ไปเลย
เพื่อลดข้อขัดแย้งต่าง ๆ
รวมทั้งยังทำให้ผลลัพธ์ที่ออกมาดีขึ้นกว่าเดิมอีกด้วย