Disruption, Panic, and Confusion (ความปั่นป่วน ความตื่นตระหนก และความสับสน)
ลองนึกภาพ ฉากนี้ดู: เป็นบ่ายวันศุกร์ที่เงียบสงบ ทีมกำลังตั้งตารอที่จะแอบออกไปที่ผับก่อนเวลาเพื่อเริ่มต้นวันหยุดสุดสัปดาห์ให้ห่างจากงาน แล้วจู่ ๆ อีเมลก็หลั่งไหลเข้ามา เว็บไซต์กำลังทำงานผิดปกติ! Twitter กำลังลุกเป็นไฟด้วยความล้มเหลวของบริษัทคุณ หัวหน้าของคุณกำลังต่อว่าคุณไม่หยุด และโอกาสที่จะได้พักผ่อนในวันหยุดสุดสัปดาห์อย่างสงบก็หายวับไป
ไม่มีอะไรสรุปปัญหานี้ได้ดีเท่ากับทวีตต่อไปนี้:
เราแทนที่ monolith ของเราด้วย microservices เพื่อให้ทุก outage เป็นเหมือนคดีฆาตกรรมลึกลับมากขึ้น 1
การตามหาว่าอะไรผิดพลาด และอะไรเป็นสาเหตุ คือด่านแรกที่เราต้องเผชิญ แต่มันจะยากขึ้นถ้าเรามีรายชื่อผู้ต้องสงสัยยาวเหยียด
ในโลกของแอปพลิเคชัน monolithic แบบ single-process อย่างน้อยเราก็มีจุดเริ่มต้นที่ชัดเจนมากสำหรับการสืบสวน เว็บไซต์ช้า? ก็ monolith นั่นแหละ เว็บไซต์ error แปลก ๆ ? ก็ monolith อีกนั่นแหละ CPU พุ่งไป 100%? Monolith กลิ่นไหม้? เอาเถอะ คุณคงเข้าใจแนวคิด 2 การมี single point of failure ทำให้การสืบสวนความล้มเหลวง่ายขึ้นในระดับหนึ่ง!
ทีนี้ลองมาคิดถึงระบบที่สร้างจาก microservice ของเราเองบ้าง ความสามารถที่เรามอบให้ผู้ใช้ถูกให้บริการมาจาก microservice หลายตัว ซึ่งบางตัวก็สื่อสารกับ microservice อื่น ๆ อีกต่อเพื่อทำงานให้สำเร็จ วิธีการแบบนี้มีข้อดีมากมาย (ซึ่งก็ดีแล้ว เพราะไม่งั้นหนังสือเล่มนี้ก็คงเสียเวลาเปล่า) แต่ในโลกของ monitoring เรามีปัญหาที่ซับซ้อนกว่าเดิมอยู่ในมือ
ตอนนี้เรามีหลาย server ที่ต้อง monitor มีหลาย log file ที่ต้องคุ้ยหา และมีหลายจุดที่ network latency อาจก่อปัญหาได้ พื้นที่ผิวของความล้มเหลว (surface area of failure) ของเราเพิ่มขึ้น และสิ่งที่ต้องสืบสวนก็เพิ่มขึ้นตามไปด้วย แล้วเราจะเข้าหาปัญหานี้อย่างไร? เราต้องทำความเข้าใจสิ่งที่อาจจะกลายเป็นความยุ่งเหยิงพันกันไปหมด—สิ่งสุดท้ายที่ใครก็ตามอยากเจอในบ่ายวันศุกร์ (หรือเวลาไหนก็ตามจริง ๆ!)
ก่อนอื่น เราต้อง monitor สิ่งเล็ก ๆ และมี aggregation ที่ทำให้เราเห็นภาพรวมที่ใหญ่ขึ้นได้ จากนั้น เราต้องมั่นใจว่าเรามีเครื่องมือให้ slice และ dice ข้อมูลนี้เป็นส่วนหนึ่งของการสืบสวน สุดท้าย เราต้องฉลาดขึ้นในการคิดเกี่ยวกับ system health โดยการรับเอาแนวคิดอย่าง testing in production มาใช้ เราจะพูดถึงสิ่งจำเป็นแต่ละอย่างนี้ในบทนี้ มาเริ่มกันเลย