A waste-collection routing API adds a new optional ETA field for newer mobile clients but also renames a required stop-id field that older kiosk clients still send. Which evolution practice keeps independent deployability real?
Select an answer to reveal the explanation.
Short Explanation
Contracts are like bus route numbers posted around town: adding a new optional stop sign is usually fine, but renaming the route overnight strands last year’s maps. Backward-compatible evolution keeps independent deployability real. Breaking renames need deliberate versioning.
Full Explanation
Independent deployability for the waste-collection routing API stays real when the published interface evolves in a backward-compatible way: additive optional fields such as a new ETA are usually safe for older kiosk clients, while renaming a required stop-id field strands callers that still send the old name unless you version carefully or dual-publish during a transition. Contracts behave like posted bus route numbers—new optional information is fine; overnight renames break last year’s maps.
Renaming or removing fields freely whenever the owning team prefers cleaner names prioritizes aesthetics over callers still in production and breaks independent deployability. Requiring every caller to deploy in the same release train as the API on every field change recreates lockstep releases and abandons the point of separate services. Deleting all previous response shapes nightly so clients always fetch a fresh contract guarantees breakage for any client that is not redeployed on that same cadence.
Exam caveat: additive optional evolution is the default safe path; breaking renames need an explicit versioning or dual-field transition strategy. API Gateway deployment objects are Domain 3 concerns, not the core of this contract-evolution item.
Operational check: deploy the API with the new optional ETA while keeping the existing stop-id field, verify old kiosk clients still succeed, and only retire the old field after callers migrate or a versioned endpoint is cut over.