PDCA คืออะไร
Plan-Do-Check-Act สำหรับ DevOps
2021-10-18 08:42:09 - @ratanon
อ่านบทความเกี่ยวกับการนำแนวคิด PDCA (Plan-Do-Check-Act) มาใช้กับการจัดการ วางแผนระบบงานในส่วนของ infrastructure หรือ DevOps Using the Plan-Do-Check-Act Framework to Produce Performant and Highly Available Systems เนื่องจากระบบงานนั้น ไม่ใช่สนใจแต่การออก feature ใหม่ ๆ ให้ลูกค้าเท่านั้น แต่ระบบงานต้องน่าเชื่อถือ รวมทั้งมี performance ที่ดีด้วย สรุปได้ดังนี้
Plan เรื่องที่สำคัญมาก ๆ ของการวางแผนคือ NFR (Non-Functional Requirements) ซึ่งส่งผลต่อความน่าเชื่อถือและ performance ของระบบอย่างมาก เพื่อกำหนดเป้าหมายของระบบว่า ต้องเป็นอย่างไร
ยกตัวอย่างเช่น จำนวนผู้ใช้งานพร้อม ๆ กันในกรอบของเวลาที่กำหนด หรือเรื่องของ response time และ error rate เป็นต้น เมื่อได้ค่าต่าง ๆ เหล่านี้แล้ว จะช่วยให้เราสามารถเลือกและออกแบบให้เหมาะสม
- Architecture
- Infrastructure
- Monitoring
- Testing
- CI/CD ของการส่งมอบระบบ
Do เมื่อวางแผนแล้ว สิ่งที่สำคัญมาก ๆ คือ ลงมือทำ เพื่อ validate ว่าสิ่งที่วางแผนและสร้างขึ้นมา มันเป็นไปดังที่หวังหรือไม่ ดังนั้นอย่าวางแผนนานจนเกินไป ให้ลงมือทำให้บ่อยและเร็ว
ยกตัวอย่างเช่น การทำ performance testing จากการทำสิ่งต่าง ๆ เหล่านี้
- การ upgrade พวก software หรือ hardware
- การ migrate environment
- การ migrate database
- การ refactor ระบบ
- การเปลี่ยนแปลงหรือปรับปรุง feature
เพื่อดูว่าระบบทำงานได้ตามที่คาดหวังหรือไม่ รวมทั้งหาขีดจำกัดการทำงานของระบบรวมทั้งได้ตัวเลขที่วางแผนเอาไว้ด้วย
Check นำผลจากการลงมือทำ มาวัดผลและตรวจสอบจากข้อมูลก่อนลงมือทำว่าผลเป็นอย่างไร เพื่อหาจุดที่สามารถปรับปรุงหรือแก้ไขต่อไปได้ เช่น
- Slow query
- Database index
- Network ช้า
- ไม่คืน resource หรือไม่
- มี alert ของพวก error/exception หรือไม่
- ระบบ monitoring เป็นอย่างไร
- ในมุมมองของผู้ใช้งานเป็นอย่างไร
Act จากนั้นนำผลต่าง ๆ ที่ได้มาทำการวิเคราะห์เพื่อหาจุดแก้ไข ปรับปรุง ว่าในรายละเอียดต้องทำอย่างไร เพื่อให้ไปถึงเป้าหมายที่ตั้งไว้ได้ ยกตัวอย่างเช่น
- ต้องทำ caching
- จัดการเรื่องการใช้งานและคืน resource
- การปรับปรุง SQL query
- จำนวนของข้อมูลในการแสดงผลหรือขนาดข้อมูล
- ต้องใช้ CDN
- ปรับปรุง load balance
- เรื่องของ network ทั้ง bandwidth และ routing
- การ replicate database
- การติดตั้ง environement ในหลาย ๆ ที่
ซึ่งมันคือ Continuous Learning และ Continuous Improvement นั่นเอง เพื่อเรียนรู้และปรับปรุงอยู่ตลอดเวลา สิ่งที่สำคัญคือ ต้องจับวัดเป็นตัวเลขได้เสมอ