ทำการสรุป VDO เรื่อง Build in Observability While Developing จากงาน KubeCon
ทำการอธิบายถึง observability ของระบบว่า
ช่วยให้เราเข้าใจสิ่งที่กำลังเกิดขึ้นในระบบงาน หรือบน production
แต่มักจะพบว่า ในการพัฒนาและส่งมอบ feature นั้น
มักจะแยกระหว่าง code กับพวก observability (log, trace, metric) ออกจากกัน

หรือมาทำในภายหลังก่อนขึ้น production
ทำให้สิ่งที่ทำเพิ่มเข้ามานั้น ไม่ตรงกับสิ่งที่ต้องการ !!
ส่งผลต่อความเชื่อมันที่มีต่อระบบ และ พวก observability หรือไม่นะ ?

ดังนั้นใน VDO นี้จึงได้พยายามอธิบายว่า
observability นั้น ก็เหมือนการทดสอบ
ที่แต่ละ feature ก่อนจะส่งมอบต้องทดสอบเสมอ
ดังนั้น observability ก็เช่นกัน ต้องมาพร้อมกับ feature นั่นเอง
นั่นคือ มันอยู่ใน development process/workflow ไปเลย

โดยเรื่องของ observability นั้น แนะนำให้ไปใช้งาน OpenTelemetry กัน

คำแนะนำให้ VDO บอกว่า ถ้าคุณ log ได้ ก็ trace ได้

เริ่มจาก log การทำงานเป็น plain text ปกติ
จากนั้นเริ่มเรียงด้วยเวลาของการทำงาน
จากนั้นเริ่มสร้าง log ที่มีโครงสร้างชัดเจน ง่ายต่อการ process
เช่น JSON format เป็นต้น
ซึ่งจะเรียกว่า Structured log นั่นเอง

จากนั้นก็เริ่มใส่ trace id และ span id
เพื่อให้เห้นความพันธ์ของ log และละตัวนั่นเอง
ยกตัวอย่างเช่น

คำแนะนำในการเริ่มต้น

  • ค่อย ๆ เพิ่ม ไม่ใช่ทำทีเดียวทั้งระบบ (start small)
  • โดยเริ่มจาก automatic instrumentation ก่อน ซึ่งยังไม่ต้องเขียน code
  • แต่ถ้าต้องการ insight ของการทำงานใน code จำเป็นต้องเขียน code เพิ่มเติม
  • ทำการเรียนรู้จากการใช้งานในระบบ เพื่อดูว่าอะไรควรเก็บหรือไม่ควรเก็บ
  • สิ่งที่ควรเก็บคือ ได้ใช้งานเมื่อมีปัญหานั่นเอง มิใช่เก็บทั้งหมด มันเปลือง
  • ทำการปรับปรุงอย่างต่อเนื่อง ไม่ใช่เก็บแล้วจบนะ

การทำตามขั้นตอนนี้ จะช่วยให้มีความมั่นใจต่อ code และระบบมากยิ่งขึ้น
ช่วยให้เห็นถึงปัญหาได้รวดเร็ว ทันเวลา
เพื่อให้เราเข้าไปถึงจุดเกิดเหตุ หรือ ช่วยวิเคราะห์ปัญหาได้ง่ายขึ้น
สิ่งเหล่านี้ไม่ใช้ nice-to-have แต่มันคือสิ่งที่ต้องมีเสมอนะ

Reference Websites