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