← 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

Porozmawiajmy o tym artykule

Podziel się uwagą lub zanonimizowanym przykładem. Komentarze sprawdza AI przed publikacją. Niejednoznaczne przypadki trafiają do moderatora.

Oceniaj pomysły, nie osoby. Nie podawaj informacji poufnych ani danych innych osób. Przed wysłaniem przeczytaj informację o danych.