Monitoring and Observability (การเฝ้าติดตามและ Observability)

ใน Chapter 10 ผมอธิบายว่า monitoring เป็นกิจกรรมหนึ่ง เป็นสิ่งที่เราทำ กับ ระบบ แต่การโฟกัสไปที่กิจกรรมมากกว่าผลลัพธ์นั้นมีปัญหา ซึ่งเป็นแนวคิดที่ปรากฏซ้ำตลอดทั้งเล่มนี้ แทนที่จะเป็นแบบนั้น เราควรโฟกัสไปที่ observability ของระบบของเรา Observability คือระดับที่เราสามารถเข้าใจว่าระบบกำลังทำอะไรอยู่ได้จากการตรวจสอบผลลัพธ์ภายนอก การสร้างระบบที่มี observability ที่ดีต้องการให้เราสร้างแนวคิดนี้เข้าไปในซอฟต์แวร์ของเรา และมั่นใจว่าผลลัพธ์ภายนอกประเภทที่ถูกต้องมีให้ใช้งาน

ระบบกระจายสามารถล้มเหลวได้ในรูปแบบแปลกๆ และไมโครเซอร์วิสก็ไม่ต่างกัน เราไม่สามารถคาดการณ์สาเหตุความล้มเหลวของระบบได้ทั้งหมด ดังนั้นมันอาจยากที่จะรู้ล่วงหน้าว่าเราต้องการข้อมูลอะไรเพื่อวินิจฉัยและแก้ไขปัญหา การใช้เครื่องมือที่ช่วยให้คุณตรวจสอบผลลัพธ์ภายนอกเหล่านี้ในแบบที่คุณคาดไม่ถึงก็ยิ่งสำคัญมากขึ้นเรื่อยๆ ผมขอแนะนำให้คุณลองดูเครื่องมืออย่าง Lightstep และ Honeycomb ที่ถูกสร้างขึ้นโดยคำนึงถึงแนวคิดนี้

สุดท้าย เมื่อระบบของคุณเติบโตขึ้นในสเกล มันยิ่งมีโอกาสมากขึ้นเรื่อยๆ ที่จะมี error เกิดขึ้นที่ไหนสักแห่งเสมอ แต่ในระบบขนาดใหญ่ การที่เครื่องเครื่องเดียวมีปัญหาไม่จำเป็นต้องเป็นเหตุให้ทุกคนต้องรีบลุกขึ้นมาแก้ไข และก็ไม่ควรทำให้ใครต้องตื่นขึ้นมาอย่างไม่พึงประสงค์ตอนตีสามด้วย การใช้เทคนิค "test in production" เช่น parallel run และ synthetic transaction สามารถมีประสิทธิภาพมากกว่ามากในการจับปัญหาที่อาจกระทบผู้ใช้จริง