Historia pytania
Wraz z przejściem na architektury mikrousługowe i systemy rozproszone, znacznie wzrosło prawdopodobieństwo błędów występujących podczas interakcji między usługami, a także złożoność ich obsługi. Wczesne podejścia często nie uwzględniały niestabilności interakcji sieciowych, co prowadziło do poważnych incydentów w produkcji.
Problem
Głównym problemem jest to, że złożone scenariusze awarii, degradacji usług i błędów integracji nie są wystarczająco sformalizowane w wymaganiach. W związku z tym programiści są zmuszeni podejmować decyzje dotyczące obsługi błędów według własnego uznania, co prowadzi do różnorodności przypadków i trudności w ich testowaniu.
Rozwiązanie
Skuteczny opis obsługi błędów powinien obejmować:
Kluczowe cechy:
Czy konieczne jest opisywanie obsługi błędów technicznych w wymaganiach - czy to nie jest zadanie programisty?
Konieczne. Nieodzwierciedlona polityka obsługi błędów często prowadzi do błędów w pracy i rozbieżności. Analityk systemowy jest zobowiązany omówić zachowanie w przypadku błędów.
Czy należy opisywać przypadki, które występują niezwykle rzadko (na przykład częściowa utrata połączenia między usługami)?
Tak, ponieważ rzadko występujące błędy prowadzą do najtrudniejszych incydentów. Ich konsekwencje mogą być krytyczne dla biznesu.
Czy należy uzgadniać z biznesem komunikaty wyświetlane użytkownikom w przypadku błędów?
Tak. Poprawne, informacyjne, ale nie przesadzone lub przerażające komunikaty powinny być uzgodnione z biznesem, w przeciwnym razie cierpi doświadczenie użytkownika i lojalność.
Negatywny przypadek: W projekcie nie były opisane scenariusze obsługi przekroczeń czasowych między usługami. W wyniku niestabilnej sieci usługi "zawieszały się" bez odpowiedzi. Plusy: Szybkie wykonanie podstawowych scenariuszy. Minusy: Masowe awarie w produkcji, negatywne opinie klientów, "ręczne" zamykanie incydentów.
Pozytywny przypadek: Analityk opracował scenariusze degradacji i restartów, ponownych prób oraz poprawnych komunikatów. Plusy: Wysoka stabilność usługi w przypadku awarii, zmniejszenie liczby awarii. Minusy: Więcej czasu na opracowanie architektury scenariuszy.