Cyberbezpieczeństwo

Technologia

Chaos Engineering - co to jest?

4 min czytania

Chaos engineering to praktyka inżynierii oprogramowania polegająca na celowym wprowadzaniu awarii do systemu, by sprawdzić, jak ten system na nie reaguje. Zamiast czekać na niespodziewane problemy produkcyjne, zespoły inżynierskie prowokują je w kontrolowanych warunkach i obserwują skutki.

Skąd pochodzi chaos engineering?

Podejście to spopularyzował Netflix, który w 2011 roku opublikował narzędzie Chaos Monkey. Narzędzie losowo wyłączało instancje serwerów w środowisku produkcyjnym, zmuszając inżynierów do budowania systemów odpornych na tego rodzaju awarie. Netflix działał w na tyle dużej skali, że nie mógł pozwolić sobie na odkrywanie słabości dopiero wtedy, gdy użytkownicy zgłaszali problemy.

Od tamtego czasu chaos engineering przeszedł długą drogę. Dziś stosują go nie tylko giganci technologiczni, lecz także firmy z sektora finansowego, telekomunikacyjnego i e-commerce. Zasady tej dyscypliny zostały skodyfikowane w dokumencie Principles of Chaos Engineering, który definiuje ten eksperyment jako ustrukturyzowany proces, a nie przypadkowe psucie systemu.

Jak wygląda chaos engineering?

Najpierw zespół definiuje stan stabilny systemu, czyli zestaw mierzalnych wskaźników opisujących normalne działanie. Mogą to być: czas odpowiedzi API, liczba przetworzonych transakcji na sekundę albo wskaźnik błędów HTTP.

Następnie formułuje się hipotezę: jeśli wyłączymy jeden z węzłów bazy danych, system powinien automatycznie przełączyć się na replikę i utrzymać czas odpowiedzi poniżej określonego progu. Potem przeprowadza się eksperyment, czyli faktyczne wyłączenie węzła, i obserwuje, czy system zachowuje się zgodnie z hipotezą.

Jeśli zachowuje się inaczej, znaleziono słabość. Jeśli zachowuje się zgodnie z oczekiwaniami, zdobyto dowód na odporność systemu. W obu przypadkach wynik eksperymentu jest wartościowy.

Eksperymenty prowadzi się zazwyczaj w kilku środowiskach:

  • w środowisku testowym, w którym ryzyko jest minimalne,
  • w środowisku stagingowym, które odzwierciedla produkcję,
  • w środowisku produkcyjnym, w którym wyniki są najbardziej miarodajne, ale ryzyko największe.

Większość organizacji zaczyna od środowisk niższych i stopniowo przesuwa eksperymenty bliżej produkcji, gdy zdobywa doświadczenie i zaufanie do procesu.

Czym chaos engineering różni się od zwykłego testowania?

Tradycyjne testy oprogramowania weryfikują, czy system robi to, do czego został zaprojektowany. Chaos engineering sprawdza to, co system robi, gdy coś idzie nie tak. To fundamentalna różnica w podejściu.

Testy jednostkowe i integracyjne działają na poziomie kodu. Chaos engineering działa na poziomie całego systemu, uwzględniając sieć, infrastrukturę, zależności zewnętrzne i ludzkie reakcje na awarie. Testowanie funkcjonalne odpowiada na pytanie „czy to działa?”. Chaos engineering odpowiada na pytanie „co się stanie, gdy przestanie działać?”.

Chaos testing nie zastępuje tradycyjnych testów. Uzupełnia je o perspektywę, której testy jednostkowe i integracyjne nie są w stanie dostarczyć.

Jakie awarie wprowadza się w eksperymentach?

Zakres możliwych eksperymentów jest szeroki. Najczęściej stosowane kategorie awarii obejmują:

  • awarie sieci, takie jak opóźnienia pakietów, utrata połączenia między serwisami albo całkowite odcięcie od zewnętrznych API,
  • awarie zasobów, czyli przeciążenie procesora, wyczerpanie pamięci RAM lub zapełnienie dysku,
  • awarie instancji, polegające na wyłączeniu pojedynczych serwerów, kontenerów lub węzłów klastra,
  • awarie zależności, gdy zewnętrzna usługa zwraca błędy lub odpowiada z dużym opóźnieniem,
  • awarie danych, takie jak uszkodzone wpisy w bazie lub niespójne stany między serwisami.

