PDCA คืออะไร

Plan-Do-Check-Act สำหรับ DevOps

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

0
657