How Event Driven Architectures Go Wrong & How to Fix Them • Matthew Meckes • GOTO 2024

Explore common pitfalls in Event-Driven Architecture and learn practical solutions for better event design, team collaboration, and system implementation.

Key takeaways
  • Common anti-patterns in Event-Driven Architecture (EDA):

    • YOLO events: Publishing events without proper design or consideration
    • Inside-out events: Leaking implementation details across boundaries
    • Pinball events: Excessive event bouncing within domains
    • God events: Overloaded events containing too much information
    • Sparse events: Events with insufficient information
  • Best Practices for EDA:

    • Use RFC process for event schema approval
    • Create events from bounded contexts
    • Break down events by types (domain events vs state transfer events)
    • Implement anti-corruption layers for legacy system integration
    • Maintain proper documentation and standards
  • Design Recommendations:

    • Start with smaller, sparse events and grow as needed
    • Split metadata from event data
    • Use domain-driven design principles
    • Create clear boundaries between bounded contexts
    • Document architecture decisions and reasoning
  • Organizational Considerations:

    • Enable small teams to work independently
    • Balance between team autonomy and cross-organization standards
    • Invest in shared tooling and platforms
    • Focus on effective communication between teams
    • Implement proper observability and monitoring
  • Implementation Guidelines:

    • Don’t be afraid to use orchestration when needed
    • Plan for versioning from the start
    • Handle idempotency in event processing
    • Use proper event naming conventions
    • Consider event schema standardization across the organization
  • Common Challenges:

    • Managing semantic coupling between services
    • Handling duplicate events and ordering
    • Balancing between decoupling and complexity
    • Managing breaking changes across consumers
    • Maintaining consistency in event schemas