Event Storming for Order Management System
By: Melek Bilgin Tamtürk
Tags: Domain Driven Development, Domain Driven Design, Eventstorming

In this article, I’m going to explain our event storming experience briefly.

As the Trendyol Order Management System team, we decided to re-platform our Order and Fulfillment services. Using Domain-Driven Design principles while doing so seemed perfect since we had already experienced DDD when we re-platformed Claim service.

“The heart of the software is its ability to solve domain-related problems for its user.” -Eric Evans

Let’s start by explaining the basic concepts of DDD. Domain-Driven Design aims to create an environment where software meets the exact needs of the business domain. I can hear you say “Huh, it is already known!”. I know how it sounds but in the real world, it isn’t as easy as it sounds. We, developers, are filled with excitement to code when we start a new project. We start to code, and day by day our project gets bigger and more complex. When a problem occurs, a typical developer tries to solve it with new technology since it excites him/her to do. But in fact, most of the problems are caused by the lack of domain knowledge, not the technology. Eric Evans, who is the writer of the Domain-Driven Design-Tackling Complexity in the Heart of Software, claims that the problem is hidden somewhere in the domain and it should be solved by understanding the domain better.

To understand the Domain-Driven design better, you should know some terms like Ubiquitous Language, Bounded Context, Aggregate Roots, etc.

Ubiquitous Language is the common language spoken between Domain experts and developers who work in the same domain. DDD suggests that everybody who works in the same business domain should speak the same language. That language is our ubiquitous language and that domain where the language is meaningful is our bounded context. To be more clear we can simply look into real-life examples: In Italy(bounded context), everyone speaks Italian(ubiquitous language) and any Italian can be understood.

Unfortunately, I’m not going to explain each term and concept of Domain-Driven Design since it is not the subject of this article. But if you’re interested in learning more about DDD I recommend you to look at Domain-Driven Design Distilled, a book written by Vaughn Vernon.

What is Event Storming?

We decided on applying DDD, that’s good, we already have done it, we could do it again. But could we do it better? That was the question in our minds. Both Order and Fulfillment services were more complex than Claim service. There were newbies to the domain including me and we weren’t able to participate as needed when a decision about re-platforming was made. As a team, we wanted to ensure that each team member has nearly the same domain knowledge. We had to model our domain to understand it better. Even though there are a lot of modeling techniques, none of them was simple enough for domain experts to participate in the modeling phase. To create a ubiquitous language we need domain experts and domain experts need a better modeling technique. These main problems lead us to use a different domain modeling technique and Event storming was the answer.

EventStorming is a flexible workshop format for collaborative exploration of complex business domains. -Alberto Brandolini

Event storming is a fun way to increase the knowledge of business domains. It requires the collaboration of everybody in the business.

The things you need for an event storming session

Lots of different colored post-its or sticky notes or some paper to put on a wall.

A marker, a big roll paper or a whiteboard or a wall.

The development team, QAs, product managers or product owners, stakeholders, etc. Briefly, people who can ask the right questions and who can answer right must attend the session.

The most beautiful part of event storming is that it has more than one form. We used even storming to see our domains clearly, was it the only and perfect way of event storming? Of course, not. That’s why we did it twice. I will tell you both the first and the second sessions and I hope you will understand it is beneficial when exercised correctly.