Chaos Monkey

Chokchai Phatharamalai
odds.team
Published in
1 min readApr 10, 2023
Photo by Jamie Haughton on Unsplash

ในปี 2011 เกิดเหตุการณ์ที่ US-East Region ของ Amazon Web Services (AWS) down ทั้ง zone ส่งผลให้หลาย ๆ องค์กร service ล่ม เช่น Reddit และ Quora สิ่งที่ทำให้ทุกคนประหลาดใจคือ Netflix ดูไม่สะทกสะท้านกับเหตุการณ์นี้เลย ทุกคนพากันเดาว่าการที่ Netflix เป็นลูกค้ารายใหญ่ของ AWS ทำให้ได้รับบริการพิเศษทำให้ไม่ได้รับผลกระทบจากการล่ม

ภายหลัง Netflix ก็มา post บทความอธิบาย architectural design ของตัวเองที่อธิบายว่าเค้าวาง service อย่างไรให้มันทนทานต่อการล่มได้

ทุก ๆ component ของ Netflix จะต่อกันหลวม ๆ และมี timeouts ที่กระชับมาก รวมถึงมี circuit breakers ด้วย เช่นตอน CPU พุ่งขึ้น แทนที่จะแสดงผลหนังแบบ personalized ก็จะสลับไปแสดงรายการหนังกลาง ๆ จาก cache แทน ซึ่งใช้การคำนวนน้อยกว่า

นอกจากนั้น ในบทความยังเล่าถึงการฝึกฝนแบบหนึ่ง ที่เค้าเรียกว่า Chaos Monkey คือการฝึกที่จะตอบสนองกับ production incident โดยการให้ทีมหนึ่ง (เรียกกว่า Chaos Monkey engineer) มาผลัดกันแกล้งทำให้ server หรือ network หรือส่วนไหนก็ตามของทีมต่าง ๆ ล่ม เพื่อให้ทุกคนคุ้นชินกับความผิดพลาดที่จะเกิดขึ้นได้กับ service บน cloud ทุกคนจะพยายามทำให้ service เหล่านี้สามารถฟื้นตัวได้เองโดยไม่ต้องมีคนเข้าไปแก้ไข

การที่ Netflix ฝึกอย่างนี้เป็นประจำ ส่งผลให้พวกเขารับมือกับสถานการณ์ Great Amazon Reboot ในปี 2014 ได้เป็นอย่างดี ตอนนั้นเครื่องประมาณ 10% ของ Amazon จำเป็นต้อง restart อย่างฉับพลันเพื่อลง Xen security patch

Christos Kalantzis จากทีม Netflix Cloud Database Engineering บอกว่า พอเห็นข่าวทีแรกเค้าอ้าปากค้าง แล้วพอเห็นรายชื่อของ Cassandra nodes ที่ได้รับผลกระทบ เค้าก็รู้สึกเหมือนจะป่วย แต่พอนึกถึงแบบฝึก Chaos Monkey ทั้งหลายที่พวกเค้าเคยผ่านมา เค้าก็คิดในใจว่า “จะอะไรก็มาเถอะ!”

แล้วก็เป็นอีกครั้งที่ Netflix แสดงผลงานที่น่าทึ่ง จาก 2700 กว่า nodes บน production มี 218 nodes ในนั้นที่ถูก restart แล้วมี 22 nodes ที่ restart แล้วไม่กลับมา สุดสัปดาห์นั้น Netflix รอดด้วย 0 downtime

สิ่งที่น่าทึ่งยิ่งกว่าการที่เค้าไม่ล่มคือ สุดสัปดาห์นั้นไม่มีใครอยู่ออฟฟิศด้วย พวกเค้าไปปาร์ตี้กันที่ Hollywood อยู่

สรุปคือ การที่องค์กรหมั่นฝึกฝนและให้ความสำคัญกับ service ที่ทนทาน จะทำให้องค์กรนั้นรับมือกับสถานการณ์ที่เป็นเหมือนกับวิกฤติขององค์กรอื่นได้เหมือนเป็นงานธรรมดาหรือบางครั้งกลายเป็นงานน่าเบื่อด้วยซ้ำไป

บทความที่เกี่ยวข้อง

--

--