จากบทความเรื่อง 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 ไป ต่างฝ่ายต่างมีเป้าหมายที่ต่างกัน ดังนั้นเมื่อนำคนเหล่านี้มาทำงานร่วมกัน ก็ยิ่งทำให้เกิดข้อขัดแย้งกันมากมาย ยิ่งเร่งก็ยิ่งช้าดังนั้นทำอย่างไรจึงจะลดปัญหาเหล่านี้ลงไปได้ ?