หนึ่งในสิ่งที่น่าสนใจมาก ๆ สำหรับ CI/CD (Continuous Integration and Delivery/Deployment)
คือเรื่องคุณภาพ และ ความเร็ว ที่เป็นหัวใจสำคัญของแนวคิดและแนวปฏิบัตินี้เลย
เป็นสิ่งที่ผิดปกติอย่างมาก (หรือเป็นเรื่องปกติไปแล้วนะ ?)
ปัญหาแปลก ๆ ที่มักเจอใน CI/CD คือ
- ขาดการมีส่วนร่วมของทีมที่เกี่ยวข้องในการออกแบบ pipeline หรือ process
- มีทีมมาออกแบบ pipeline หรือ process การทำงานให้เลย
- ไม่สนใจว่า process เหล่านั้นจะเหมาะสมกับงานหรือไม่ แต่ต้องทำตาม standard process นี้เสมอ
- การทำงานมักเริ่มที่ tool มาต่อที่ process และสั่งให้คนทำตามที่กำหนดหรือสร้างไว้ แบบนี้จะ improve ได้หรือไม่
- คนทำงานให้ feedback ว่า process เหล่านี้ไม่ดีแล้ว แต่คนดูแลก็ไม่ได้สนใจอะไร ให้กลับไปที่คำว่า stadard process !!
- ระบบสามารถทำการ run และ deploy ได้เร็วและบ่อย แต่คุณภาพแย่ เพราะว่า ไม่มีกระบวนการทดสอบ หรือ การทดสอบใด ๆ ยกเว้นแต่ manual test หลังจาก deploy
- CI/CD process ไม่ stable เพราะว่า run ผ่านบ้าง ไม่ผ่านบ้าง บางครั้งช้า ๆ อีก
- มีชุดการทดสอบ แต่ไม่สามารถทดสอบ หรือ run ซ้ำ ๆ ได้ เพราะว่า ขาดการวางแผนเรื่อง initial data และ initial dependency ต่าง ๆ
- ขาดการทำ functional test ที่ดี และ non-functional test ที่ทำบ่อย ๆ
- ชอบเจอ bug เยอะ ๆ ตอน deploy production มากกว่าก่อนการ deploy
- งานหลาย ๆ อย่างสามารถนำมา run ได้ตั้งแต่เครื่องของนักพัฒนา เช่น Lint, static code analysis และ self-test เป็นต้น ไม่ต้องไปรอ run นาน ๆ หรอกนะ
แบบนี้มันก็แปลก ๆ เหมือนกันนะว่า
เป้าหมายคือ fast feedback และ high quality
เพื่อจะได้ปรับปรุงหรือแก้ไข ได้แต่เนิ่น ๆ
แต่พอนำมาใช้กับแนวคิดเดิม ๆ ก็ได้ปัญหาใหม่ ๆ ขึ้นมา แทนที่จะได้ประโยชน์ !!