การพัฒนา software ในปัจจุบัน
สิ่งที่สำคัญมาก ๆ คือ
- Fast คือความเร็วของการเปลี่ยนจากความต้องการไปเป็นสิ่งที่อยู่ในมือลูกค้า
- Innovation product มันคือการเรียนรู้
- Low cost of change คือค่าใช้จ่ายในการเปลี่ยนแปลงที่ต่ำ
หรือลองคิดสิว่า
ถ้าเราใช้เวลาเป็นเดือน เป็นปี กว่านะส่งมอบ software สักอย่างให้ถึงมือผู้ใช้งานแล้ว คุณจะกลัวมากเท่าไหม คุณจะเรียนรู้อะไรมากขึ้นไหม คุณต้องใช้ค่าใช้จ่ายเท่าไร ถ้าอดทนได้ ก็อดทนรอต่อไปเราจะเห็นว่าหลาย ๆ องค์กร หลาย ๆ ทีม
เริ่มนำเอาแนวคิด DevOps เข้ามาใช้มากขึ้น ทำให้ทีมพัฒนากับ operation ใกล้ชิดกันมากขึ้น ทำงานด้วยกันมากขึ้น ส่งผลให้ความเร็วมากขึ้น เช่นปัญหาต่าง ๆ ส่งมอบงานได้เร็วขึ้น ส่งมอบงานมีคุณภาพมากขึ้นดังนั้น DevOps มันว่าด้วยเรื่องการปรับปรุงคุณภาพและความเร็วในการพัฒนา software นั่นเอง รีบแต่ไม่เร่งนะ
แต่ปัญหามันก็ยังมีอยู่อีก (เยอะ)
ตัวหลัก ๆ คือ DevOps ยังเน้นในส่วนของการพัฒนาเท่านั้น ซึ่งหลายสิ่งอย่างมักจะขัดแย้งกับฝ่าย Business เสมอ (โยนปัญหากันไปมา) ยกตัวอย่างเช่น KPI (Killer Performance Indicator) !!ฝ่าย Business ก็บ่นว่าทำไมช้าจัง ไม่เสร็จสักที มี bug อีกแล้ว ฝ่าย Developmeny ก็บ่นว่าทำไม requirement เปลี่ยนบ่อยจัง ไม่ clear เลย เวลาบีบมาก ๆ
มาดูตัวอย่างของปัญหากัน
Business ต้องการได้เร็ว ๆ ทีมพัฒนามีทั้งเรื่องพัฒนาให้เสร็จเร็ว ๆ เรื่องความปลอดภัย เรื่อง performance การทำงาน ถ้าทีมพัฒนาเลือกตาม Business ต้องการคือ ความเร็ว แล้ว ผลที่ตามมามันคือ หายนะล้วน ๆ ได้เร็ว แต่ bug เพียบ ได้เร็ว แต่มีช่องโหว่ในการโจมตีเพียบ ได้เร็ว แต่ performance ห่วย ได้เร็ว แต่ support ห่วย คำถามคือ มันส่งผลดีต่อ Business หรือไม่ ?ดังนั้นสิ่งเหล่านี้มันคือ ปัญหา หรือ ความท้าทายนั่นเอง
จะทำอย่างไรให้ฝ่าย Bussiness และฝ่ายพัฒนาไปในทิศทางเดียวกัน ? ต้องให้แต่ละฝ่ายมีความสมดุลกัน นั่นคือ Business ต้องสนใจใส่ใจ Technology นั่นคือ Development ต้องสนใจใส่ใจ Business ทั้งสองส่วนมีเป้าหมายร่วมกัน ลดการ rework ลง ร่วมกันจัดเรียงความสำคัญของงานทั้ง Business requirement และ Technical requirement ถ้าสำเร็จก็สำเร็จร่วมกัน ถ้าผิดก็ผิดร่วมกัน เมื่อนำมารวมกันจึงเรียกว่า BizDevOpsBizDevOps Lifecycle
แสดงให้เห็น workflow การพัฒนา software ตั้งแต่ business strategy, requirement, develop, test, deploy ไปจนถึงการ maintenance แน่นอนว่าต้องมีเป้าหมายร่วมกันหรืออย่างเดียวกัน สิ่งที่สำคํญมาก ๆ คือ ในแต่ละรอบนั้นมันเร็วเพียงใด แนวคิดนี้เอื้อให้เกิดขั้นตอนการทำงานแบบอัตโนมัติ ผลที่ตามมาคือ ความเร็วและประสิทธิภาพของระบบงานน นั่นคือองค์กรหรือทีมของคุณนั่นเอง แสดงดังรูปสุดท้ายแล้ว Collaboration, Communication และ Trust คือหัวใจที่สำคัญครับมาเขียน code กัน