Building Event-Driven Systems Using concepts such as Domain-Driven Design, Command-Query Responsibility Separation, Event Modeling, and Event Sourcing with Axon Framework and Axon Server
This workshop contains three parts:
Part 1: Introduction to Architectural Concepts
Domain-Driven Design (DDD) is a software design approach focusing on modeling systems based on input from business domain experts.
In this part, we will discuss what a domain and the model(s) within that domain are. We will cover the concept of bounded context and the importance of ubiquitous language for better communication. We will also look at building blocks within a domain model, including aggregate, events, value objects, and repositories.
We will also talk about Command-Query Responsibility Separation (CQRS) and the advantages of separating the business logic (command side) from the projections (query side) in an application. We will then explain how these two parts become parts of the same conceptual application through a client or UI. And lastly, how the events (notification of something that has happened in the past) can update both the command and query sides. We will discuss how event sourcing is the way to move from events as a side effect to events at the core.
Part 2: Discovery Phase through Event Modeling
Event Modeling is a method of describing a system by looking at how the information changes over time. This practice omits the transient changes and looks at what is being stored and what the user sees at any time. We will look at the four patterns and seven steps of event modeling and model a sample application together.
Part 3: Hands-On Coding
In this final portion, we will translate our event model into code (using your IDE of choice); the download information for a basic application will be provided. After a simple setup, we will continue using the DDD’s building blocks to expand our application further by applying the concepts of CQRS and event sourcing. Once completed, we will run the application locally with Axon Server as the event store and messaging platform, and if time permits, we can even look at scaling options.
What should you bring to the workshop?
- A laptop
- Basic knowledge of Java