Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy tego zalecenia listy kontrolnej niezawodności platformy Azure Well-Architected Framework:
RE:08 | Przetestuj scenariusze odporności i dostępności, stosując zasady inżynierii chaosu. Upewnij się, że implementacja łagodnej degradacji oraz strategie skalowania są skuteczne, wykonując testowanie faktycznej awarii i symulowane testy obciążenia. |
---|
W tym przewodniku opisano zalecenia dotyczące projektowania strategii testowania niezawodności w celu weryfikowania i optymalizowania niezawodności obciążenia. Testowanie niezawodności koncentruje się na odporności i dostępności obciążenia, w szczególności krytycznych przepływów, które można zidentyfikować podczas projektowania rozwiązania. Ten przewodnik zawiera ogólne wskazówki dotyczące testowania i wskazówki specyficzne dla iniekcji błędów i inżynierii chaosu.
Definicje
Termin | Definicja |
---|---|
Dostępność | Czas działania obciążenia aplikacji w dobrej kondycji bez znaczących przestojów. |
Inżynieria chaosu | Praktyka poddawania aplikacji i usług rzeczywistym naprężeniom i awariom. Celem inżynierii chaosu jest budowanie i weryfikowanie odporności na zawodne warunki i brakujące zależności. |
Wstrzykiwanie błędów | Akt wprowadzenia błędu do systemu w celu przetestowania odporności systemu. |
Odzyskiwalność | Synonim odporności. |
Elastyczność | Zdolność aplikacji do wytrzymania awarii i powrotu do sprawności. |
Kluczowe strategie projektowania
Gotowość do testowania niezawodności
Rutynowo przeprowadzaj testy, aby zweryfikować istniejące progi, cele i założenia. Gdy w obciążeniu wystąpi duża zmiana, uruchom regularne testowanie. Wykonywanie większości testów w środowiskach testowych i przejściowych. Korzystne jest również uruchomienie podzbioru testów na systemie produkcyjnym. Zaplanuj dopasowanie jeden do jednego kluczowych środowisk testowych z środowiskiem produkcyjnym.
Automatyzowanie testowania w celu zapewnienia spójnego pokrycia testów i powtarzalności. Automatyzowanie typowych zadań testowania i integrowanie ich z procesami kompilacji. Ręczne testowanie oprogramowania jest żmudne i podatne na błędy, ale można przeprowadzić ręczne testowanie eksploracyjne. W przypadkach, w których należy opracować testy automatyczne, użyj testowania ręcznego, aby określić zakres testów do opracowania.
Przyjmij podejście testowania przesuniętego w lewo, aby przeprowadzać testowanie odporności i dostępności na wczesnym etapie cyklu projektowania.
Dostosuj prosty format dokumentacji, dzięki czemu każdy może łatwo zrozumieć proces i wyniki każdego regularnego testu.
Udostępnij udokumentowane wyniki odpowiednim zespołom, na przykład zespołom operacyjnym, liderom technologii, uczestnikom projektu biznesowego i uczestnikom projektu odzyskiwania po awarii. Wyniki powinny informować o uściśleniu celów dotyczących niezawodności, takich jak cele poziomu usług (SLO), umowy dotyczące poziomu usług (SLA), cele czasu odzyskiwania (RTO) i cele punktu odzyskiwania (RPO).
Tworzenie regularnego tempa testowania kopii zapasowych. Przywróć dane w systemach izolowanych, aby upewnić się, że kopie zapasowe są prawidłowe i czy przywracanie działa.
Dokumentowanie i udostępnianie metryk czasu odzyskiwania osobom biorącym udział w projekcie odzyskiwania po awarii, aby upewnić się, że oczekiwania dotyczące odzyskiwania są odpowiednie.
Użyj standardowych procedur testowania wdrażania branżowych, aby zapewnić, że masz zautomatyzowany, przewidywalny i wydajny proces wdrażania.
Przetestuj zdolność obciążenia do wytrzymania przejściowych awarii. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące obsługi błędów przejściowych.
Przetestuj zdolność swojego obciążenia roboczego do reagowania na zmiany wzorców obciążenia i nasilenie użycia. Użyj tych informacji, aby pomóc sobie w testowaniu strategii skalowania . Aby uzyskać informacje o obciążeniu i testowaniu przeciążeniowym, zobacz Zalecenia dotyczące testowania.
Przetestuj sposób obsługi awarii obciążeń w usługach zależnych lub innych zależnościach przy użyciu iniekcji błędów.
Przetestuj i zweryfikuj, jak projektowanie samouzdrawiania i samozachowawczości reaguje na awarie. Testowanie operacji automatycznego i ręcznego odzyskiwania.
Przetestuj plan odzyskiwania po awarii , aby reagować na katastrofalne awarie i inne poważne zdarzenia.
Przetestuj zdolność obciążenia do łagodnej degradacji wydajności i zminimalizowania wpływu awarii składnika przy użyciu symulacji błędów.
Korzystaj z planowanych i nieplanowanych awarii
Gdy obciążenie jest w trybie offline z powodu planowanej konserwacji lub nieplanowanej awarii, masz unikatową okazję do przeprowadzania testów i ulepszania zrozumienia obciążenia. W poniższych sekcjach przedstawiono zalecenia dotyczące każdego scenariusza.
Planowana konserwacja
W przypadku zaplanowanych okien obsługi aktualizacji lub poprawek można przetestować składniki i przepływy, które nie są zaangażowane w prace serwisowe. Wykonywanie testów bez potencjalnego ryzyka nieoczekiwanego obniżenia obciążenia lub całkowitego przełączenia go w tryb offline. Jeśli masz wystarczająco dużo czasu w oknie konserwacji, możesz również przetestować składniki i przepływy, które biorą udział w konserwacji po zakończeniu prac konserwacyjnych.
Nieplanowana awaria
Użyj każdego zdarzenia awarii jako okazji, aby dowiedzieć się więcej o obciążeniu i poprawić jego odporność, wykonując następujące kroki uporządkowane według priorytetu:
Przywróć obciążenie robocze do trybu online dla swoich klientów. W tym celu możesz wykonać obejście problemu, rozwiązać ten problem lub zainicjować procesy odzyskiwania.
Ustal główną przyczynę awarii i rozwiąż problem. Jeśli możesz usunąć przyczynę źródłową w trakcie analizy, udokumentuj przyczynę źródłową i środki, które podjąłeś w celu jej usunięcia. Jeśli problem wymaga wykonania dodatkowego okna konserwacyjnego w późniejszym czasie, upewnij się, że środki zaradcze mogą obsłużyć oczekiwane obciążenie, dokładnie je testując. Upewnij się, że skonfigurowaliśmy wystarczające monitorowanie, aby uwzględnić środki zaradcze.
Jeśli ma to zastosowanie, poszukaj tego samego problemu lub słabości konfiguracji, które mogą mieć wpływ na podobne problemy, we wszystkich składnikach obciążenia. Skorzystaj z tej okazji, aby proaktywnie zająć się tymi elementami. Skonsultuj się z historią zdarzeń, aby wykryć wzorce podobnych problemów w obciążeniu.
Użyj wyników, aby ulepszyć strategię testowania. Upewnij się, że pomyślnie rozwiązano główną przyczynę i podobne problemy, bezpośrednio testując tę samą awarię.
Korzystanie z iniekcji błędów i inżynierii chaosu
Testowanie iniekcji błędów jest zgodne z zasadami inżynierii chaosu, podkreślając zdolność obciążenia do reagowania na awarie składników. Przeprowadź testy iniekcji błędów w środowiskach przedprodukcyjnych i produkcyjnych. Stosowanie testów do warstw infrastruktury i aplikacji. Zastosuj informacje poznane Zalecenia dotyczące przeprowadzania analizy trybu awarii, aby upewnić się, że testujesz tylko błędy, które mają priorytety i że masz strategie ograniczania ryzyka, które dotyczą błędów. Najważniejsze wytyczne inżynierii chaosu to:
Bądź proaktywny. Nie czekaj na awarie. Spróbuj przewidzieć błędy, przeprowadzając eksperymenty chaosu, aby odkryć i rozwiązać problemy, zanim wpłyną one na środowisko produkcyjne.
Zaakceptuj porażkę. Zaakceptuj i dowiedz się, jakie błędy występują w systemie. Zobacz błędy jako naturalną część złożonych systemów i wykorzystaj je jako możliwości nauki i poprawy niezawodności systemu.
Przerwij system. Celowo wprowadzać błędy lub napięcie do systemu, aby testować jego odporność. Symulowanie rzeczywistych awarii lub zakłóceń w celu testowania i ulepszania możliwości odzyskiwania obciążenia.
Wczesne identyfikowanie i eliminowanie pojedynczych punktów awarii. Podczas testowania sprawdź i zaktualizuj analizę trybu awarii , aby zweryfikować błędy i rozwiązać je w dokumentacji. Zastosuj podejścia do niezawodności, takie jak nadmiarowość i segmentacja, aby zwiększyć dostępność prac i zminimalizować przestoje.
Zainstaluj poręcze i łagodne środki zaradcze. Zaimplementuj środki bezpieczeństwa, takie jak wzorzec Circuit Breaker lub wzorzec Throttling, aby zwiększyć dostępność. Zaimplementuj metody bezpiecznego obniżenia wydajności, które umożliwiają ciągłość działania podczas awarii.
Zminimalizuj zasięg wybuchu. Zaimplementuj strategie izolacji błędów, aby zapewnić, że nawet w przypadku wystąpienia awarii jej zakres jest ograniczony. System nadal działa z minimalnym wpływem na klientów.
Budowanie odporności. Użyj eksperymentów inżynierii chaosu, aby zwiększyć zdolność obciążenia do zapobiegania awariom i ich naprawy.
Inżynieria chaosu jest integralną częścią kultury zespołu ds. obciążenia pracą i ciągłej praktyki, a nie krótkoterminowego wysiłku taktycznego w odpowiedzi na pojedynczą awarię. Postępuj zgodnie z tą standardową metodą podczas projektowania eksperymentów chaosu:
- Zacznij od hipotezy. Każdy eksperyment powinien mieć jasny cel, taki jak testowanie zdolności danego przepływu do wytrzymania utraty określonego składnika.
- Zmierz zachowanie bazowe. Upewnij się, że masz spójne metryki niezawodności i wydajności dla przepływu i składników biorących udział w danym eksperymencie w celu porównania ze stanem obniżonej wydajności podczas uruchamiania eksperymentu.
- Wstrzyknij błąd lub błędy. Eksperyment powinien celowo skupiać się na określonych elementach, które można szybko odzyskać, a także należy świadomie ocenić, jaki efekt wywoła wstrzyknięcie błędu, aby pomóc kontrolować zasięg wybuchu eksperymentu.
- Monitoruj wynikowe zachowanie. Zbierz dane telemetryczne dotyczące poszczególnych składników przepływu i kompleksowe zachowanie przepływu, które jest celem eksperymentu, aby prawidłowo zrozumieć skutki błędu. Porównaj zebrane metryki z metrykami bazowymi, aby uzyskać pełny obraz wyników iniekcji błędów.
- Udokumentowanie procesu i obserwacji. Przechowywanie szczegółowych zapisów z eksperymentów będzie pomocne przy podejmowaniu przyszłych decyzji dotyczących projektowania obciążenia pracą, co zapewni uwzględnienie luk, które ujawniły się z czasem.
- Zidentyfikuj wynik i podejmij działania. Zaplanuj kroki korygowania, które można dodać do harmonogramu zadań w celu ulepszenia. Upewnij się, że plany poprawy projektu są sprawdzane i testowane w środowiskach nieprodukcyjnych zgodnie z tymi samymi procesami co inne wdrożenia.
Okresowo weryfikuje proces, wybory architektury i kod, aby szybko wykrywać dług techniczny, integrować nowe technologie i dostosowywać się do zmieniających się wymagań.
Podczas przeprowadzania eksperymentów wstrzykiwania błędów:
- Upewnij się, że monitorowanie jest na miejscu, a alerty zostały skonfigurowane.
- Zweryfikuj proces przypisywania osoby bezpośrednio odpowiedzialnej (DRI) do objęcia odpowiedzialności za zdarzenie.
- Upewnij się, że twoje procesy dokumentacji i badania są aktualne.
Zintegruj następujące zalecenia i zagadnienia, aby zoptymalizować strategię testowania chaosu:
Kwestionowanie założeń systemowych. Podczas testowania próbujesz poprawić odporność obciążenia i strategii projektowania obciążenia. Poszukaj możliwości wstrzykiwania błędów w komponenty i przepływy, które uważasz za niezawodne na podstawie wcześniejszych doświadczeń. Mogą one nie być niezawodne w nowym obciążeniu.
Zweryfikuj zmiany, takie jak topologia, platforma i zasoby. Bez dokładnego testowania, w tym testowania iniekcji błędów, możesz mieć niekompletny obraz obciążenia po wprowadzeniu zmian. Na przykład możesz przypadkowo wprowadzić nowe zależności lub przerwać istniejące zależności w sposób, który nie jest natychmiast widoczny.
Użyj buforów SLA. Ogranicz testowanie chaosu, aby zachować zgodność z umowami SLA i uniknąć potencjalnych skutków dla reputacji lub skutków finansowych związanych z awariami. Cele przywracania przepływu i komponentów pomagają zdefiniować zakres testowania.
Ustanów budżet błędów jako inwestycję w chaos i iniekcję błędów. Budżet błędu jest różnicą między osiągnięciem 100 procent SLO a osiągnięciem uzgodnionego SLO.
Zatrzymaj eksperyment, jeśli wykracza poza zakres. Nieznane wyniki są oczekiwanym wynikiem eksperymentów chaosu. Staraj się osiągnąć równowagę między zbieraniem znaczących danych wyników i wpływem na jak najmniej użytkowników produkcyjnych.
Ściśle współpracuj z zespołami projektowymi, aby zapewnić istotność wstrzykniętych błędów. Użyj poprzednich zdarzeń lub problemów jako przewodnika. Sprawdź zależności i oceń wyniki po usunięciu tych zależności.
Zidentyfikuj i udokumentuj wcześniej nieodkryte zależności między różnymi składnikami obciążenia, które są ujawniane przez testowanie chaosu.
Dostosuj plany odzyskiwania zgodnie z potrzebami, aby uwzględnić zależności, które są wykrywane podczas testowania chaosu.
Użyj wyników z eksperymentów i testów jako podstawy nowych eksperymentów i testów. W miarę powstawania nieoczekiwanych zachowań nowe testy mogą być skierowane bezpośrednio do tych zachowań i umożliwiają projektowanie strategii korygowania dla nich.
Kompromis: testowanie iniekcji błędów w środowisku produkcyjnym może być destrukcyjne i może spowodować przestój. Bądź przejrzysty dla uczestników projektu w zakresie tej możliwości i upewnij się, że masz środki zabezpieczające, aby zakończyć eksperymenty i wycofać plany, aby szybko odwrócić wprowadzone błędy. Aby zabezpieczyć się przed niezamierzonymi przestojami w środowisku produkcyjnym, upewnij się, że planujesz wystarczającą ilość nadmiarowości i że interesariusze rozumieją kompromis kosztów.
Ułatwienia platformy Azure
azure Test Plans to łatwe w użyciu, oparte na przeglądarce rozwiązanie do zarządzania testami, które zapewnia wszystkie możliwości wymagane do zaplanowanego testowania ręcznego, testowania akceptacyjnego użytkownika, testowania eksploracyjnego i zbierania opinii od uczestników projektu.
azure Chaos Studio to zarządzana usługa, która używa inżynierii chaosu w celu mierzenia, zrozumienia i poprawy odporności aplikacji i usług w chmurze. Usługa Azure Chaos Studio osiągnęła ogólną dostępność na konferencji Ignite 2023 i oferuje wiele funkcji, które ułatwiają rozpoczęcie testowania iniekcji błędów i odporności aplikacji przy użyciu infrastruktury platformy Azure.
Powiązane linki
- Tworzenie kopii zapasowych i odzyskiwanie po awarii dla aplikacji platformy Azure
- lista kontrolna na potrzeby testowania niezawodności
- Testowanie aplikacji pod kątem dostępności i odporności
Lista kontrolna dotycząca niezawodności
Zapoznaj się z pełnym zestawem zaleceń.