Dobór rodzaju awarii zależy od architektury systemu i od tego, jakie ryzyka są dla danej organizacji najbardziej krytyczne.

Narzędzia do chaos testingu

Ekosystem narzędzi rozrósł się znacząco od czasów Chaos Monkey. Wśród najczęściej używanych rozwiązań wyróżnia się kilka platform.

Chaos Monkey i szerzej rozumiany Simian Army od Netflixa to historyczny punkt odniesienia, choć dziś wiele organizacji sięga po nowsze narzędzia. Gremlin oferuje komercyjną platformę z graficznym interfejsem i szerokim katalogiem gotowych ataków. 

Chaos Engineering

Zdj. 1. Strona internetowa zaawansowanej platformy Gremlin

Źródło: https://www.gremlin.com/

Litmus Chaos to projekt open source przeznaczony dla środowisk Kubernetes, który pozwala definiować eksperymenty jako zasoby Kubernetes. AWS Fault Injection Service umożliwia prowadzenie eksperymentów bezpośrednio w infrastrukturze Amazon Web Services.

Wybór narzędzia zależy od środowiska, w którym działa system, od poziomu dojrzałości zespołu i od budżetu przeznaczonego na tę praktykę.

Kiedy warto wdrożyć chaos engineering?

Chaos engineering przynosi największą wartość w systemach rozproszonych, w których liczba zależności między komponentami sprawia, że przewidzenie wszystkich możliwych scenariuszy awarii jest praktycznie niemożliwe. Architektury mikroserwisowe, systemy działające w chmurze i aplikacje o wysokich wymaganiach dostępności to naturalne środowisko dla tej praktyki.

Organizacje bez dojrzałych procesów monitorowania i alertowania powinny zacząć od ich zbudowania. Chaos engineering bez dobrego observability to eksperymentowanie w ciemno. Nie wiadomo wtedy, co dzieje się z systemem podczas eksperymentu ani jak interpretować wyniki.

Dobry moment na pierwsze eksperymenty to sytuacja, gdy system ma zdefiniowane SLA, gdy istnieje monitoring pokrywający kluczowe wskaźniki i gdy zespół rozumie architekturę na tyle dobrze, by formułować sensowne hipotezy.

Chaos testing- FAQ 

  • Czym jest chaos engineering?

Chaos engineering to celowe wprowadzanie awarii do systemu w kontrolowanych warunkach, aby sprawdzić jego reakcję i odporność – przeprowadzanie kontrolowanych eksperymentów.

  • Czym chaos engineering różni się od tradycyjnego testowania?

Tradycyjne testy sprawdzają, czy system działa zgodnie z założeniami, natomiast chaos engineering sprawdza, co dzieje się z systemem, gdy wystąpi awaria.

  • Jakie awarie można wprowadzać podczas eksperymentów?

Eksperymenty mogą obejmować między innymi: awarie sieci, zasobów, instancji, zależności zewnętrznych oraz danych.

  • W jakich środowiskach prowadzi się eksperymenty chaos engineering?

Eksperymenty można prowadzić w środowisku testowym, stagingowym oraz produkcyjnym. Organizacje zazwyczaj zaczynają od środowisk niższych i stopniowo przesuwają eksperymenty bliżej produkcji.

tło banera
Genialne firmy mnożą
swój potencjał z
Ocena Clutch
5.0
Ocena Google
4.8
tło banera
Bądź widoczny w Google i wyszukiwarkach przyszłości (ChatGPT, Gemini, Perplexity i inne)
Zostaw adres e-mail — porozmawiamy o widoczności Twojej strony w AI.
Dane przetwarzamy w celu kontaktu, zgodnie z naszą
polityką prywatności
Marcin Stypuła
Copywriter, który swoją przygodę z tworzeniem treści rozpoczął w 2020 roku. Od początku skupił się na materiałach eksperckich związanych z SEO i tematyką techniczną. Jego ambicją jest przekładanie skomplikowanych zagadnień marketingowych na prosty, przystępny język. Poza pracą stawia na aktywność i regenerację, latem biegając, a zimą morsując.

Udostępnij

Oceń tekst

Średnia ocen 0 / 5. Liczba głosów: 0

Brak głosów - oceń jako pierwszy!

Zapytaj o ofertę SEO
Dołącz do newslettera
Powiązane artykuły Najnowsze Popularne

Zbuduj Twój potencjał SEO

Skonsultuj z nami Twoją sytuację w wyszukiwarce. Porozmawiajmy o Twoich celach i możliwościach współpracy