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
- Rozdziel zgodność źródłową, zgodność formatu przesyłanych danych i zgodność semantyczną. Każda potrzebuje odpowiedniego dowodu.
- Utrzymuj rejestr wspieranych konsumentów, bibliotek i trybów deserializacji.
- Dodaj testy z najstarszymi wspieranymi wersjami oraz przypadki nowych pól i wartości enum.
- Wdrażaj etapami i obserwuj błędy po wersji klienta. Zachowaj możliwość zatrzymania ekspozycji nowego pola.
- 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.