อ่านบทความเกี่ยวกับการนำแนวคิด 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 นั่นเอง
เพื่อเรียนรู้และปรับปรุงอยู่ตลอดเวลา
สิ่งที่สำคัญคือ ต้องจับวัดเป็นตัวเลขได้เสมอ