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.
Earlier this year the book club of our company has studied excellent book: Martin Kleppmann - Designing Data-Intensive Applications This is the best book I have read about building complex scalable software systems. 💪 As usually I prepared an overview and mind-map. Chapter 4: What is evolvability. Backward and Forward compatibility Approaches to encode data: JSON, XML, and their binary variants Thrift and Protobuf Apache Avro Models of data flow Through databases Through services: REST, SOAP, RPC and the future Through message brokers - when they are better and when they are not Much more details in the mind-map: