Odporność chmury Flashcards
Resilience - Odporność
Zdolność do obsługi niespodziewanych sytuacji:
• Bez zauważenia tej sytuacji przez użytkownika (najlepszy przypadek)
• Z łagodną degradacją usługi (najgorszy przypadek)
Zdolność systemu do łagodnego obsługiwania awarii i przywracania działania (recovery) po awariach
Znaczenie odporności chmury
W aplikacjach chmurowych - większe prawdopodobieństwo powstania usterek
• przejściowych
• bardziej trwałych usterek.
Gdyż aplikacje chmurowe • Są najemcami zasobów chmury (multi -tenant) • Korzystają z wspólnych usług • Rywalizują o zasoby i przepustowość, • Komunikują się przez Internet • Działają na rynkowym sprzęcie
Niezbędne jest szybkie wykrywanie awarii i
szybkiego przywracanie aplikacji do działania w celu utrzymania odporności
Azure - Resiliency Design Pattern
- Ponowienie (Retry) – Ponowienie operacji przy założeniu, że awaria jest przejściowa
- Bezpiecznik automatyczny (Circuit Breaker) –chwilowe wyłączenie operacji
- Kompensacja transakcji (Compensating Transaction)
- Wybór lidera (Leader Election)
- Dyspozytor – Agent – Nadzorca (Scheduler Agent Supervisor)
- Grodzie (Bulkhead)
- Queue-Based Load Leveling
Retry pattern – Ponowienie operacji przy
założeniu, że awaria jest przejściowa
• Obsługa chwilowych awarii podczas łączenia się z usługą lub zasobem sieciowym
-> ponowne wznowienie operacji w oczekiwaniu, że niepowodzenie jest przejściowe
• Ten wzorzec może poprawić stabilność aplikacji
• Wrażliwość na przejściowe awarie, np.:
- Chwilowa utrata połączenia sieciowego
- Czasowa niedostępność usługi
- Przeterminowanie (Timeouts), które pojawiają się, gdy usługa jest zajęta.
• Jeśli żądanie nie powiedzie się po uprzednio określonej liczbie prób
- Aplikacja powinna traktować awarię jako wyjątek i odpowiednio postępować
Retry Pattern - strategie
Cancel
• Błąd nie jest przejściowy lub jest mało prawdopodobne, aby powiodło się, to
• aplikacja powinna anulować operację i zgłosić wyjątek. Na przykład błąd uwierzytelniania
Retry.
• Błąd jest nietypowy lub rzadki, może to być spowodowane niezwykłymi okolicznościami
• Aplikacja może ponowić żądanie natychmiast, ponieważ niepowodzenie powtórzenia jest mało prawdopodobne
Retry with delay.
• Jeśli usterka spowodowana dużym obciążeniem, to sieć lub usługa może wymagać krótkiego okresu, w którym problemy z połączeniem są poprawione lub zaległości
• praca jest wyczyszczona. Aplikacja powinna odczekać
Resiliency Design Pattern
Wyłącznik automatyczny (Circuit Breaker) – chwilowe wyłączenie operacji
• Obsługa błędów może wymagać sporo czasu na poprawienie połączenia z usługą zdalną lub zasobem.
• Ten wzorzec może poprawić stabilność i odporność aplikacji.
Circuit Breaker
Wyłącznik automatyczny
Automatycznie uruchamiany przełącznik
elektryczny
• Przeznaczone do ochrony obwodu elektrycznego
• Od uszkodzeń przeciążeniowych
Jego podstawową funkcją jest przerwanie
przepływu prądu po wykryciu usterki przez przekaźniki zabezpieczające.
W przeciwieństwie do bezpiecznika, który działa raz, a następnie musi być wymieniony,
• Wyłącznik automatyczny może zostać zresetowany (ręcznie lub automatycznie), aby wznowić normalną pracę.
W chmurze możliwe są awarie operacji
spowodowane przejściowymi problemami, np.:
• Powolne połączenia sieciowe
• Limity czasu
• Zasoby są przepełnione lub czasowo niedostępne
Te usterki zazwyczaj poprawiają się po krótkim czasie
• Aplikacja akceptuje, że operacja nie powiodła się i odpowiednio obsługuje tą awarię
• Wzorzec ten umożliwia wykrycie, czy usterka została naprawiona
• Jeśli tak, aplikacja może próbować wywołać operację
Wzorzec Circut breaker różni się od wzorca Retry.
- Wzorzec retry umożliwia aplikacji ponowne działanie w oczekiwaniu, że odniesie sukces.
- Wzorzec Circuit Breaker zabrania aplikacji wykonywania operacji, które prawdopodobnie nie powiodą się
Maszyna stanu wyłącznika automatycznego
Stany
- Zamknięty (Closed)
- Otwarty (Open)
- Pół-otwarty (Half-Open)
Zamknięty (Closed)
- Żądanie z aplikacji jest przekierowywane do operacji.
- Pośrednik utrzymuje liczbę ostatnich niepowodzeń, a jeśli połączenie z operacją nie powiodło się, to serwer zwiększy tę liczbę.
- Jeśli liczba ostatnich awarii przekracza określoną wartość progową w danym przedziale czasowym, serwer proxy zostanie umieszczony w stanie otwartym.
- W tym momencie serwer proxy uruchamia timeout timer, a gdy ten timer wygasa, proxy zostanie umieszczone w stanie Half-Open.
Otwarty (Open)
• Żądanie od aplikacji natychmiast kończy się niepowodzeniem, do aplikacji zwracany jest wyjątek
Pół-otwarty (Half-Open)
• Ograniczona liczba żądań może zostać przekazana
• Jeśli te żądania zakończyły się sukcesem
- Przyjmuje się, że usterka powodująca awarię została naprawiona
- Wyłącznik zostanie przełączony w stan zamknięty (licznik awarii jest resetowany).
• Jeśli żądanie nie powiedzie się, wyłącznik zakłada, że błąd jest nadal obecny
- Powraca do stanu otwartego
- Uruchamia ponownie licznik czasu, aby dać systemowi dodatkowy okres czasu do odzyskania z awarii.
• Stan pół-otwarty jest przydatny, aby uniemożliwić nagły dostęp do usług z wieloma żądaniami
• W miarę odzyskiwania sprawności usługi, może ona obsługiwać ograniczoną liczbę żądań do czasu zakończenia odzyskiwania
pełnej sprawność
• W w czasie, gdy trwa naprawa, duża liczba żądań może spowodować, że usługa przestanie działać w zadanym czasie lub przestanie działać ponownie.
Kompensacja transakcji - Compensating Transaction
• Cofa pracę wykonaną przez szereg kroków, które razem definiują ostatecznie (eventually) spójną operację, jeśli jedna lub więcej operacji nie powiedzie się.
• Operacje, które podążają za ostatecznym modelem spójności, są powszechnie dostępne w aplikacjach obsługiwanych przez chmury, które
implementują skomplikowane procesy biznesowe i przepływy pracy
Kompensacja
- zrównoważenie określonego działania innym działaniem, które znosi lub wyrównuje początkowe działanie
- Umowa barterowa
- Umowa kompensacyjna
Umowa barterowa
• wymiana towarów i/lub usług na inne, równowartościowe towary i/lub usługi bez przekazania jakichkolwiek kwot pieniędzy
pomiędzy kupującym a sprzedającym.