Protože se služby nasazují nezávisle, nemůžete nikdy předpokládat, že se volající upgradují synchronně. Verzování API a zpětná kompatibilita umožňují výrobcům se vyvíjet bez porušení stávajících spotřebitelů.
Strategie verzování
| Strategie | Příklad |
|---|---|
| cesta URI | GET /v2/orders/42 |
| hlavička | Accept: application/vnd.api.v2+json |
| evoluce schématu | přidání polí, nikdy neodstraňovat/přejmenovat |
Upřednostňujte aditivní (neporušující) změny
text
NON-BREAKING (safe):
✓ add a new optional field
✓ add a new endpoint
✓ add a new enum value (if clients tolerate unknowns)
BREAKING (needs a new version):
✗ remove or rename a field
✗ change a type or make a field required
✗ change semantics of an existing field
Protobuf je pro to vhodný
proto
message Order {
string id = 1;
double total = 2;
string currency = 3; // NEW field 3 — old clients ignore it safely
}
Čísla polí, ne jména, definují drátový formát, takže přidání polí je zpětně kompatibilní.
Životní cyklus
text
Release v2 ─▶ run v1 + v2 together ─▶ migrate consumers ─▶ deprecate v1 ─▶ remove v1
Léčka
Nikdy neodstraňujte verzi, pokud ji skutečný provoz stále používá. Sledujte použití před vyřazením.
Proč na tom záleží
Nezávislá nasaditelnost funguje pouze v případě, že výrobce může odeslat změnu bez koordinace vydání každého spotřebitele.
Návrhování aditiv změn a podpora starých verzí během migrace je to, co zachovává tuto nezávislost místo vynucení křehkých velkých upgradů.
