Zmiany w API

Wewnętrzne changelogi API: co się zmienia dla innego zespołu

5 min czytania

Każdy inny artykuł w tym hubie zakłada, że osoba wywołująca API jest spoza firmy: inżynierka klientki, partnerka, ktoś, kto sam znalazł dokumentację. Wiele API ma zupełnie inny typ wywołującego, zespół w sąsiednim pokoju albo dwa piętra dalej, i to zmienia rachunek tego, co changelog jest mu winien, bo wiadomość na Slacku dotrze do niego, a zgłoszenie do supportu zwykle w ogóle nie powstaje. Większość zespołów wyciąga z tego wniosek, że wewnętrzne API nie potrzebują changeloga. To, czego naprawdę potrzebują, to inny changelog.

Co odróżnia changelog wewnętrznego API od publicznego?

Odbiorcy są osiągalni bezpośrednio, co usuwa główny powód istnienia większości publicznych changelogów API: nadawanie do wywołujących, z którymi nie można skontaktować się indywidualnie. Zespół właścicielski wewnętrznego API zwykle dokładnie wie, które inne zespoły je wywołują, czasem aż do konkretnego serwisu. To sprawia, że domyślnym wyborem staje się ukierunkowana wiadomość, nie publiczny feed, i dlatego wewnętrzne API tak często kończą bez żadnego changeloga: zespół właścicielski powiadamia dwa, trzy zespoły, które pamięta, zakładając, że to obejmuje wszystkich.

Publiczny changelog APIWewnętrzny changelog API
Kto go czytaDowolny zewnętrzny wywołujący, zwykle nieosiągalny bezpośrednioMały, zwykle znany zbiór wewnętrznych zespołów
Domyślny kanałStrona i feedWiadomość do zespołów wywołujących, najlepiej też strona
Największe ryzykoWywołujący całkowicie przegapia wpisZespół właścicielski zapomina o wywołującym, o którego istnieniu nie pamięta
Co zastępuje “nie wiemy, kto nas wywołuje”Nic; publikuj szerokoPrawdziwy, na bieżąco aktualizowany rejestr wywołujących

Dlaczego “po prostu poinformujemy zespoły, które nas wywołują” zawodzi?

Bo zbiór wywołujących nigdy nie jest tak mały ani tak statyczny, jak pamięta zespół właścicielski. Serwis zbudowany dla jednej konsumentki zyskuje drugiego wywołującego sześć miesięcy później, przez integrację, której nikt nie ogłosił, a mentalna lista “kto nas wywołuje” zespołu właścicielskiego jest teraz błędna, bez czyjejkolwiek świadomości. Ta porażka jest zwyczajna i częsta, domyślny rezultat polegania na pamięci zamiast na rejestrze, a nie oznaka niczyjej niedbałości. Czym jest breaking change opisuje, jak decydować, czy zmiana API w ogóle liczy się jako łamiąca; przypadek wewnętrzny dodaje do tego drugie, trudniejsze pytanie: kogo poinformować.

Czy wewnętrzne API w ogóle potrzebuje strony changeloga w publicznym stylu?

Zwykle tak, nawet jeśli głównym kanałem jest wiadomość bezpośrednia. Strona daje bezpośredniej wiadomości coś, do czego może się odnieść, więc powiadomienie może być krótkie (“breaking change w /v2/accounts, szczegóły tutaj”) zamiast próbować zmieścić całe wyjaśnienie w wiadomości na czacie, która zniknie w przewijaniu. Staje się też tym, co nowy zespół, albo taki, który przegapił bezpośrednią wiadomość, może sprawdzić, gdy jego integracja się psuje i próbuje zrozumieć dlaczego. Strona nie musi być dopracowana ani publiczna; musi być możliwa do zalinkowania i przetrwać wątek na Slacku, który ją ogłosił.

Kto właściwie utrzymuje listę wywołujących?

Zespół właścicielski, i trzeba to traktować jako prawdziwy artefakt, nie plemienną wiedzę. Najtańsza wersja to plik w repozytorium samego API, krótka lista serwisów konsumujących z odpowiedzialną osobą na wpis, aktualizowana za każdym razem, gdy powstaje nowa integracja, ta sama dyscyplina co przy każdej deklaracji zależności. Alternatywa, dopytywanie się przed każdym breaking change, działa aż do tego jednego razu, gdy ktoś zapomni zapytać właściwą osobę, a wewnętrzne API, które po cichu się psuje dla jednego zespołu, to mniejszy incydent niż publiczny, ale wciąż incydent, zwykle odkrywany przez dyżur tego zespołu, a nie przez właścicielkę API.

# consumers.yml
- service: billing-service
  owner: "#team-billing"
  since: 2026-03-01
- service: reporting-pipeline
  owner: "#team-analytics"
  since: 2026-06-14

Taki plik zamienia “kogo musimy poinformować” z pytania w wyszukiwanie. Narzędzia zbudowane dokładnie pod ten problem, jak katalog serwisów Backstage, modelują API jako pełnoprawne encje z zadeklarowanymi konsumentami z tego samego powodu: gdy organizacja ma wystarczająco dużo wewnętrznych serwisów, pamięć nikogo o tym, kto co wywołuje, sama z siebie przestaje być dokładna, i coś musi trzymać ten rejestr zamiast niej. Dokumentacja narzędzia, które już wewnętrznie prowadzicie, to zwykle właściwe miejsce, by sprawdzić, zanim zbuduje się własne, autorskie rozwiązanie.

Co należy do wewnętrznego wpisu changeloga, czego nie potrzebowałby publiczny?

Więcej operacyjnej konkretności, bo czytelniczka to inna inżynierka, która będzie działać na tej podstawie w ramach tej samej infrastruktury, nie czytać to jako podsumowanie. W jakich środowiskach zmiana jest na żywo i kiedy, bo wewnętrzne serwisy często są promowane przez etapy, których publiczny wywołujący nigdy nie widzi. Czy zmiana wymaga aktualizacji konfiguracji lub biblioteki klienckiej po stronie konsumentki, sformułowanej jako komenda, jeśli taka istnieje. I, ponieważ wewnętrzni wywołujący często mogą uzgodnić poprawkę bezpośrednio z zespołem właścicielskim, wskazana z imienia osoba kontaktowa zamiast kanału supportu: “daj znać @marii, jeśli to coś zepsuje” to całkowicie rozsądna linijka w wewnętrznym wpisie i dziwna w publicznym changelogu API.

Czy to samo dotyczy changeloga w monorepo?

To zaostrza ten sam problem, zamiast go zastępować. Changelogi monorepo opisuje, kiedy pakiet potrzebuje własnego changeloga; wewnętrzne API, będące jednym z kilku pakietów w monorepo, i tak potrzebuje jawnego śledzenia swoich konsumentów, bo dzielenie tego samego repozytorium z wywołującymi nie oznacza, że zauważą zmianę, dopóki coś im nie wskaże, żeby spojrzeli. Bliskość w repo to nie to samo co bliskość w uwadze.

FAQ

Czy czysto wewnętrzne API potrzebuje changeloga, jeśli ma tylko jednego wywołującego? Ledwo, i bezpośrednia wiadomość do tego jednego zespołu zwykle wystarcza. Changelog zaczyna się opłacać, gdy jest więcej niż jeden wywołujący, albo gdy lista wywołujących choć raz zaskoczyła zespół właścicielski, bo to znak, że sama pamięć nie jest już wiarygodna.

Czy wewnętrzne zmiany API powinny przechodzić tę samą recenzję co publiczne? Sformułowanie może być lżejsze, bo czytelniczka jest koleżanką, a nie zewnętrzną wywołującą, ale decyzja, czy zmiana jest łamiąca, zasługuje na tę samą staranność w obu przypadkach. Wewnętrzna wywołująca wciąż ma kod produkcyjny zależny od starego zachowania.

Jak odkryć, kto wywołuje wewnętrzne API, jeśli nigdy tego nie śledzono? Logi serwera albo dane ruchu z service mesh to szczera odpowiedź, jeśli nigdy nie prowadzono rejestru konsumentów; potraktuj to odkrycie jako moment, by taki zacząć, nie jako jednorazowe porządki.

Czy wiadomość na Slacku wystarczy, czy wewnętrzna zmiana i tak potrzebuje formalnego wpisu w changelogu? Jedno i drugie, dla wszystkiego, co nie jest czysto addytywne. Wiadomość jest tym, co czyta się na czas; wpis jest tym, co zespół badający problem tygodnie później, który nigdy nie widział wiadomości, i tak może znaleźć.


Twierdzenia techniczne w tym artykule nie zostały niezależnie zweryfikowane. Jeśli coś się nie zgadza, daj nam znać, a poprawimy to.

Powiązane w changeloop: Dokumentacja dla deweloperów, Porównanie narzędzi do changeloga

changeloop
Zespół, który tworzy changelog zamykający pętlę. Użytkownicy o coś proszą, Twój zespół to dostarcza, proszący się dowiaduje.