จากบทความเรื่อง 6 strategic ways to level up your CI/CD pipeline ที่เขียนใน blog ของ GitHub นั้น ทำการแนะนำ 6 แนวทางในการปรับปรุง CI/CD ให้ดีขึ้น ประกอบไปด้วยสิ่งต่าง ๆ ดังนี้
เรื่องที่ 1 เพิ่ม performance, device compatibility และ accessibility testing เข้าไปด้วย
ปัญหาที่มักเจอบ่อยมาก ๆ ใน CI/CD pipeline คือ เรื่องของการทดสอบ ทั้งขาดการทดสอบที่ดี หรือ ไม่มีเลยก็เพียบ ดังนั้นถ้าเพิ่มการทดสอบต่าง ๆ เข้ามา น่าจะช่วยเรื่องความมั่นใจต่อ product ได้ รวมทั้งยังช่วยให้เจอปัญหาได้รวดเร็วอีกด้วย แต่สิ่งที่ต้องคิดคือ ความเร็วของการทดสอบ ต้องไม่ช้าด้วย นั่นคือ เรื่องของเครื่องมือก็จำเป็นมากเช่นกัน
จากบทความแนะนำเครื่องมือต่าง ๆ ดังนี้
เรื่องที่ 2 เพิ่ม security testing เพิ่มเข้ามา ระหว่างการพัฒนา
ปัญหาอย่างหนึ่งของการทำ security testing คือ มักจะทำเพียงช่วงแรก และ ช่วงท้ายของการพัฒนาหรือส่งมอบ product เท่านั้น ก็ให้เกิดปัญหาตามมา เช่น ความล่าช้าในการส่งมอบ ดังนั้น เราควรที่จะเพิ่ม security testing ในระหว่างการพัฒนาไปด้วย เป็นเรื่องของ continuous testing นั่นเอง เพื่อช่วยให้เราตรวจสอบปัญหาด้าน security ได้บ่อย ๆ ถึงแม้จะไม่ครบ แต่ก็ช่วยลดลงไปในตอนท้าย
ซึ่งในปัจจุบันก็มีเครื่องมือออกมาให้ใช้มากมาย ยกตัวอย่างเช่น GitHub ก็มีพวก depndabot, code scan, และ secret scan ให้ใช้แบบง่าย ๆ
ดังนั้นการหาปัญหาตั้งแต่เนิ่น ๆ น่าจะเป็นประโยชน์มากขึ้น โดยจะเห็นได้จากแนวคิด DevSecOps นั่นเอง รวมทั้งยังช่วยให้มีการทำงานเป็นทีมมากยิ่งขึ้น ไม่ใช่โยนงานกันไปมา ปวดหัวเปล่า ๆ
เรื่องที่ 3 เพิ่มขั้นตอนของการ testing เข้ามา
การทดสอบที่ดีคือ ต้องทำได้บ่อย ๆ รวดเร็ว และน่าเชื่อถือ ในมุมมองทั้ง developer, tester/QA, business, deployment ดังนั้นควรว่า strategy ของการ testing ด้วยเสมอ เพราะว่ามันสำคัญมาก ๆ ต้องเปลี่ยนจาก should have เป็น MUST have เลย
เนื่องจากการ testing ต้องมีการวางแผนมากมาย ทั้ง test level strategy ว่าต้องมีอะไร อย่างไร ทั้ง test environment ทั้ง test data management ทั้งการเปิดปิด feature เพื่อทดสอบใน feature ที่ต้องการ จะช่วยให้การทำ regression test ง่ายขึ้น และ บ่อยขึ้นด้วย
เรื่องที่ 4 ในการ deploy ควรลงทุนกับ Blue Green deployment
จะช่วยให้เราสามารถ deploy ระบบงาน version ใหม่ได้อย่างปลอดภัยมากขึ้น รวมทั้งลด downtime หรือ ปัญหาที่อาจจะเกิดขึ้น ทำให้เราสามารถ rollout และ rollback ได้อย่างมั่นใจ แต่เราจำเป็นต้องลงทุนเสมอ รวมทั้งต้องมองในเรื่องของความคุ้มค่าต่อ business ด้วย
เรื่องที่ 5 ให้นำแนวคิด Infrastructure as Code (IaC) เข้ามาใช้ด้วย
IaC คือเครื่องมือในการ provisioning infrastructure ด้วยการเขียน code นั่นเอง ช่วยให้เรา provisioning ได้ง่าย ควบคุมด้วย code ทำให้สามารถทดสอบได้ และ repeat หรือทำงานแบบอัตโนมัติได้
ดังนั้นถ้าใน pipeline ของเรา มีการ provisioning ทุกครั้ง ก็จะช่วยทำให้เห็นปัญหาของการ provisioning ได้อีกด้วย จะได้แก้ไขได้อย่างทันท่วงทีนั่นเอง
รวมทั้งยังสามารถเขียน code เพื่อการ deploy แบบ Blue Grren deployment ได้อีกด้วย
เรื่องที่ 6 อย่าลืมสร้าง checkpoint สำหรับการ rollback แบบอัตโนมัติด้วย
ในการ deploy ระบบงาน อาจจะเกิดปัญหาขึ้นมาได้เสมอ ดังนั้น ควรปลอดภัยไว้ก่อน ถึงแม้จะมีการ deploy แบบ Blue Green ก็ตาม สิ่งที่ควรทำคือ จุด checkpoint ของการ deploy เพื่อให้เราสามารถ rollback ไปยังจุดนั้น เมื่อเกิดปัญหาได้ ซึ่งเป็น metric อย่างหนึ่งขององค์กรที่นำแนวคิดเหล่านี้มาใช้ deploy บ่อยตามที่ต้องการมันยังไม่พอ ต้องแก้ปัญหาได้รวดเร็วด้วยเช่นกัน
น่าลองเอาไปปรับใช้งานกันนะครับ น่าจะช่วยทำให้ CI/CD pipeline ของเรามีประสิทธิภาพและน่าเชื่อถือขึ้น