176 lines
8.7 KiB
HTML
176 lines
8.7 KiB
HTML
<!-- omit in toc -->
|
||
<h1 id="awesome-event-driven-architecture-awesome">Awesome Event-Driven
|
||
Architecture <a href="https://awesome.re"><img
|
||
src="https://awesome.re/badge.svg" alt="Awesome" /></a></h1>
|
||
<p>A curated list of awesome articles and resources to learn about
|
||
event-driven architecture.</p>
|
||
<p>Event-driven architecture is a software architecture approach where
|
||
services collaborate by publishing and subscribing to events. This
|
||
eliminates runtime coupling of services.</p>
|
||
<!-- omit in toc -->
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#-articles">📕 Articles</a>
|
||
<ul>
|
||
<li><a href="#foundational">Foundational</a></li>
|
||
<li><a href="#experience-reports-and-practicalities">Experience Reports
|
||
And Practicalities</a></li>
|
||
</ul></li>
|
||
<li><a href="#-videos">📺 Videos</a>
|
||
<ul>
|
||
<li><a href="#foundational-1">Foundational</a></li>
|
||
<li><a href="#experience-reports-and-practicalities-1">Experience
|
||
Reports And Practicalities</a></li>
|
||
</ul></li>
|
||
<li><a href="#related-topics">Related Topics</a></li>
|
||
</ul>
|
||
<h2 id="articles">📕 Articles</h2>
|
||
<h3 id="foundational">Foundational</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://medium.com/russmiles/going-events-first-for-microservices-with-event-storming-and-ddd-8614437486f0">Going
|
||
“Events-First” for Microservices with Event Storming and DDD</a> - By
|
||
Russ Miles, October 2016. <em>“It is <strong>not the things</strong>
|
||
that matter in early stages of design - <strong>it is the things that
|
||
happen</strong>.”</em></li>
|
||
<li><a
|
||
href="https://hackernoon.com/events-as-first-class-citizens-8633e8479493?gi=5ecff3301dfa">Events
|
||
As First-Class Citizens</a> - By Randy Shoup, January 2018. Focusses on
|
||
the most important part of EDA: The actual events.</li>
|
||
<li><a
|
||
href="https://www.confluent.io/blog/journey-to-event-driven-part-1-why-event-first-thinking-changes-everything/">Why
|
||
Event-First Programming Changes Everything</a> - By Neil Avery, January
|
||
2019. Somewhat lengthy article that’s great in painting the “big
|
||
picture”.</li>
|
||
<li><a
|
||
href="https://medium.com/microservicegeeks/introduction-to-event-driven-architecture-e94ef442d824">Introduction
|
||
to Event-Driven Architecture</a> - By Kacey Bui, February 2021. Good
|
||
overview of the basics.</li>
|
||
</ul>
|
||
<h3 id="experience-reports-and-practicalities">Experience Reports And
|
||
Practicalities</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://barryosull.com/blog/event-granularity-modelling-events-in-event-driven-applications/">Event
|
||
Granularity: Modelling events in event driven applications</a> - By
|
||
Barry O’Sullivan, December 2017. About finding the right granularity for
|
||
events.<br />
|
||
</li>
|
||
<li><a
|
||
href="https://blog.frankdejonge.nl/the-different-types-of-events-in-event-driven-systems/">The
|
||
different types of events in event-driven systems</a> - By Frank de
|
||
Jonge, February 2022. There are different approaches to classifying
|
||
events - this is a very good one.</li>
|
||
<li><a
|
||
href="https://blog.frankdejonge.nl/reliable-event-dispatching-using-a-transactional-outbox/">Reliable
|
||
event dispatching using a transactional outbox</a> - By Frank de Jonge,
|
||
February 2022. Transactional outbox is a crucial pattern for services
|
||
basing their persistence on CRUD/RDBMS.</li>
|
||
<li><a
|
||
href="https://medium.com/mcdonalds-technical-blog/behind-the-scenes-mcdonalds-event-driven-architecture-51a6542c0d86">Behind
|
||
the scenes: McDonald’s event-driven architecture</a> - From the
|
||
McDonald’s tech blog, August 2022. Not very detailed, but an easily
|
||
digestible case study about event-driven architecture at scale. Listing
|
||
this here is not an endorsement of their products. There’s a <a
|
||
href="https://medium.com/mcdonalds-technical-blog/mcdonalds-event-driven-architecture-the-data-journey-and-how-it-works-4591d108821f">second
|
||
part</a>, too.</li>
|
||
<li><a
|
||
href="https://medium.com/wix-engineering/event-driven-architecture-5-pitfalls-to-avoid-b3ebf885bdb1">Event
|
||
Driven Architecture — 5 Pitfalls to Avoid</a> - By Natan Silnitsky,
|
||
August 2022. Especially when you only just get started, check this to
|
||
spare you some frustration later. You might also want to check the
|
||
“Further Reading” section at the end.</li>
|
||
<li><a
|
||
href="https://medium.com/@kris_22373/5-pitfalls-to-avoid-when-implementing-an-event-driven-architecture-7fb04d7fa7ca">5
|
||
pitfalls to avoid when implementing an Event-Driven Architecture</a> -
|
||
By Kris Van Vlaenderen, January 2024. Sounds very similar to the
|
||
previous one. But it’s not a case of duplicate events - it’s actually 5
|
||
different pieces of advice.</li>
|
||
</ul>
|
||
<h2 id="videos">📺 Videos</h2>
|
||
<h3 id="foundational-1">Foundational</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=SKXS2h3MdPM&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Core
|
||
Decisions in Event-Driven Architecture</a> - By Duana Stanley, October
|
||
2019. Overall a great talk, definitely worth watching. Below are some
|
||
minor issues I have with it.
|
||
<ul>
|
||
<li>The advice to use ids in events to refer to other entities is not
|
||
wrong, but needs deeper discussion.</li>
|
||
<li>I don’t like the term “command events”, something is either a
|
||
command or an event.</li>
|
||
<li>In the end she hints at Kafka as an event store, I don’t think
|
||
that’s good idea.</li>
|
||
</ul></li>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=A_mstzRGfIE&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Event-Driven
|
||
Architectures Done Right</a> - By Tim Berglund, May 2021. Good overview,
|
||
clear presentation.</li>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=9guR3CBTG44&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Event
|
||
Driven Architecture & Governance in Action</a> - By Wim Debreuck,
|
||
June 2023. A talk that goes beyond the technical fundamentals, into the
|
||
architecture and design process of event-driven applications. The shown
|
||
approach might not be universal, but provides important insights. I
|
||
especially like the clarity around business events.</li>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=Fb_0UOD2X2I&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Event-Driven
|
||
Architecture Explained in 15 Minutes</a> - By Dave Farley, July 2024.
|
||
Watching videos by Dave Farley is always time well spent, and his short
|
||
take on event-driven architecture is no exception.</li>
|
||
</ul>
|
||
<h3 id="experience-reports-and-practicalities-1">Experience Reports And
|
||
Practicalities</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=wM-dTroS0FA&t=493s&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">EDA
|
||
in Practice: Building an eCommerce Platform at Cinch</a> - By Toli
|
||
Apostolidis, September 2022. You can ignore the first 8 minutes and 15
|
||
seconds (in fact the link will skip them), they are mostly promotion for
|
||
AWS. But from there on follows a good talk on real-world experiences
|
||
with event-driven architecture.</li>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=1dWJO31wpV8&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Shifting
|
||
Gears: From Events to Event-Driven</a> - By Ryan Cormack, May 2024. He
|
||
tells the story of Motorway’s journey to event driven, and also includes
|
||
a lot of foundational aspects.</li>
|
||
</ul>
|
||
<h2 id="related-topics">Related Topics</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.youtube.com/watch?v=1KlQVhVYiFU&list=PLXstpDPZ7AtX78V_JYUJX7z8RjdcB9HQq">Event
|
||
Sourcing – What, Why & How</a> - By Anita Kvamme, June 2024. While
|
||
also event based, <em>Event Sourcing</em> is not the same as
|
||
<em>Event-Driven Architecture</em>. They complement each other well, but
|
||
you can also use either without the other. Thankfully, this great
|
||
overview of Event Sourcing makes that clear at the very start.</li>
|
||
</ul>
|
||
<!-- omit in toc -->
|
||
<h2 id="contributing">Contributing</h2>
|
||
<p>Please note that the list is <strong>highly curated</strong>. The
|
||
aspiration is to assemble resources that excel in providing clarity
|
||
around the principles and terminology. As a whole, the collection should
|
||
provide a comprehensive and consistent overview of the topic. In the
|
||
spirit of the Awesome Lists <a
|
||
href="https://github.com/sindresorhus/awesome/blob/main/pull_request_template.md">list
|
||
of guidelines</a>: <em>“Awesome lists are curations of the best, not
|
||
everything.”</em></p>
|
||
<p>Of course if you think something that belongs in the list is missing,
|
||
you can suggest its inclusion in an <a
|
||
href="https://github.com/reactivesystems-eu/awesome-event-driven-architecture/issues">issue</a>
|
||
or <a
|
||
href="https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request">pull
|
||
request</a>.</p>
|
||
<!-- omit in toc -->
|
||
<h2 id="footnotes">Footnotes</h2>
|
||
<p>To be updated about changes, follow me on <a
|
||
href="https://mastodon.social/@lutzhuehnken">Mastodon</a>, <a
|
||
href="https://bsky.app/profile/huehnken.de">Bluesky</a> or <a
|
||
href="https://de.linkedin.com/in/lutzh">LinkedIn</a>. If you find this
|
||
interesting, you might also like my <a
|
||
href="https://www.reactivesystems.eu/">blog</a>.</p>
|
||
<p><a
|
||
href="https://github.com/lutzh/awesome-event-driven-architecture">eventdrivenarchitecture.md
|
||
Github</a></p>
|