Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

เราควรสร้าง Environment ต่าง ๆ ของระบบงานตอนไหนกัน ?

$
0
0

สิ่งที่น่าสนใจในการพัฒนา 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 อีก ?
ไม่มีแผนการสร้าง environment ใหม่อีกเลย หรือ ทำไม่ได้ นั่นคือได้แบบไหนมาก็ใช้ไป ไม่ต้องบ่น ดังนั้นจึงไม่มีการคิดเรื่อง การสร้าง environemnt ใหม่ขึ้นมาตลอด ดังนั้นจึงไม่ต้องคิดวิธีการใหม่ ๆ ว่าจะทำอย่างไรเพื่อให้การเตรียม environment เร็วขึ้น สิ่งที่เกิดขึ้นคือ
  • เปิด request ขอเครื่อง 1 สัปดาห์ เราก็ได้แต่เครื่องเปล่า ๆ
  • เปิด request ขอ OS 1 สัปดาห์ เราก็จะได้ OS เปล่า ๆ
  • เปิดขอ user/password 1 สัปดาห์ เราก็จะได้ user/password มา
  • เปิดขอ firewall ไปยังระบบต่าง ๆ 1 สัปดาห์ เราก็จะได้การ access ไปยังที่เราต้องการ
เปิดขอ x ในเวลา y สัปดาห์ ??? คำถามคือ มันเร็วหรือช้า มันเป็นการทำเพื่อใคร ? เพื่อ business ? เพื่อจะได้ไม่ต้องเปลี่ยนแปลงหรือปรับปรุงอะไร ? ทีมพัฒนาก็มีปัญหากับทีมต่าง ๆ ที่เตรียม environment ให้อีก ? ขั้นตอนการทำงานมันก็เยอะ เทอะทะไปหมด ?
ดังนั้นสิ่งที่ควรทำคือ มองให้เห็นว่า สิ่งต่าง ๆ เหล่านี้คือปัญหา ไม่ใช่ข้อจำกัดของระบบ เพื่อเริ่มทำการการปรับปรุงให้ดีขึ้น

เมื่อมองดูทีมดีนั้น

จะทำการสร้าง environment ใหม่ ๆ สำหรับผ่านระบบ Continuous Integration ทุก ๆ ครั้งที่ code หรือ configuration มีการเปลี่ยนแปลง โดยจะสร้างระบบที่ไม่ใหญ่มาก ๆ แต่ว่าเหมือนหรือใกล้เคียง production environemnt มาก ๆ ทั้ง version ของ software ทั้ง configuration ของระบบ ทั้งระบบ network เพื่อให้สามารถ build -> test -> deploy ได้ตลอดเวลา จากนั้นก็จะทำการลบ environment นี้ทิ้งไป
ดังนั้นเวลาในการสร้าง หรือ provisioning environment ต่าง ๆ ช้าเกินนาทีหรือหลายนาที มันก็ไม่น่าจะดีใช่ไหม เพราะว่า เรารู้ปัญหาได้ช้า
ดังนั้นสิ่งทีมพัฒนาควรตั้งเป้าหมายร่วมกันคือ เราจะทำอย่างไรเพื่อให้สามารถสร้าง environment ต่าง ๆ ได้อย่างรวดเร็ว ? สามารถสร้างซ้ำแล้วซ้ำอีกได้อย่างไม่กลัว ? จากนั้นจึงมาหาวิธีการและเครื่องมือเข้ามาช่วย เพื่อให้ถึงหรือใกล้เคียงเป้าหมายต่อไป
ปล. บางคนอาจจะบอกว่า แค่ได้เครื่องมาก็บุญแล้ว ประเด็นคือ ทาง business รู้ไหมว่า ทีมพัฒนามีปัญหาแบบนี้ ??

Viewing all articles
Browse latest Browse all 1997

Trending Articles