จากบทความเรื่อง Why DevOps Efforts Fail ?
เป็นเรื่องเกี่ยวกับปัญหาเมื่อนำเอา DevOps มาประยุกต์ใช้
จึงนำมาแปลและสรุปไว้นิดหน่อย

เป้าหมายของ DevOps นั้นเรียบง่ายมาก ๆ คือ
ส่งมอบ software ให้ราบรื่น
ส่งมอบ software ให้รวดเร็ว
ส่งมอบ software ที่มีความน่าเชื่อถือ
ส่งมอบ software ที่มีคุณภาพ

โดยที่องค์กรได้นำเอาแนวคิดนี้ไปประยุกต์ใช้งาน
ซึ่งมักจะมีกรอบแนวคิดตาม CALMS (Culture, Automation, Lean, Measurement และ Sharing)


ปัญหาที่ตามมาจากการประยุกต์
จะแบ่งออกเป็น 3 เรื่องใหญ่ ๆ

  • มีเครื่องมือเยอะมาก ๆ ไม่รู้จะนำมาใช้ รวมทั้งปัญหาเรื่องการเรียนรู้
  • ส่วนใหญ่ยังทดสอบระบบแบบ manual อยู่ ซึ่งทำให้การส่งมอบช้า
  • ระบบงานยังคงประกอบไปด้วยระบบใหม่และระบบเก่า ซึ่งทำให้มีความซับซ้อนสูง
  • ปัญหาเรื่องโครงสร้างขององค์กรที่ยังเป็นกลุ่มใครกลุ่มมัน ส่งผลให้การทำงานร่วมกันไม่ค่อยดี
  • มีปัญหาเรื่องของการเข้าถึง infrastructure ซึ่งมีความยุ่งยากมากมาย
  • ไม่ได้รับการสนับสนุนเท่าที่ควรจากฝ่ายบริหารจัดการ

มาดูรายละเอียดของปัญหากันหน่อยสิ

เครื่องมือมันจะเยอะไปไหน !!

ต้องยอมรับว่าเครื่องมือในโลกของ DevOps หรือ DevOps tool มันเยอะมาก ๆ
เพื่อช่วยทำให้การทำงานแบบอัตโนมัติได้ง่ายขึ้น
ทั้ง Source Control
ทั้ง Continuous Integration
ทั้ง Continuous Infrastructure/Provisioning
ทั้ง Continuous Deployment
ทั้ง Continuous Monitoring
ทั้ง Configuration Management
ทั้ง Release Management
ปัญหาที่พบเจอคือ จะนำเครื่องมือเหล่านี้มาใช้ร่วมกันอย่างไร ?
แสดงดังรูป

ขาดเรื่องของ Test Automation

อีกปัญหาที่มักเจอกับองค์กรและทีมคือ ติดปัญหาเรื่องการทดสอบแบบอันตโนมัติ
ซึ่งทำให้ยากลำบากต่อการทดสอบการทำงานของระบบทุกครั้งเมื่อมีการเปลี่ยนแปลง
ส่งผลต่อการทำ Continuous Integration และ Continuous Delivery อย่างมาก
บางทีมแก้ไขปัญหาด้วยการทดสอบแบบเป็นช่วงเวลาที่กำหนด
แต่ก็ทำให้พบปัญหาได้ช้า ซึ่งส่งผลให้เสียเวลาและค่าใช้จ่ายในการแก้ไขสูง

ดังนั้นในแนวคิด DevOps นั้นเรื่องของการทดสอบแบบอัตโนมัติ
จึงมีความสำคัญในลำดับต้น ๆ ของขั้นตอนการพัฒนาเลย

ปัญหาในการจัดเตรียม environment และ infrastructure

เนื่องจาก environment มีความหลายหลายมาก ๆ
ทั้ง physical server
ทั้ง cloud มีทั้ง private, public และ hybrid cloud
ทั้งโลกของ container และ virtual machine
ซึ่งมีเทคโนโลยีที่หลากหลาย

ยิ่งเมื่อกลับมาดูระบบงานที่มีความหลากหลายและซับซ้อน
ทำให้ยากลำบากต่อการจัดเตรียม environment ต่าง ๆ
ทั้ง Development, Test, UAT และ Production

อีกเรื่องคือ เรื่องของคนและ culture มันสำคัญมาก ๆ

ที่แต่ละฝ่ายต่างทำงานของใครของมัน
Dev ก็พัฒนาไป
QA ก็ทดสอบไป
IT Operation ของ deploy และ operate ไป
ต่างฝ่ายต่างมีเป้าหมายที่ต่างกัน
ดังนั้นเมื่อนำคนเหล่านี้มาทำงานร่วมกัน
ก็ยิ่งทำให้เกิดข้อขัดแย้งกันมากมาย
ยิ่งเร่งก็ยิ่งช้า

ดังนั้นทำอย่างไรจึงจะลดปัญหาเหล่านี้ลงไปได้ ?

Tags: