GH GambleHub

Kompatybilność i aktualizacje API

1) Podstawy kompatybilności

Dodatek-pierwszy: dodać nowy bez łamania starych (nowe opcjonalne pola/punkty końcowe, nowe wartości enum).
Stabilne umowy: „co obiecano w specyfikacji utworów;” Zachowanie udokumentowane.
Wstecz> Naprzód: priorytet kompatybilności wstecznej; do przodu jest dozwolone przez czytniki tolerancyjne.
Dokumenty są podstawowe: jedynym źródłem prawdy jest wersja rejestru systemu (OpenAPI/AsyncAPI/Proto).
Wyraźna ewolucja: łamanie - tylko poprzez nową główną wersję i przewodnik migracyjny.

2) Taksonomia zmian

2. 1 Kompatybilny (MINOR/PATCH)

Dodaj opcjonalne pola/nagłówki, nowe punkty końcowe, parametry zapytania z domyślnymi.
Zwiększenie limitów ('page _ size', TTL), wyjaśnienie błędów bez zmiany kodów/semantyki.
Dodaj wartości enum, jeśli klienci ignorują „nieznane” (tolerancyjny czytnik).

2. 2 Dwuznaczne (behawioralne)

Zmiana domyślności, kolejność sortowania, cienkie czasy, kwoty - może „łamać” logikę biznesową. Wymaga ogłoszenia RFC + i kanarów.

2. 3 Łamanie (MAJOR)

Zmień nazwę/usuń pola, zmień typ/format, zastąpić kody błędów, odwrócić niezgodność umów/systemów uwierzytelniania.

3) Polityka weryfikacyjna

Strategia: „wersioning ścieżki” („/v1 ”, „/v2”).
Minor/patch: „dodać, nie łamać”.
Datowane nagłówki (opcjonalnie): 'X-API-Version-Date' dla miękkich zmian przyrostowych.
Typy mediów (Op.): "Akceptuj: aplikacja/vnd. acme. v1 + json 'do drobnej granulacji.

4) Depresje i zachód słońca

4. 1 Nagłówki komunikacyjne


Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </guides/reports-v2>; rel="successor-version"

4. 2 Polecenie odstąpienia

1. Ogłoszenie w portalu/lista mailingowa/notatki SDK wydania.
2. Okno ostrzegawcze ≥ 90-180 dni.
3. Statusy w desce adopcyjnej.
4. Po zachodzie słońca - 410 Odszedł lub „tylko do odczytu” tryb na okres łaski, jeśli uzgodnione.

5) Migracja i współistnienie wersji

Podwójne pisanie/podwójne odczytywanie w okresie przejściowym i pojednanie ze sprawozdaniami.
Adaptery (tymczasowe): brama konwersji starego ładunku → nowe systemy; żywotność adaptera jest ograniczona.
Pomoc SDK: wydania, które obsługują obie wersje, z ostrzeżeniami o zmniejszeniu (1 czas na proces).
Flagi funkcji: włączenie nowych semantyków zgodnie z listą kluczy/najemców.

6) Kompatybilność do tyłu i do przodu

6. 1 Wsteczny (starzy klienci i nowy serwer)

Nie zmieniaj formatów/obowiązkowych.
Nowe pola są tylko opcjonalne.
Błędy - old 'error _ code', dodaj nowe kody, nie zastępuj.

6. 2 Naprzód (nowi klienci i stary serwer)

Sprawdź możliwości za pomocą 'OPTIONS '/'/versions'.
Zachowanie Grace: Klient musi tolerować brakujące cechy.

7) Umowy i automatyczne kontrole

Rejestr: przechowywać wersje schematu; PR digs → breaking/non-breaking reports.
Linter: nazwy/typy, idempotencja, paginacja, stabilne kody.
CDC (Consumer-Driven Contracts): Testy integratora w CI dostawcy (Pakt i analogi).
Bramka: PR jest zablokowany podczas łamania bez 'major bump '/RFC.

Przykład kroku CI:
yaml
- name: API Diff run: api-diff --from main --to $PR_SHA --fail-on=breaking --format junit --out diff. xml

8) Przedłużenie kanaryjskie i odwrotne

Kanaryjski: 10% → 25% → 50% → 100% ruchu; auto-rollback na degradacji SLO (5xx/latency/429).
Klucze beta: dostęp do nowych wersji według listy dopuszczalnej.
Zwolnienie zamrożenie: błąd-budżet podczas spalania.
Analityka akceptacji: udział ruchu/klientów w nowej wersji, czas migracji.

9) Szczegółowa zgodność: błędy, paginacja, idempotencja

9. 1 Błędy

Nie zmieniaj statusów HTTP w istniejących skryptach.
„error _ code” - stabilny; nowe kody tylko dodać.
'application/problem + json' jest jednym formatem.

9. 2 Paginacja

Przełącz na kursor/klawisz = MINOR, jeśli obsługiwany jest stary 'offset/limit'.
Dokumentuj rodzaj „(updated_at,id)” i stabilność kursora.

9. 3 Idempotencja

Do napisania - 'Idempotency-Key' + '409 IDEMP_REPLAY' w przypadku konfliktu.
Migracja nie powinna zmieniać semantyki idempotencji.

10) Transformacje bramowe (w stosownych przypadkach)

Mapa v1 → v2 pola, normalizacja błędów, konwersja danych/formatów pieniędzy.
Poręcze: transformacje są przezroczyste i logowalne; nie ukrywać łamania, ale używać jako ograniczony w czasie most.

11) Komunikacja i portal

Changelog i inne produkty („dodane/zmienione/deprecated/deleted/fixed”).
Karta wersji: status (beta/GA/zdeprecated), data zachodu słońca, linki do przewodników.
Haki internetowe powiadomień: "deprecacja. uwaga „,” wersja. zwolniony „,” plan. zmiana ".
Notatki do wydania SDK + baner portalu.

12) Wskaźniki sukcesu

Wskaźnik adopcji v2 (na żądanie/klienta).
Incydenty wsteczne.
Mix błędów (4xx/5xx/429 akcji) przed/po zwolnieniu.
Mediana czasu do przyjęcia.
Obciążenie pomocnicze (bilety/tydzień).
Koszt do obsługi.

13) Szablony i przykłady

13. 1 Tytuły wersji i dekrety


X-API-Version: v1
Deprecation: true
Sunset: 2026-03-31T00:00:00Z
Link: </v2/reports>; rel="successor-version"

13. 2 Polityka wersji (fragment YAML)

yaml versioning:
strategy: "path"
compatibility:
minor: "additive-only"
patch: "bugfix/perf, no schema change"
deprecation:
min_notice_days: 120 rollout:
canary_steps: [10,25,50,100]
rollback_checks: ["5xx_rate","p95_latency","429_rate","adoption"]

13. 3 OpenAPI Field Append Compatible

yaml components:
schemas:
Report:
type: object required: [id, createdAt]
properties:
id: { type: string }
createdAt: { type: string, format: date-time }
cursor: { type: string, description: "optional for v1. 2+" } # additive

14) Lista kontrolna wydania (MINOR/MAJOR)

NIELETNI

  • DIFF: non-breaking, linter green
  • Aktualizacja dokumentacji/SDK (przykłady/kodeki)
  • Canary + auto-SLO rollback
  • Comm Plan, strona portalu
  • Tablice odbioru i błędu

MAJOR

  • RFC/ADR, data zachodu słońca i ≥ 90 okien -180 dni
  • Most i przewodnik wędrowny v1 i v2
  • Podwójne zapisy/odczyty i pojednania
  • SDK z obydwoma wpisami API +
  • Pilot z kluczowymi integratorami

15) Plan realizacji (3 iteracje)

1. Fundacja (2 tygodnie):

Rejestr schematów, łączy i auto-diff w CI; polityka kompatybilności; Tytuły „Deprecation/Sunset”.

2. Zarządzane wydania (3-4 tygodnie):

Kanarki, flagi funkcyjne, wpisy SLO; portal wersji; Wersje SDK z obsługą 2 gałęzi.

3. Automatyzacja i skala (ciągła):

Testy CDC konsumentów w CI, prognoza zachodu słońca na temat trendów adopcyjnych, automatyczne powiadomienia i przypomnienia.

16) Mini-FAQ

Czy mogę zmienić typ pola bez większego?
Nie, nie jest. Nawet „stroka → chislo” łamie. Wprowadź nowe pole, stare jest zdeprecate.

Enum: czy można dodać wartości?
Tak, jeśli klienci są tolerancyjni. W przeciwnym razie - najpierw alert i beta.

Ile trzymać starą wersję?
Dotychczas utrzymano przyjęcie nowego ≥ 95%. Ustal termin w polityce.

Razem

Kompatybilność API jest dyscypliną: podejście addytywne, formalne schematy i siatki, uwolnienia kanarkowe, wyraźne spadki i zarządzane migracje. Skonsoliduj politykę zmian, automatyzuj kontrole i komunikację, mierz adopcję - a Twoje aktualizacje przestaną łamać klientów, a szybkość ewolucji wzrośnie bez utraty niezawodności.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.