GP »Do’s and Don’ts in Event-Driven Architecture - A Summary« (SS24)
When making decisions within a software architecture, there is no right or wrong, there are only trade-offs. This also applies to the communication between microservices. As it turns out, it’s noticeably difficult to switch from a synchronous to an event-based architectural style. It seems that our “software education” is preparing us to think in a synchronous request / reply pattern. When switching to an asynchronous implementation, this mental model needs to be overcome, or else we’ll implement a synchronous communication pattern using asynchronous technology - and therefore will not work truly event-based.
- Keywords
- event-driven architecture, domain-driven design, microservice, eCommerce, software architecture
- Study Program and Module Description
-
Master Digital Sciences (specialization Software Architecture)
(see also module description in the study program web site)
- Begin/End and Scheduling
-
End of March - August 2024. Organized as an agile project with sprints every 2 weeks. Workload depends on the type of project, will be clarified at kickoff.
- Location
-
-
Room:
1708 (Building LC4 (library building). Room 1708 is our lab office space, with enough room for small workshops. However, the room is only accessible with by transponder. Thereore, please be at the door left of the library entrance (where you see the label "Kriminalkommissariat", since the Gummersbach police criminal investigation unit is our office neighbour :-). I will fetch you there. Call me (+49 176 8072 2689) or a fellow student by mobile phone in case you should run late), see also
detailed directions
-
Video conference link:
https://th-koeln.zoom-x.de/j/4425088059?pwd=K3hQOXRFa0YzUmZYSVRIejlZRklKdz09&omn=63215898401
(only in exceptional cases and if explicitly communicated in advance for the day)
- Miro Board used for brainstorming and planning our deliverables
-
During the module, you can
use this Miro Board.
- Discord Server for fast Communication
-
Discord has been proven as a very effective platform for information sharing, discussions, and consultations. Therefore, please join the ArchiLab Discord Server at
https://discord.gg/YYNYb5whU8.
Navigate to channel
#rollenzuweisung
and click on
gp
.
Then you automatically get access to the channel(s) relevant for this module.
Problem Description
In two earlier modules – a CEX paper in WS 22/23 (topic 6),
and a Guided Project in WS 23/24 –
we have been working on a sample application in the eCommerce domain. The goal was to
explore the nitty-gritties of this architectural style. It is now time to take it
to the next level – and to sum up our experiences.
Project Definition
In this project, we will build upon the code developed in the earlier projects.
We’ll try to look at one more aspect that we couldn’t cover in the previous
iterations due to time constraints: Handling of large transactions across aggregate borders.
To do so, we will implement one more business feature that requires such a transaction
(including the measures to roll it back in case of failure).
The experiences gathered in the implementation of that additional feature will be added
to the pool of learnings, do’s and don’ts, caveats, and good practices collected
in the earlier stages. Using these experiences, the project team will
organize and conduct two events:
- A lecture at the Digital Exchange conference on June 22nd in Gummersbach, with the same title as this Guided Project
- An internal or open developer event at ThoughtWorks, Köln, on the topic of Do’s and Don’ts in Event-Driven Architecture
Project Outcomes
A major part of this project will be about reflecting on our experience, and transform it into
presentable material. The outcomes have been defined above.
Learning Outcomes
- Understanding what event based communication truly is
- Knowledge about microservice architectures
- Tradeoff for asynchronous communication between microservices with event-based message brokers
- Testing in an asynchronous environment (e.g. unit tests, integration tests, end2end, …)
- Knowledge in the Dev-Ops approach
- Learning from practitioners
- Reflecting on architecture styles, and presenting the own conclusions to a community of peers
Requirements for Participating
- Willingness to reflect on architectural styles and patterns, and present them in lecture / workshop format
- You don’t have to have participated in the earlier project(s), although of course it helps. If you haven’t done so, you need:
- Solid coding experience in Java, .NET Core, or any other language suitable to implemented a microservice
- Interest in architecture patterns and good practices in coding
- Frontend or backend experience
- Experience with an event broker (Kafka) helps, but is not a must
- Willingness to discuss patterns in the team, and to delve into an existing code base
External Project Partner
ThoughtWorks, with Wolf Schlegel working for thoughtworks.com
Grading
The grading for this Guided Project will follow the
general grading scheme for Guided Projects outlined here.
Both the quality and the effort part of the grading will be based on
- general code quality (clean code rules, SOLID principles, clean implementation of DDD building blocks),
according to a code review, and
- the project outcomes listed above.
Workshops
Mon 25.03.2024, 10:00 - 12:30: Kickoff Workshop
We brainstorm our findings so far, and plan our actions in the project.
Workshop Location
Video conference link:
https://th-koeln.zoom-x.de/j/4425088059?pwd=K3hQOXRFa0YzUmZYSVRIejlZRklKdz09&omn=63215898401
.
Goal of the day
The project is set up and ready to start.
Task until next workshop
Sat 22.06.2024, 10:00 - 17:00: Digital Exchange Conference
In this conference, the participants of this project will present their findings to a broader audience.