You need to add one field to an event and remove another, and five teams consume it. How does that roll out?
Answer
Short answer
Additive changes with defaults are safe, removals are not, so split every removal into deprecate-then-delete with evidence that nobody reads the field. Register the schema, pick a compatibility mode deliberately, and note that backward compatibility requires consumers to deploy first.
This is event driven schema evolution. Good event driven design assumes old and new consumers coexist, so schema evolution must be additive, versioned, observable, and reversible. Weak schema evolution breaks consumers by reusing a field name or changing meaning in place. Strong event driven systems treat schema evolution as a compatibility contract across teams.
Event driven ownership means every producer treats compatibility as part of the release.
Was this answer helpful?
Likely follow-ups
- A field must change type from string to integer. What is the migration?
- When is publishing to a new topic better than evolving the schema in place?
- Who owns the schema, the producing team or a central registry team, and what goes wrong either way?
- Your event carries only an identifier and consumers call back for the detail. What has that bought and cost you?
Related questions
- Your services talk through events and one consumer has been down for an hour. What has it missed, and how does it catch up?hardAlso on event-driven and kafka6 min
- Your consumer-driven contract test passes in CI, but production rejects a request because a supposedly optional field is missing. What did the contract testing actually miss?hardAlso on contract-testing4 min
- Service A needs something from service B. When should that be a synchronous call and when should it be an event?mediumAlso on event-driven4 min
- Two teams own two services that talk to each other. How do you stop one breaking the other without running both together in a shared environment?mediumAlso on contract-testing4 min