AWS Fault Injection Simulator – Użyj Controlled Experiments aby zwiększyć niezawodność
AWS zapewnia komponenty potrzebne do budowy wysoce niezawodnych systemów: wiele regionów (każdy z wieloma strefami dostępności), Amazon CloudWatch (metryki, monitorowanie i alarmy), Auto Scaling, Load Balancing, kilka form replikacji między regionami i wiele więcej.
Kiedy połączysz je razem zgodnie z wytycznymi zawartymi w Well-Architected Framework, twoje systemy powinny być w stanie działać, nawet jeśli zawiodą poszczególne komponenty.
Jednak nie będziesz o tym wiedział, dopóki nie wykonasz odpowiednich rodzajów testów. Stosunkowo nowa dziedzina Chaos Engineering (oparta na pionierskiej pracy wykonanej przez „Master of Disaster” Jesse Robbins we wczesnych czasach Amazon.com, a następnie wprowadzona na wyższy poziom przez Netflix Chaos Monkey) koncentruje się na wywoływaniu problemów w aplikacji przez tworzenie destrukcyjnych wydarzeń, obserwowanie reakcji systemu i wdrażanie ulepszeń.
Oprócz wskazywania obszarów wymagających ulepszeń, Chaos Engineering pomaga odkryć martwe punkty, które zasługują na dodatkowe monitorowanie i alarmowanie, odkrywa niegdyś ukryte problemy z wdrożeniem i daje możliwość poprawy umiejętności operacyjnych z myślą o skróceniu czasu odzyskiwania. Aby dowiedzieć się więcej na ten temat, zacznij od Chaos Engineering – Part 1 autorstwa Adriana Hornsby.
Wprowadzenie do AWS Fault Injection Simulator (FIS)
AWS Fault Injection Simulator (FIS) to nowa usługa, która pomoże Ci przeprowadzać kontrolowane eksperymenty na workloadach AWS, wprowadzając awarie i pozwalając Ci zobaczyć, co się stanie. Dowiesz się, jak Twój system reaguje na różnego rodzaju problemy i będziesz miał lepsze zrozumienie trybów awarii. Możesz zacząć od przeprowadzania eksperymentów w środowiskach przedprodukcyjnych, a następnie przejść do uruchamiania ich w ramach przepływu pracy CI/CD, a ostatecznie w środowisku produkcyjnym.
Każdy eksperyment AWS Fault Injection Simulator (FIS) jest ukierunkowany na określony zestaw zasobów AWS i wykonuje na nich zestaw działań. Obecnie uruchomiono wsparcie dla Amazon Elastic Compute Cloud (EC2), Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS) i Amazon Relational Database Service (RDS), z dodatkowymi zasobami i działaniami w roadmapie na 2021 r. Zasoby docelowe można wybrać według typu, tagu, ARN lub poprzez zapytanie o określone atrybuty. Masz również możliwość zatrzymania eksperymentu, jeśli spełniony jest co najmniej jeden warunek zatrzymania (zgodnie z definicją w CloudWatch Alarms). Pozwala to szybko zakończyć eksperyment, jeśli ma nieoczekiwany wpływ na kluczową metrykę biznesową lub operacyjną.
Używanie AWS Fault Injection Simulator (FIS)
Stwórzmy szablon eksperymentu i przeprowadźmy go. Do tego eksperymentu użyto czterech instancji EC2, wszystkie oznaczono jako Test w kolumnie Mode:
Aby rozpocząć, otwórz konsolę FIS oraz kliknij w Create experiment template:
Wprowadź opis oraz wybierz rolę uprawnień IAM. Rola przyznaje uprawienia potrzebne FIS do wykonywania działań na wybranych zasobach, aby mógł wykonać eksperyment:
Następnie, zdefiniuj akcję(e), które obejmują eksperyment. Kliknij w Add action, aby rozpocząć:
Następnie zdefiniuj swoją pierwszą akcję – w tym przypadku chciano zatrzymać niektóre z instancji EC2 (oznaczonych w tym przykładzie trybem testu) na pięć minut i upewnić się, że system nadal działa. Dokonaj wyborów i kliknij w Save:
Następnie wybierz zasoby docelowe (w tym przypadku instancje EC2) do eksperymentu. Klikaj w Add target, nadaj swojemu celowi nazwę i wskaż, że składa się on ze wszystkich instancji EC2 (w bieżącym regionie), które mają tag Mode z wartością Test. Możesz również wybrać losową instancję lub procent wszystkich instancji, które pasują do tagu lub filtru zasobów. Ponownie dokonaj wyborów i klikaj Save:
Możesz wybrać jeden lub więcej warunków zatrzymania (CloudWatch Alarms) dla eksperymentu. Jeśli alarm zostanie wywołany, eksperyment zostanie przerwany. Ten mechanizm bezpieczeństwa pozwala upewnić się, że lokalna awaria nie przerodzi się w awarię na pełną skalę.
Na koniec otaguj eksperyment i kliknij Create experiment template:
Szablon jest gotowy do użycia jako podstawa do eksperymentu:
Aby przeprowadzić eksperyment, wybierz szablon, a następnie opcję Start experiment z menu Actions:
Następnie kliknij w Start experiment (możesz dodać tag jak w przykładzie):
Musisz potwierdzić swój zamiar, ponieważ może to wpłynąć na zasoby AWS:
Eksperyment zaczyna działać i możesz obserwować działania:
Zgodnie z oczekiwaniami instancje docelowe są zatrzymywane:
Przykładowy eksperyment dobiega końca i wiadomo już, że system może kontynuować pracę, jeśli te wystąpienia zostaną zatrzymane:
Możesz również tworzyć, uruchamiać i przeglądać eksperymenty przy użyciu FIS API i FIS CLI. Możesz na przykład przeprowadzić różne eksperymenty z tym samym celem lub ten sam eksperyment z różnymi celami.
Dostępny już teraz
AWS Fault Injection Simulator (FIS) jest dostępny i można go używać do przeprowadzania kontrolowanych eksperymentów. Jest obecnie dostępny we wszystkich komercyjnych regionach AWS z wyjątkiem Azji i Pacyfiku (Osaka) oraz dwóch regionów w Chinach. Pozostałe trzy regiony handlowe znajdują się na roadmapie.
Ceny są oparte na liczbie minut wykonywanych przez Twoje działania. Przeczytaj stronę z cenami FIS Pricing, aby dowiedzieć się więcej.
źródło: AWS