Co to jest Chaos Monkey? Wyjaśnienie inżynierii chaosu

Zapoczątkowany z hal Netflix podczas przechodzenia od dystrybucji płyt DVD do tworzenia rozproszonych systemów chmurowych do strumieniowego przesyłania wideo, Chaos Monkey wprowadził zasadę inżynierską, która została przyjęta przez organizacje zajmujące się tworzeniem oprogramowania o różnych kształtach i rozmiarach: mianowicie, że może nauczyć się zwiększać ich odporność.

Według oryginalnego posta na blogu Netflix na ten temat, opublikowanego w lipcu 2011 roku przez Yury Izrailevsky'ego, ówczesnego dyrektora chmury i infrastruktury systemów, oraz Ariela Tseitlina, dyrektora rozwiązań chmurowych w firmie streamingowej, Chaos Monkey został zaprojektowany do losowego wyłączania instancji produkcyjnych na infrastrukturę Amazon Web Services, ujawniając w ten sposób słabości, które inżynierowie Netflix mogliby wyeliminować, budując lepsze mechanizmy automatycznego odzyskiwania.

Ta chwytliwa nazwa pochodzi od „pomysłu uwolnienia dzikiej małpy z bronią w Twoim centrum danych (lub regionie chmury), aby losowo zestrzelić instancje i przeżuwać kable - przez cały czas obsługujemy naszych klientów bez przerwy”, post na blogu stany.

W praktyce oznaczałoby to, że prosta aplikacja „wybiera przypadkowo instancję z każdego klastra i w pewnym momencie w godzinach pracy wyłącza ją bez ostrzeżenia. Zrobiłoby to każdego dnia roboczego ”, jak szczegółowo opisali byli inżynierowie Netflix, Nora Jones i Casey Rosenthal w ich obszernej książce na ten temat, Chaos Engineering , opublikowanej przez O'Reilly Media.

Chodzi o to, że ucząc się, gdzie są twoje najsłabsze punkty, inżynierowie mogą ustawić automatyczne wyzwalacze do walki z problemem, oszczędzając im wezwanie w środku nocy, gdyby coś poszło nie tak. Od tego czasu Chaos Monkey przekształcił się w cały szereg zasad chaosu pod sztandarem inżynierii chaosu.

Chaos Monkey w Netflix

Chaos Monkey wyrósł z wysiłków inżynieryjnych w Netflix około 2010 roku, kiedy Greg Orzell - obecnie pracujący w GitHubie będącym własnością Microsoftu - otrzymał zadanie zbudowania odporności na nową architekturę opartą na chmurze firmy.

„Sposób, w jaki myślę o Małpce Chaosu, nie jest wielkim osiągnięciem inżynierii” - powiedział Orzell. „Wartość, jaką przynosi, to zmiana nastawienia, która była kluczowa w tamtym czasie, kiedy przechodziliśmy od wysyłania płyt DVD do strumieniowania przez Internet”.

Na początku inżynierowie Netflix wprowadzali do systemów całą gamę awarii i problemów, używając „armii małpy” narzędzi open source, z których każde uwzględniało określone typy awarii, zaczynając od Chaos Monkey usuwającego klastry AWS.

Oryginalna armia (obecnie w większości wycofana na rzecz nowych narzędzi) obejmowała takie postacie jak Latency Monkey, które powodowałyby sztuczne opóźnienia w warstwie komunikacji klient-serwer RESTful, oraz Doctor Monkey, który wykorzystywał kontrole stanu działające na każdej instancji , a także monitoruje inne zewnętrzne oznaki stanu zdrowia (np. obciążenie procesora), aby wykryć wystąpienia złej kondycji i usunąć je z usługi, jeśli jest to wymagane.

Chaos Kong przeniósł Chaos Monkey na wyższy poziom, symulując awarię w całej strefie dostępności AWS. „Bardzo rzadko zdarza się, że region AWS staje się niedostępny, ale zdarza się”, wyjaśnia post na blogu Netflix z 2015 roku. 

„Przeprowadzając regularnie eksperymenty, które symulują awarię regionalną, byliśmy w stanie wcześnie zidentyfikować wszelkie systemowe słabości i je naprawić” - kontynuuje post. „Kiedy US-EAST-1 faktycznie stał się niedostępny, nasz system był już wystarczająco silny, aby obsłużyć awaryjne przełączanie ruchu”.

Jak Jones i Rosenthal opisali w swojej książce, pozwolenie Chaos Kongowi na swobodne poruszanie się po infrastrukturze było „sprawą bezmyślną z 'pokojem wojennym' zmontowanym do monitorowania wszystkich aspektów usługi transmisji strumieniowej i trwało to godzinami”.

Dwa lata później, w lipcu 2017 r., Netflix wprowadził ChAP, platformę Chaos Automation Platform, która „bada potok wdrażania pod kątem usługi określonej przez użytkownika. Następnie uruchamia eksperymentalne i kontrolne klastry tej usługi i kieruje niewielki ruch do każdego z nich ”- czytamy w artykule na blogu.

Zasady inżynierii chaosu

Podstawowe praktyki Chaos Monkey szybko ewoluowały, z coraz większymi wdrożeniami poprzez Chaos Kong, do tego, co później zostało sformalizowane jako inżynieria chaosu. Netflix nie zbudował własnego formalnego zespołu inżynierów ds. Chaosu aż do 2015 r. Na jego czele stał Bruce Wong, obecnie dyrektor ds. Inżynierii w Stitch Fix.

