W historii rozwoju rozproszonych systemów IT kwestie obsługi błędów i scenariuszy awarii przez długi czas pozostawały na drugorzędnych rolach, ustępując miejsca logice biznesowej. Jednak wzrost skali i złożoności infrastruktury z czasem pokazał, że niedopracowane scenariusze obsługi błędów prowadzą do masowych awarii i utraty danych.
Problem polega na tym, że złożone systemy doświadczają wielu typów awarii: od niedostępności poszczególnych usług po niespójność danych lub częściowe awarie kanałów komunikacyjnych. Często klienci pod „awariami” rozumieją tylko oczywiste błędy (na przykład, serwer jest niedostępny), ignorując łańcuchy błędów między usługami lub degradację doświadczeń użytkownika.
Efektywne rozwiązanie opiera się na podejściu systemowym:
Kluczowe cechy:
Jaka jest różnica między wyjątkiem na poziomie aplikacji a wyjątkiem na poziomie infrastruktury?
Bardzo często kandydaci mylą błędy biznesowe (na przykład, „użytkownik nie znaleziony”) z rzeczywistymi awariami (na przykład, „baza danych niedostępna”). Aplikacja zawsze powinna wyraźnie rozróżniać dwa typy wyjątków i zapewniać różne strategie obsługi (rollback, powiadomienia, alerty).
Jakie scenariusze awarii należy modelować dla wewnętrznego API, jeśli nie jest publiczne?
Scenariusze awarii są istotne dla wszystkich API: nawet jeśli API jest wewnętrzne, awarie są zawsze możliwe (nawet wewnątrz jednego konturu automatyzacji), i należy je wyraźnie modelować, aby sprawnie działać z niedokładnymi/nieobecnymi danymi.
Czy system powinien ukrywać wszystkie błędy przed użytkownikiem dla maksymalnego UX?
Nie, całkowite ukrywanie błędów prowadzi do dezinformacji użytkownika. Ważne jest, aby znaleźć równowagę między informacyjnością (aby użytkownik rozumiał, co robić dalej) a bezpieczeństwem (nie ujawniając szczegółów realizacji).
Negatywny przypadek: W dużym projekcie e-commerce analityk systemowy pozostawił obsługę wszystkich błędów sieciowych na łasce architektury. Przy awaryjnych aktualizacjach i awarii usługi pocztowej system nie wysyłał powiadomień o zamówieniach, a użytkownicy nie rozumieli, czy ich zamówienia zostały utworzone.
Zalety:
Wady:
Pozytywny przypadek: Analityk systemowy wraz z architektem zaprojektował osobne scenariusze dla każdej krytycznej usługi: niedostępności kolejki e-mail, awarii bramek płatniczych, degradacji usługi wyszukiwania. Opracowano wiadomości przyjazne użytkownikom dla klientów.
Zalety:
Wady: