ปัญหาอย่างหนึ่งที่มักพบเจอกับทีมพัฒนาคือ
เครื่องผมเครื่องหนูมันทำงานได้นะ
แต่บนเครื่องจริง ๆ กลับทำงานไม่ถูกต้องหรือทำงานต่างกันไป
ไม่ว่าจะเหตุผลใดก็ตาม มันก็คือไม่ถูก
ดังนั้นเราจะทำอย่างไรดีละ ?หนึ่งแนวทางคือ ถ้าทำให้เครื่องนักพัฒนา มีขั้นตอนการทำงาน มี environment ต่าง ๆ เหมือนหรือคล้ายกับเครื่องจริง ๆ มันน่าจะดีไม่น้อยนะ
แต่การติดตั้งมันก็ไม่ง่ายนะ
ติดปัญหามากมายทั้ง software ทั้ง CPU/RAM/Network รวมไปถึง configuration ชีวิตดูลำบากน่าดู จะติดตั้งระบบ Contunous Integration ก็แลดูจะนานไปหน่อยดังนั้นมาติดตั้งระบบ Continuous Integration บนเครื่องกันไปเลย แน่นอนว่านำ Docker มาใช้งานด้วย มาดูกันว่าใช้อย่างไร ?
ปัญหาที่ทำให้พบเจอเรื่อง Work on my machine
ประกอบไปด้วย- ในแต่ละ environment แตกต่างกัน
- มีชุดการทดสอบนะ แต่ว่าเราคนจริงต้อง skip หรือบางคนลบทิ้งไป !!
- มีหลาย ๆ ไฟล์ และ folder ที่มีเฉพาะในเครื่องของนักพัฒนา ขึ้นไปที่อื่นจะรอดได้ไง
- ความผิดพลาดที่เกิดจาก code
แต่เมื่อระบบเริ่มใหญ่ขึ้น
code เยอะขึ้น ทีมใหญ่ขึ้น เวลาในการทำงานของระบบ Continuous Integration ก็จะเริ่มช้าลง นั่นคือ เรารู้ปัญหาได้ช้าลง ซึ่งจำเป็นต้องแก้ไขเพื่อให้ทีมและนักพัฒนารู้ได้อย่างรวดเร็ว แน่นอนว่ามีวิธีการมากมาย เช่นการเปลี่ยนขั้นตอนการทำงาน เช่นการเพิ่ม RAM/CPU ให้เยอะและเร็วขึ้นแต่มีอีกวิธีการหนึ่งที่น่าสนใจคือ
ทำ Local Continuous Integration Server บนเครื่องนักพัฒนาแต่ละคนไปเลย เพื่อทำให้นักพัฒนามั่นใจว่า สิ่งที่สร้าง แก้ไข หรือเปลี่ยนแปลงมันผ่านจริง ๆ นะ ก่อนนะทำการ push/checkin code มายังส่วนกลาง โดยการติดตั้งเราจะนำ Docker มาใช้ มันง่ายมากนะ โดยขั้นตอนของนักพัฒนาจะเปลี่ยนไป คือ- เมื่อทำการแก้ไข code บนเครื่องตาม requirement หนึ่ง ๆ แล้ว
- เมื่อมั่นใจ ตรวจสอบสิ่งต่าง ๆ แล้ว ทำการ run Continuous Integration Server ที่เครื่อง
- เพื่อทำการตรวจสอบสิ่งต่าง ๆ ทั้งการ compile, test
- การทำงานต่าง ๆ อยู่ในโลกของ container
- เมื่อทุกอย่างผ่านแล้ว ก็ทำการ commit/push/checkin code ไปยังส่วนกลางต่อไป