Gremlin公司發布了Gremlin,一種基于SaaS的“恢復能力即服務”(Resilience as a Service)平臺。Gremlin支持企業通過“按需破壞系統”開展混沌(Choas)實驗,這樣有助于在應用發生停機故障前預防問題的發生。Gremlin使得企業可以在所管理的基礎設施中注入一些受控的資源、網絡和狀態故障,以便工程師查看在此類故障條件下系統的運作行為。Gremlin還提供了一個“撤銷”按鈕,一旦出現問題即可自動清除注入故障。
自去年以來,混沌工程和恢復能力測試的理念日益流行,而Netflix等先驅對此已搖旗吶喊了相當長的時間。Netflix的Chaos Monkey,以及相關的Simian Army系列工具,已經成為相當主流的工具。此外,最近也有不少會議演講是以混沌為主題。但是要使用混沌技術,通常需要高層級的基礎設施和操作技能、實驗的設計和執行能力,以及一些可用的資源,并且由于混沌工程不能破壞生產環境,因此還需要以受控方式手動編排故障場景。
Gremlin平臺提供了一種基于Web的GUI,用于在已安裝Gremlin守護進程(代理)的計算設備上執行和管理混沌實驗。在Linux上,守護進程可以使用Debian和RPM軟件包安裝。對于那些在容器中運行應用的企業,Gremlin還提供了用于Docker的安裝選項(附帶對Kubernetes的支持)。
Gremlin的Web UI支持以受控的方式運行,發布一系列針對基礎設施的故障“攻擊”,其中包括:
Resource Gremlins
CPU:對一到多個CPU內核生成高負載;內存:分配指定數量的RAM;IO:對磁盤等I/O設備進行讀寫壓力測試;磁盤:通過寫文件,占滿一定比例的磁盤空間;Network Gremlins
黑洞:丟棄所有匹配網絡流量;延遲:對所有匹配的出口網絡流量注入延遲;包丟失:對所有匹配的出口網絡流量加入網絡包丟失;DNA:阻止對DNS服務器的訪問;State Gremlins
關機:支持用戶開展主機操作系統的重啟或關閉測試。例如,當一到多個集群內機器失聯時,系統的行為如何?時間旅行:更改主機的系統時間,可用于模擬調整夏令時,以及其它與時間有關的事件。殺掉進程:一種殺掉特定進程的攻擊,可用于模擬應用或依賴崩潰的情況。攻擊可以是即席的(ad-hoc)、程序化的或按計劃執行的。攻擊也可以被安排在特定日期和特定的時間窗口內執行,并可設置計劃生成的最大攻擊次數。Gremlin提供了一個“撤消”按鈕,一旦出現問題,會自動清除攻擊測試。安全是“完全重新建立的”,其中使用了最低的權限、多重身份驗證、審計和基于角色的訪問控制(RBAC)。
Gremlin的核心價值主張在于,允許工程師啟動、控制和觀察系統在攻擊可引發的各種故障情況下的行為。Gremlin并不提供自動化金絲雀測試(Canarying),例如類似于Barometer提供的功能,也不提供自動故障檢測,例如類似于LightStep提供的功能。它所提供的是一組全面的故障原語,可用于設計實驗,并觀察故障在一個復雜分布式系統中的影響情況。Gremlin不需要修改部署流水線,也不需要修改網絡基礎架構,因此更便于在一系列的基礎架構和部署范例中使用,例如裸機、云/IaaS或容器等。
近期,InfoQ與Gremlin公司的首席執行官兼創始人Kolton Andrus進行了一次座談,討論了混沌工程在軟件系統中的作用、可恢復性測試的價值所在,以及Gremlin平臺的未來。
InfoQ:您能做一個簡單的自我介紹嗎?最好能簡要闡述一下您在混沌工程中的背景。
Andrus:好的。我是Gremlin的CEO和聯合創始人Kolton Andrus。我們正致力于借助混沌工程,構建更具恢復能力的系統。我們提供“故障即服務”(failure-as-a-service)。
我曾在Amazon和Netflix任故障呼叫主管(Call Leader),負責管理和解決需及時處理的關鍵故障,以保證服務時刻在線。我們都非常熟悉半夜被電話叫走去排除關鍵問題的痛苦。
盡管追根溯源,混沌工程已經提出了十多年,并且有不少很好的開源軟件工具對探索道路提供了幫助,但是企業依然需要更多。我們前期已在Gremlim解決了這些問題,因此我們熟悉工程師應該如何使用簡單易用的工具,安全可靠地執行故障恢復實驗,進而自動化這些實驗。
InfoQ:當前混沌工程看上去是一個“熱點話題”。該話題具有大量的博客帖子,也出現在Nora Jones的AWS re:invent大會主題演講中。但是它并非一個全新的話題,Netflix和AWS討論它已有一段時間了。您為什么認為混沌現在廣為使用了?
Andrus:雖然AWS和Netflix是更早經歷這一需求的企業,但是分布式系統的復雜度已經開始對所有的企業產生影響,無論企業的大小。我們當前正處于一個拐點上。構建分布式系統的新方法更加復雜,使得企業無從洞悉何時何處會發生故障。在過去方式中,軟件是運行在一個受控的、裸金屬環境中,不確定的事情很少。在當前情況下,軟件是依賴于我們掌控之外的基礎設施和服務。
對云計算的采納,以及使用微服務的趨勢,這樣創建的基礎設施正在持續走向成熟,并給出了開發、部署和操作應用的新方式,這是前所未有的。但是,這也為企業創建了一條復雜性鴻溝,這樣的系統對于任何工程師甚至是工程師團隊都過于復雜了,以至于他們不可能完全的理解,這樣發生故障是不可避免的。
InfoQ:那么混沌工程或恢復能力測試的最大優點是什么?它們是否僅適用于那些具有專有基礎設施團隊的大型企業?
Andrus:很多企業是以響應式方式應對服務故障的。但他們并未認識到,這些軟件缺陷是可以甄別的,并防止它們繼續肆虐,進而節省工程師的時間,降低他們的痛苦,節省上百萬元并達到費用的最小化。任何提供隨叫隨到系統服務支持的團隊,都可以通過降低運維負擔和宕機時間,從這個方法中受益。
混沌工程支持開展一些經深思熟慮計劃的實驗。它將故障引入到系統中,識別和修復未知故障,最終構建健壯并具有恢復能力的系統。就像是為你的應用程序注射了流感疫苗。
人們常常會認為混沌工程就是隨機地破壞系統。但在我們看來,如果將混沌作為常規測試的一部分,實現高度的規劃和自動化,這時混沌將工作得最好。混沌可使團隊創建基準去衡量系統情況,確保系統可隨變化情況不斷地做出改進。
InfoQ:您認為企業在尋求實現混沌工程中所面對的最大挑戰什么?
Andrus:當前最大的挑戰在于教育。作為一門學科,混沌工程剛剛開始成為工程領域內討論的一個話題,許多人尚不知道從何處著手。另一方面,高管團隊并沒有意識到,不少服務中斷問題是可以預防的,這些先入為主的觀念也必須得到糾正。
Gremlin公司剛剛啟動。對于我們來說,明年我們會把注意力完全集中在教育上。這就是為什么我們與一些公司合作,幫助他們理解這一理念,理解其中對他們有所裨益之處。
解決挑戰的一種方式通過游戲日。我們直接與工程團隊合作,讓他們測試Gremlin攻擊,甚至是在他們簽約成為成為Gremlin客戶之前。這樣,他們可以親眼看到系統如何應對失敗,進而了解我們的工具可為企業所帶來的價值。
InfoQ:Gremlin產品的使用情況如何?您能向我們分享一些成功的案例嗎,或對如何有效地使用該工具稍作解釋?
Andrus:正如我前面所提到的,我們是一家剛剛啟動的公司,但公司的早期發展勢頭良好。我們正與12家重要客戶開展合作,其中包括Expedia、TwilioConfluent、Remind等。
我們和Confluent的一個團隊一起運作了一次游戲日。該團隊之前曾經手動開展過游戲日,但是占用了團隊整整一天的時間。我們在兩個小時內運行了所有的場景,并加入了更多的場景。Twilio在博客中,介紹了如何使用Gremlin去自動化一些故障實驗。
InfoQ:您能向我們闡述一下Gremlin的路線圖嗎?混沌工程的未來如何?
Andrus:接下來,混沌工程的主要問題是如何讓更多的人認識并采納。在我看來,混沌工程最終將成為每個公司在做預算時會考慮的事情,并將納入到大學的計算機科學課程中。我們開始看到,有一些學校已經這樣做了。我們認為這只是一個開始。
InfoQ:感謝您今天接受我們的采訪!您還有什么希望能與InfoQ讀者分享的嗎?
Andrus: 我們很高興能為提高互聯網的可靠性提供一些幫助。我們都十分依賴于互聯網。如果服務產生故障,很可能會對我們的生活造成重大影響。通過幫助指導該行業的發展,幫助我們的客戶取得成功,我們希望能對整個社會產生一些影響。
Gremlin公司最近獲得了750萬美元的A輪融資,它的早期客戶包括Expedia、Twilio和Confluent。關于Gremlin的更多信息,可以在公司的網站上看到。關于混沌工程原理的更多信息,可以在混沌社區的網站上看到。
查看英文原文: Gremlin Release "Resilience as a Service" SaaS Platform to Enable More Effective Chaos Engineering