FIND研究員:李啟榮
首創「混沌工程」的Netflix,藉由在機房遷移的過程中實踐混沌工程,將實施經驗與過程所採用的工具,整理為「Chaos Monkey」工具包並開源釋出,並對外擴散混沌工程的做法和效益;本研究則以Chaos Monkey混沌工程工具包為主題,探討其運作流程和原理,以了解Netflix如何以混沌工程逐步解決效能和可用性問題。
【技術發展背景】
Netflix導入混沌工程有十餘年的歷史,最早可追溯回2008年尚未流行串流視訊的年代,當時仍以DVD租賃為主要業務的Netflix面臨到資料庫停擺三天,演變為跨國業務面的嚴重衝擊;2011年Netflix以轉移機房到AWS為契機,改為部署以微服務為主的新分散式架構,並創建Chaos Monkey混沌工程工具包,來測試Netflix伺服器面臨停機或過載的韌性,並允許不妨礙業務衝擊的容錯空間,確保整體系統運作穩定。
【技術介紹與應用現況】
混沌工程一開始採用的是「錯誤注入(Fault injection)」的方法,預設各種可導致系統異常的使用情境,來找出效能瓶頸所在,類似「預防針」的作用,將不確定因子轉化為可控的因子;另外,混沌工程也考慮「容錯率」的概念,在Netflix運作中的上千個微服務中,若有一定比例以下的異常,則不致於影響整體的正常運作,也能兼顧服務品質、減少停機維護衝擊。
資料來源: (Reed, 2020)
圖 1 Netflix微服務拓樸圖
Netflix Chaos Monkey也利用「人猿軍團(Simian Army)」的編制,類似於「紅隊演練」的模式,藉由對伺服器發動各種可能的攻擊途徑,來找出影響伺服器穩定運作的不確定因子,並依據攻擊後留下的線索,加以補救和改善。
【未來展望/挑戰】
Netflix將混沌工程與Chaos Monkey工具包發揚光大後,各項混沌工程工具也如雨後春筍般興起,除了Netflix本家Chaos Monkey以外,還有Gremlin、Chaos Toolkit、Litmus、Mangle等等,能跟市面主流雲平台和容器整合,進行更實務面的混沌工程測試,讓各種不同型態的開發維運團隊,建立最安全穩定的組合。
資料來源: (Reed, 2020)
圖 2 混沌工程常用工具(摘錄)
封面圖片來源:123RF圖庫授權
參考資料:
1.Reed, M. (2020, August 26). Chaos Engineering when you're not Netflix . Retrieved from SlideShare: https://www.slideshare.net/MartezReed/chaos-engineering-when-youre-not-netflix
2.Russell, T. (2021, April 6). How Netflix Uses Fault Injection To Truly Understand Their Resilience. Retrieved from Coralogix: https://coralogix.com/blog/how-netflix-uses-fault-injection-to-truly-understand-their-resilience/
3.黃帥. (2019年4月1日). AWS雲上混沌工程實踐之啟動篇. 擷取自 AWS: https://aws.amazon.com/cn/blogs/china/aws-chaos-engineering-start/