เป็นคำถามที่น่าสนใจสำหรับการพัฒนา service ที่ดีนั้น
ควร monitor อะไรบ้าง
หรืออาจจะเรียกว่า observable service
เพื่อช่วยให้เราดูการทำงาน ใช้งานต่าง ๆ ของ service
ตลอดจนช่วยให้ง่ายต่อการ detect และแก้ไขปัญหาได้รวดเร็วมากยิ่งขึ้น
รวมทั้งยังสามารถนำไปทำงานแบบ automate ได้อีกด้วย
สิ่งที่ควรจะต้องมีประกอบไปด้วย
- Health check ของ service น่าจะต้องเป็นค่า default ไปแล้ว เพื่อช่วยบอกว่า service ยังทำงานได้ปกติหรือไม่ ทั้ง liveness และ readiness
- Alert system ที่ทำงานแบบ realtime และควรแจ้งทั้งปัญหา หรือ รูปแบบที่อาจจะก่อให้เกิดปัญหา ควรเตือนก่อนจะเกิดปัญหา ถ้าแจ้งตอนเกิดปัญหา มันจะตั้งตัวไม่ทัน ในการ alert ควรแบ่งแยกด้วยว่าจะส่งหรือแจ้งผ่านช่องทางไหนที่เหมาะสม
- Logging สำหรับ error เท่านั้น บ่อยครั้งเรามักจะเก็บ log เยอะมาก ๆ ทั้ง success และ failure มันทำให้หาปัญหาได้ยากมาก ๆ รวมทั้งเปลือง resource ของการเก็บมาก ๆ รวมทั้งระบบ logging ควรทำงานแบบ Asyncchronous ด้วย เพื่อลดปัญหาที่จะเกิดขึ้นกับ service
- Distributed tracing สำหรับระบบงานที่มีการเรียกใช้หลาย ๆ service แล้ว จะขาดการ tracing ไม่ได้เลย จะช่วยให้เราเห็นภาพได้ชัดเจนว่า แต่ละ service ทำการติดต่อสื่อสารกันอย่างไร และตรงไหนที่เกิดปัญหากันแน่
ถ้าในแต่ละ service ของเรามีข้อมูลต่าง ๆ เหล่านี้
น่าจะช่วยให้เราสามารถแก้ไขปัญหาได้อย่างรวดเร็ว
และช่วยลดผลกระทบต่อผู้ใช้งานและ business ได้อย่างมาก