Zasady inżynierii chaosu zostały formalnie zestawione przez niektórych autorów Chaos Monkey, definiując tę ​​praktykę jako: „Dyscyplina eksperymentowania z systemem w celu zbudowania pewności co do zdolności systemu do wytrzymania burzliwych warunków produkcji”.

W praktyce przyjmuje to czteroetapowy proces:

  1. Zdefiniowanie „stanu ustalonego” systemu w celu ustalenia podstawy normalnego zachowania.
  2. Załóż hipotezę, że ten stan ustalony będzie trwał zarówno w grupie kontrolnej, jak iw grupie eksperymentalnej.
  3. Wprowadź zmienne, które odzwierciedlają rzeczywiste zdarzenia, takie jak awarie serwerów, awarie dysków twardych lub zerwanie połączeń sieciowych.
  4. Spróbuj obalić hipotezę, szukając różnicy między grupą kontrolną a grupą eksperymentalną.

Jeśli stan ustalony jest trudny do zakłócenia, masz solidny system; jeśli jest słabość, masz coś do zrobienia i naprawienia.

„W ciągu pięciu lat od opublikowania„ Zasad ”widzieliśmy, jak inżynieria chaosu ewoluowała, aby sprostać nowym wyzwaniom w nowych gałęziach przemysłu” - zauważają Jones i Rosenthal. „Zasady i podstawy tej praktyki z pewnością będą ewoluować w miarę rozpowszechniania się adopcji w branży oprogramowania i nowych branż”.

Inżynieria chaosu z Chaos Monkey

Aby uruchomić wersję Chaos Monkey o otwartym kodzie źródłowym, twoje systemy będą musiały spełnić określony zestaw wymagań wstępnych, zgodnie z opisem na GitHub.

Chaos Monkey nie działa jako usługa, więc będziesz musiał skonfigurować zadanie cron, jak opisano na stronie GitHub, która następnie wywołuje Chaos Monkey raz w tygodniu, aby utworzyć harmonogram zakończeń.

Aby korzystać z tej wersji Chaos Monkey, musisz korzystać z własnej platformy Netflix o otwartym kodzie źródłowym, Spinnaker, która może ograniczać zdolność niektórych organizacji do przyjęcia tej metody. Chaos Monkey wymaga również bazy danych zgodnej z MySQL w wersji 5.6 lub nowszej.

Właściciele usług ustawiają swoje konfiguracje Chaos Monkey przez Spinnaker. Chaos Monkey działa poprzez Spinnaker, aby uzyskać informacje o tym, jak usługi są wdrażane i zamyka instancje - maszyny wirtualne lub kontenery - losowo, z częstotliwością i harmonogramem, które określisz.

Oczywiście wdrożenie Chaos Monkey to dopiero początek trudnego i złożonego zadania rozwiązania problemów z odpornością systemu. Chaos Monkey jedynie odkrywa słabości systemu; Następnie zadaniem DevOps lub zespołów inżynierów systemów jest zidentyfikowanie ich przyczyn i znalezienie rozwiązań.

„Samo oprzyrządowanie nie jest drogie, ale inwestycja, jaką trzeba podjąć, aby zareagować na oprzyrządowanie, jest”, jak ujął to Orzell. Poświęcenie się inżynierii chaosu wymaga również przesunięcia zasobów z tworzenia nowych funkcji na wzmacnianie odporności. „Każda firma znajduje się w innym punkcie tego spektrum i każdy z nich musi zdecydować, ile wybrać w tej przestrzeni” - dodaje.

Jones i Rosenthal twierdzą, że na początku inżynierowie Netflix „otrzymali wiele odpowiedzi od instytucji finansowych”.

Pomimo wyższych stawek dla banków, nadal miały one przerwy w dostawie, więc poprzez ostrożne wdrażanie „proaktywnej strategii, takiej jak inżynieria chaosu, mającej na celu zrozumienie ryzyka, aby zapobiec dużym, niekontrolowanym skutkom”, wiele z tych organizacji zmieniło zdanie, wprowadzając Capital One na adoptujący, jak opisano w książce.

Zasoby inżynierii chaosu

Ponownie, najnowszą i ostateczną książką na ten temat jest Chaos Engineering autorstwa byłych inżynierów Netflix, Nory Jones i Casey Rosenthal, opublikowana w kwietniu 2020 r., Która opiera się na wielu pracach tych i innych autorów, zebranych w książce Chaos Engineering z 2017 r. . Aby uzyskać bardziej praktyczny przegląd, zobacz Learning Chaos Engineering Russa Milesa .

Netflix zapewnia bogactwo zasobów na ten temat w serwisie GitHub, w tym samouczek, mnóstwo dokumentacji, licznik błędów, narzędzie do sprawdzania awarii i narzędzia do odszyfrowywania.

Gremlin - dostawca komercyjnych narzędzi do przeprowadzania eksperymentów inżynierii chaosu - oferuje własny kompleksowy zestaw zasobów, które są dostępne bezpłatnie online oraz w formacie PDF. Firma wspiera również różne wysiłki społeczności, w tym Chaos Conf i kanał Slack.

O'Reilly ma również bogate zasoby, w tym tę poręczną listę odtwarzania książek i filmów na ten temat.