← Wszystkie antywzorce
Antywzorzec architektoniczny

Zgodne, bo generator nie zgłosił błędu

Opracowanie: ArchitectMentor

Zespół uznaje addytywną zmianę schematu za bezpieczną bez uruchomienia wspieranych konsumentów i sprawdzenia zachowania kontraktu.

Fikcyjny scenariusz edukacyjny. Nie opisuje konkretnej organizacji ani incydentu.

Sytuacja

Zespół dodaje opcjonalne pole do odpowiedzi API. Narzędzie porównujące OpenAPI nie zgłasza zmiany łamiącej kontrakt, więc serwer zostaje przygotowany do jednoczesnego wdrożenia dla wszystkich. Nikt nie uruchamia najstarszej wspieranej aplikacji mobilnej, która odrzuca nieznane właściwości.

Gdzie powstaje antywzorzec

Wynik jednego narzędzia zostaje uznany za pełny dowód zgodności. Kontrola schematu odpowiada na ważne, ale węższe pytanie. Nie sprawdza konfiguracji deserializatora, wygenerowanego kodu, nowych wartości enum, limitów danych ani znaczenia, jakie klient przypisał odpowiedzi.

Objawy

  • „addytywna” automatycznie znaczy „bezpieczna”;
  • lista wspieranych wersji klientów nie ma właściciela;
  • testy kontraktowe uruchamiają tylko najnowszy SDK;
  • reguła obsługi nieznanych pól istnieje w domysłach, nie w kontrakcie;
  • rollout obejmuje wszystkich konsumentów, bo rollback serwera wydaje się łatwy.

Konsekwencje

Formalnie poprawna odpowiedź może stać się nieczytelna dla działającego klienta. Awaria pojawia się po stronie konsumenta i bywa mylona z jego błędem, choć zmianę wywołał producent. Wycofanie serwera pomaga tylko wtedy, gdy zespół szybko połączy objaw z nowym polem i nadal kontroluje ekspozycję.

Lepsza decyzja

  1. Rozdziel zgodność źródłową, zgodność formatu przesyłanych danych i zgodność semantyczną. Każda potrzebuje odpowiedniego dowodu.
  2. Utrzymuj rejestr wspieranych konsumentów, bibliotek i trybów deserializacji.
  3. Dodaj testy z najstarszymi wspieranymi wersjami oraz przypadki nowych pól i wartości enum.
  4. Wdrażaj etapami i obserwuj błędy po wersji klienta. Zachowaj możliwość zatrzymania ekspozycji nowego pola.
  5. Zapisz reguły ewolucji kontraktu. Jeśli dotychczasowych zasad zgodności nie da się utrzymać, negocjuj profil odpowiedzi lub wersjonuj API.

Granica

Automatyczna kontrola specyfikacji nadal jest wartościowa. Antywzorcem nie jest narzędzie, lecz awansowanie jego zielonego wyniku do rangi dowodu, że każdy realny konsument działa. Zielony znaczek bywa uspokajający; produkcja nie ma obowiązku się nim przejmować.

Zgodność kontraktu kończy się dopiero na działającym konsumencie, nie na raporcie generatora.

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.