Here you can find resources for the talk "Complexity is the gotcha of event-driven architecture"
- Part 1: Potential of EDA
- Part 2: Manage complexity with guardrails
- Part 3: Biggest gotcha of them all
- Summary
- Static architectures anchor us, may slow us down, and can appear from nowhere.
- Risk of static architectures as we face the Project paradox, this is where we make decisions up front without the knowledge we may need.
- We can use EDA to defer decisions to later, with abstractions and a evolutionary architecture.
- Many businesses are looking for speed and agility this year (view the report), EDA can help us here.
- EDA helps us build loosely coupled, high cohesion, a platform to experiment and team dependency
- One major problem is that evolutionary architecture increases complexity.
- The project paradox - Why is it that many decisions are made up front when we start projects, but our knowledge increases over time? Maybe we should push decisions back when we have more knowledge, we can do this with event-driven architectures. Here is a blog post on learning more about the project paradox
- Building Evolutionary Architectures: Principles & Practices - Dive deeper with this talk from Rebecca Parsons
There are three guardrails that can help you manage complexity:
- Behaviour first thinking
- Event evolution strategy
- Understanding coupling in events
- As we build evolutionary architectures, without managing complexity you are at risk creating a big ball of mud.
- Complexity grows over time, as we add nodes the number of channels increase. So we lean into EDA to control the channels between the nodes.
- But even with these managed channels, complexity lies within the details.
- Highly recommend favouring behaviour over implementation details. You can use EventStorming to help you identify domains, boundaries, events and more!
- Events will evolve as you understand more about your domain, you need to have a strategy in place on your teams to manage versioning.
- In this talk we discussed Backwards compatibility, Optional new fields and Parallel versions.
- Remember to understand Postels Law, be conservative in what you do and liberal in what you accept from others.
- How you consume events can couple you, understand what options you have.
- Look at bounded context mappings, these can help you.
- Remember the level of communication required between teams increases depending on which bounded context mapping you choose.
- Journey to event-driven architecture - Previous talk I did at re:Invent 2023 about how and where you should get started with EDA. This goes into many various aspects of EDA, and patterns to help you build an EDA.
- EventStorming - Explore event storming to help you identify events, domains, services and much more! Start here before building your EDA, understand behavior first.
Regardless of what you do, you will hit this problem. The fact we take this saying way to literraly in EDA, that producers should not know about consumers. This can lead to issues.
- Every article out there will suggest this, although technically correct, you need to understand the importance of governance.
- Common questions will come over time, "What events do we have?", "What’s the payload of these events?", "Who is consuming this event?", many people face this.
- Explore standards to help you overcome these issues.
- Use CloudEvents to define standards in your events.
- Use AsyncAPI to help document your EDA.
- Explore how EventCatalog can help you take this further, visualize your events, and build a static website for your EDA.
- Join EventCatalog community. I'm looking to build v2 of EventCatalog and help people document their EDA, but I can't do this on my own. Join the project let's fix the issue!
- To get the full potenital of EDA you need to manage complexity.
- Put guardrails in place to manage complexity over time.
- Complexity comes in all shapes, there is no avoiding it, but you can manage it.
Want to learn more about EDA? Then you can download my free book about EDA. Over 60 bite sized visuals to help you learn more about event-driven architecture.
Want to learn more, I have a few more talks on my website that can help you dive into EDA.
EventCatalog helps you document your event-driven architectures.
I am currently working on v2 with many more features, new framework, support for 1000s of events and much more.
EventCatalog will support some core enterprise features soon. If you want to understand enterprise support with EventCatalog please get in contact.
Reach out to me if you would like me to run this talk at your event.
Thanks!