จากบทความเรื่อง 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 ของเรามีประสิทธิภาพและน่าเชื่อถือขึ้น