ในปัจจุบันคำว่า DevOps (Development + Operation) นั้น
ถูกพูด และ นำไปใช้งานกันอย่างมากมายสำหรับการพัฒนา software
เพื่อทำให้การพัฒนา software เป็นไปอย่างรวดเร็ว และมีคุณภาพ
ให้ตามความต้องการของผู้ใช้งานที่เปลี่ยนแปลงรวดเร็วอย่างมาก
เป็นสาเหตุว่าทำไม
ต้องมีระบบ Continuous Integration เช่น Jenkins, Bamboo เป็นต้น
ต้องมีเครื่องมือพวก Infrastructure as Code เช่น Puppet และ Chef เป็นต้น
ต้องมีเครื่องมือเกี่ยวกับ Release Automation
หมายความว่า
การพัฒนา software กำลังหาแนวทางและกระบวนการใหม่ ๆ
เพื่อให้สนองตอบความต้องการของทาง business และ ลูกค้า
ให้ได้ดี และ รวดเร็วที่สุด (Quality and Fast)
แต่ปัญหาในการพัฒนา software นั้น ไม่ใช่มีเพียงทีม Development และ Operation เท่านั้น !!
ยังมีปัญหากับทีม Testing/QA อีกด้วย แน่นอนว่ามันจึงเกิด 3 กลุ่มที่แยกออกจากกัน ส่งผลให้เกิดปัญหามากมายตามมา แต่จะขาดส่วนใดส่วนหนึ่งไม่ได้เลย แสดงดังรูปในความเป็นจริงแล้ว เรามักจะขาดเรื่องของ Quality กันไป
ถึงแม้จะนำแนวคิด DevOps มาประยุกต์ใช้เแล้วก็ตาม บ่อยครั้งจะพบว่า กระบวนการทดสอบจะอยู่ในช่วงท้ายของการพัฒนา ซึ่งเป็นสิ่งที่ไม่ถูกต้อง และทำการทดสอบแบบ manual เสียส่วนใหญ่อีก !! ดังนั้น เราควรปรับปลี่ยนกระบวนการพัฒนา ด้วยการนำการทดสอบไปไว้ในทุก ๆ ส่วนของการพัฒนา หรือใช้แนวคิด Test-First มาใช้ นั่นคือ คิดก่อนสิว่า จะทดสอบแต่ละส่วน แต่ละ feature กันอย่างไร ก่อนที่จะเริ่มพัฒนา จากนั้นจึงหาเครื่องมือมาช่วย ที่สำคัญการทดสอบควรจะทำงานแบบอัตโนมัติให้ได้มากที่สุดเท่าที่จะเป็นไปได้ ปล. การทดสอบไม่ใช่เพียงแค่ทดสอบในระดับ code เท่านั้น ควรทำการทดสอบในระดับ requirement ควรทำการทดสอบในระดับ infrastructure ควรทำการทดสอบในระดับ system หรือ end-to-end ควรทำการทดสอบ performance ของระบบโดยรวมบางครั้งเราอาจจะต้องเปลี่ยนจากคำว่า DevOps ไปเป็น DevTestOps ก็เป็นได้ เรื่องคุณภาพในการพัฒนา software นั้น มันต่อรองไม่ได้นะครับสำหรับ Developer ความสามารถทั้งสามก็เป็นสิ่งที่ขาดไม่ได้เช่นเดียวกัน !!