High-Level Overview

The purpose of Axon Framework is to help software developers design and build solutions according to well-established principles and best practices. To understand the framework, one first needs to understand what solutions made with it look like.

Typical solution

Here is a somewhat simplified structure of a typical Axon-based application.

high-level application architecture
Figure 1. high-level application architecture
If you want to build (or merely explore) a simple example of such an application, the Building A Bike Rental Application tutorial walks you through the process.

The benefits

Note the following aspects in the high-level application architecture above:

  • Distinct parts communicate with each other via messages. Thus the communication pattern is the same regardless of whether components reside in the same deployment unit or multiple distributed ones.

  • There is clear separation between the command and the query sides (models). Each side can scale and evolve independently.

  • Since the command model is independent, developers and domain experts can establish a ubiquitous language and design it following the Domain-Driven Design principles.

  • As the repository of the command model is independent, and all state changes result in events, the solution can benefit from Event Sourcing and store all changes instead of limiting itself to the latest state.

Constructing applications in such a way makes it possible to

  • follow closely and adequately map the actual domain

  • discuss with domain experts and reason about the impact of any change

  • postpone deployment decisions until all relevant knowledge is available

  • scale out individual components as needed

The Axon Framework’s role

Building such a solution from scratch is a challenging and time-consuming task. Designing and implementing the infrastructure, communication, common abstractions, etc., introduces significant overhead.

Axon Framework removes that overhead by providing pre-ready components that take care of the messaging, modeling, and event sourcing parts.