We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
So You Want to Build An Event Driven System? - James Eastham - NDC Oslo 2024
Learn essential patterns and practices for building event-driven systems, including schema design, coupling considerations, and deployment strategies for modern architectures.
- 
    Event-driven architecture (EDA) is fundamentally a communication pattern between services, using business events to drive functionality 
- 
    Events are immutable facts that have happened in the past and cannot be changed. There are two main types: - Notification events (thin events) - lightweight packets with minimal data
- State transfer events (fat events) - carry more complete state information
 
- 
    Schema design and evolution is critical: - Event schema is the highest form of coupling in EDA
- Use versioning and deprecation dates for breaking changes
- Be conservative in what you send, liberal in what you accept
- Consider using standards like CloudEvents specification
 
- 
    Start small when adopting EDA: - Begin with one small integration point
- Don’t try to make entire system event-driven overnight
- Pick services that aren’t mission-critical for initial implementation
 
- 
    Key patterns to consider: - Transactional outbox pattern for reliable event publishing
- CQRS (Command Query Responsibility Segregation) for separating reads/writes
- Claim check pattern for handling large payloads
- Async commands for request/response scenarios
 
- 
    Handle asynchronous challenges: - Implement proper error handling and retry logic
- Consider rate limiting for consumers
- Plan for eventual consistency
- Maintain observability through distributed tracing
 
- 
    Focus on business language and events: - Use event storming to identify key business events
- Model events using business terminology
- Events should tell the story of your business
 
- 
    Consider coupling carefully: - Some coupling is necessary and acceptable
- Aim for low coupling and high cohesion
- Services should be unaware of downstream consumers
- Maintain independence between services