We started pushing more data through event logs this year. JSON was easy. Until it wasn't.
Problems:
- Extra fields broke consumers
- Enums misaligned across teams
- Schema changes became blockers
We moved to Protobuf + schema registry, versioned like APIs, with backward and forward compatibility rules.
Treating schema as a shared contract brought more stability than any retry logic ever could.