← Wszystkie antywzorce
Antywzorzec architektoniczny

Wszystkie komponenty są zielone, więc usługa działa

Opracowanie: ArchitectMentor

Zespół sumuje health-checki komponentów i nazywa wynik dostępnością, choć przyjęta praca nie osiąga stanu końcowego.

Fikcyjny scenariusz edukacyjny. Nie opisuje konkretnej organizacji ani incydentu.

Sytuacja

Dashboard pokazuje zielone API, bazę i broker. Endpoint zdrowia odpowiada 200, więc raport dostępności usługi ma 99,99%. Tymczasem zatrzymany konsument nie kończy przyjętej pracy, a użytkownicy widzą stan „w realizacji” bez dalszego postępu.

Gdzie powstaje antywzorzec

Wyniki diagnostyki elementów zostają zsumowane i nazwane miarą usługi. Nikt nie zdefiniował, czy obietnicą jest samo przyjęcie polecenia, czy również osiągnięcie stanu końcowego w określonym czasie. Zielony raport odpowiada więc poprawnie na techniczne pytanie i błędnie na pytanie biznesowe.

Sygnały ostrzegawcze

  • dostępność procesu jest średnią dostępności jego komponentów;
  • odpowiedź HTTP 200 kończy pomiar, chociaż dalsza praca jest asynchroniczna;
  • monitorowana jest długość kolejki, ale nie wiek najstarszej pracy ani tempo kończenia;
  • alarm nie rozróżnia przyjęcia, ukończenia i trwałego błędu;
  • nie istnieje bezpieczna próba całej ścieżki ani test zatrzymania konsumenta.

Konsekwencje

Operatorzy widzą zdrową infrastrukturę podczas realnego przerwania usługi. Skalują niewłaściwy komponent, a czas wykrycia rośnie. Raport SLA może wyglądać dobrze, choć użytkownik nie otrzymuje wyniku. Po wznowieniu niekontrolowane ponowienia mogą utworzyć podwójne skutki. To możliwe skutki modelowego układu, nie relacja z awarii.

Lepsza decyzja

  1. Oddziel trwałe przyjęcie pracy od jej ukończenia i nazwij stany końcowe.
  2. Zachowaj liveness i readiness do diagnostyki, ale dodaj mierniki postępu: wiek pracy, tempo zakończeń i błędy trwałe.
  3. Zdefiniuj SLI wyniku na granicy użytkownika oraz uzgodnione okno czasowe.
  4. Wykonuj kontrolowaną próbę syntetyczną z nieszkodliwymi danymi i sprawdzaniem stanu końcowego.
  5. Przetestuj zatrzymanie i wznowienie konsumenta, w tym brak duplikatów oraz możliwość rozliczenia każdej przyjętej pracy.

Granica

Test end-to-end nie zastępuje monitoringu komponentów. Informuje, że obietnica nie jest spełniana; sygnały warstwowe pomagają znaleźć przyczynę. Potrzebne są oba poziomy.

Zielony komponent jest wskazówką. Zielony wynik procesu wymaga dowodu.

Podstawy: dostępność procesu · Ćwiczenie