จากการพูดคุยเรื่อง tuning performance ของระบบนั้น
ก่อนอื่นอย่าเพิ่ง tuning หรือ optimize เยอะนัก
หรือทำจนเกินความจำเป็นเท่านั้นก่อน
แต่คนที่ทำต้องรู้ด้วยนะว่า สิ่งที่เลือกหรือ solution ในการแก้ไขปัญหา
จะไม่เกิดปัญหาในระยะอันใกล้
หรือมันทำงานได้ ตอบโจทย์ทาง business
ทั้งด้วย function การทำงานในสภาวะปกติ
และสถานที่การณ์ที่จำนวนผู้ใช้งานถึงจุดหนึ่ง
ดังนั้นทีมพัฒนาควรมีความรู้ในเรื่อง technology หรือ ภาษาโปรแกรม
ตลอดจน data structure และ algorithm ที่เลือกใช้
ว่าเป็นอย่างไรก่อน
จากนั้นระบบก็ต้องมีระบบ monitoring และ onservability ที่ดี
เพื่อดูการใช้งาน resource ต่าง ๆ
รวมทั้งพฤติกรรมการใช้งาน และการทำงานของระบบ
ว่าเป็นปกติหรือไม่ เพื่อเข้าไปถึงจุดเกิดเหตุได้อย่างรวดเร็ว
ส่วนนักพัฒนาถ้าถึงเวลาต้อง tuning performance ในระดับ code
จำเป็นต้องมีเครื่องมือช่วยทำ profiling ด้วย
รวมทั้งการยิง performance test เข้าระบบ
เพื่อดูผลการทำงาน ว่ารองรับได้หรือไม่
หรือจุดไหนคือ คอขวดของระบบ
ถ้าจะให้ดีควรมีชุดการทดสอบด้วย functional และ non-functional
ครอบคลุมในทุก ๆ feature ของระบบนั่นเอง
แต่เมื่อเจอปัญหาขึ้นมา แน่นอนว่ามีเยอะแน่ ๆ
ดังนั้น ต้องจัดเรียงลำดับความสำคัญด้วย
ไม่ใช้ว่า สำคัญทุกปัญหา แบบนี้ไม่มีอะไรสำคัญแน่ ๆ
เพื่อช่วยทำให้เรา focus มากยิ่งขึ้นนั่นเอง
ในระดับ code ยังคงไม่พอ ต้องมองเรื่องของ architecture ของระบบด้วย
ว่าเป็นอย่างไร ทำงานอย่างไรบ้าง
ทั้งเรื่องของ caching data แบบ local, cluster หรือ remote
และเรื่องของ database ไม่ว่าจะเป็น RDBMS หรือ NoSQL
ว่าตัวไหนเหมาะกับระบบงานหรือ use case แบบใด
รวมทั้งเหมาะสมกับทีมด้วยนะ
ดังนั้นเรากลับมาดูสิว่า เราทำการ tuning performance ระบบอย่างไร
ที่สำคํญคือ เรารู้ว่าระบบงานที่เราพัฒนามีปัญหาเรื่อง performace ตอนไหน !!