Building Event-Driven Microservices - Chapter 3 - Communication and Data Contracts
The Event-Driven model heavily relies on the QUALITY of events.
Good quality events are:
- explicitly defined via contracts
- have comments
- support evolution with backward and forward compatibility
- support code generation
- breaking changes are well thought
Good events are implemented using the right tools:
- use Avro/Thrift/Protobuf formats and never use JSON!
- use the right event broker (such as Pulsar)
Good events are designed to:
- contain all the info needed by consumers
- use separate streams for each event type
- use the right data types for their fields (don’t use string for numbers, use enums, etc.)
- don’t use type field and fields based on it
- be as small as possible
- consider requirements from consumers
- not just signals - they contain all info needed by consumers
These topics are disclosed in the Chapter 3 of the book we are currently studying:
“Building Event-Driven Microservices: Leveraging Organizational Data at Scale” by Adam Bellemare
Sharing my mind map with all the details as usual:
See also:
- Designing Data-Intensive Applications - Chapter 4 - Encoding and Evolution
- Building Event-Driven Microservices - Chapter 14 - Supportive Tooling
- Building Event-Driven Microservices - Chapter 1 - Why Event-Driven Microservices
- Building Event-Driven Microservices - Chapter 5 - Event-Driven Processing Basics
- Building Event-Driven Microservices - Chapter 16 Deploying Event-Driven Microservices