=> Request-Response § One Request => One Message Version § Format Change – Backward Compatibility – Breaking Change => Versioned API Message Broker § Asynchronous § Producer-Driven § Multiple Message Versions § Format Change??? – Multi Version Compatibility? – Future Consumer? – Offset Reset? REST vs. Message Broker Format n Format n+1 Format n+2
(Syntax) – Contract Enforcement § Support for Format Evolution – Conceptional Evolution Support – Compatibility – Prevent Breaking Changes – Limit Impact of Changes § Consumer Safety § Stability § Decouple Producer and Consumers Requirements for the Solution
Schema n can read Data n+1 § Full Backward + Forward § *_Transitive All previous Version § None 28.04.2022 Tower of Babel 15 Compatibility & Schema Evolution Compatibility Type Changes allowed Upgrade first Backward • Delete Fields • Add optional Fields • Convert mandatory Field into optional Consumers Forward • Add Fields • Delete optional Fields • Convert optional Field into mandatory Producers Full • Add optional Fields • Delete optional Fields • Convert mandatory Field into optional • Convert optional Field into mandatory Any Order None • All Changes are accepted Depends source: Confluent