สิ่งที่น่าสนใจในการพัฒนา software คือ
เราทำการเตรียม environment ต่าง ๆ เช่น
ทั้ง Dev, Test/QA, UAT, Staging, Pre-Prod และ Prod กันตอนไหน ?
ที่สำคัญคือ แต่ละ environment นั้นเหมือนหรือต่างกัน ?
ซึ่งสิ่งต่าง ๆ เหล่านี้มันสะท้อนความสัมพันธ์ระหว่าง
Development team และ Pre/Production team ว่าเป็นอย่างไร ?
ผลที่เกิดขึ้นมาคือ feedback loop ที่จะได้รับ รวมทั้งการตอบรับจากการเปลี่ยนแปลง จากทั้ง business และ technical อีกด้วย
ไปอ่านบทความเรื่อง Environment Creation Times in Modern Teams มา
น่าสนใจดีเลยเอามาสรุปสั้น ๆ ไว้นิดหน่อย เริ่มด้วยรูปนี้ การทำงานของชาว Enterprise โดยอธิบายจากรูปนี้ได้ว่า นั่นคือจาก business idea ไปสู่การ deploy ระบบบน production environment จะต้องกำหนดแผนใหญ่ไปยังแผนย่อย ๆ ขนาดเล็ก ๆ สิ่งที่น่าสนใจคือ เราจะทำการสร้าง environment เพียงครั้งเดียว !! แต่สิ่งที่เกิดขึ้น หรือ ปัญหาตลอดคือ- ใช้เวลานานเท่าไรในการเตรียม environment ต่าง ๆ ?
- เรา shared environment ต่าง ๆ กันอีก ?
- environment ต่าง ๆ ดันไม่เหมือนกับ production environment อีก ?
- เปิด request ขอเครื่อง 1 สัปดาห์ เราก็ได้แต่เครื่องเปล่า ๆ
- เปิด request ขอ OS 1 สัปดาห์ เราก็จะได้ OS เปล่า ๆ
- เปิดขอ user/password 1 สัปดาห์ เราก็จะได้ user/password มา
- เปิดขอ firewall ไปยังระบบต่าง ๆ 1 สัปดาห์ เราก็จะได้การ access ไปยังที่เราต้องการ
ดังนั้นสิ่งที่ควรทำคือ มองให้เห็นว่า สิ่งต่าง ๆ เหล่านี้คือปัญหา ไม่ใช่ข้อจำกัดของระบบ เพื่อเริ่มทำการการปรับปรุงให้ดีขึ้น
เมื่อมองดูทีมดีนั้น
จะทำการสร้าง environment ใหม่ ๆ สำหรับผ่านระบบ Continuous Integration ทุก ๆ ครั้งที่ code หรือ configuration มีการเปลี่ยนแปลง โดยจะสร้างระบบที่ไม่ใหญ่มาก ๆ แต่ว่าเหมือนหรือใกล้เคียง production environemnt มาก ๆ ทั้ง version ของ software ทั้ง configuration ของระบบ ทั้งระบบ network เพื่อให้สามารถ build -> test -> deploy ได้ตลอดเวลา จากนั้นก็จะทำการลบ environment นี้ทิ้งไปดังนั้นเวลาในการสร้าง หรือ provisioning environment ต่าง ๆ ช้าเกินนาทีหรือหลายนาที มันก็ไม่น่าจะดีใช่ไหม เพราะว่า เรารู้ปัญหาได้ช้าดังนั้นสิ่งทีมพัฒนาควรตั้งเป้าหมายร่วมกันคือ เราจะทำอย่างไรเพื่อให้สามารถสร้าง environment ต่าง ๆ ได้อย่างรวดเร็ว ? สามารถสร้างซ้ำแล้วซ้ำอีกได้อย่างไม่กลัว ? จากนั้นจึงมาหาวิธีการและเครื่องมือเข้ามาช่วย เพื่อให้ถึงหรือใกล้เคียงเป้าหมายต่อไป
ปล. บางคนอาจจะบอกว่า แค่ได้เครื่องมาก็บุญแล้ว ประเด็นคือ ทาง business รู้ไหมว่า ทีมพัฒนามีปัญหาแบบนี้ ??