Open-source framework for event-driven microservices and domain-driven design
Why Axon Framework?
Scalability
Axon Framework enforces location transparency in its core APIs. Axon allows components to communicate through 3 different types of messages: Commands, Queries, and Events, each with distinct routing patterns. By enforcing this throughout all components in an application, Axon Framework ensures applications can be physically separated into microservices and scaled out at all times, without any changes to business logic.
Performance
Axon Framework distinguishes between two types of components; query (read) and update (write) components. This means the information structure in these components can be optimized for the purpose at hand. As a result, query components have quick access to data that is already structured for its purpose. This in itself is a performance benefit but also allows scaling for a specific component type.
Auditing and Analytics
Application security involves, amongst other features, authentication, authorization, and auditing. While the first two are quite common in applications, auditing is often overlooked or found too costly to implement. Axon Framework provides support for Event Sourcing, providing the most reliable form of auditing, out of the box. Not only can unauthorized access be prevented, but unauthorized use can also be tracked down too. Besides auditing, Event Sourcing has also proven to provide a valuable source of information for analytics. The Event Stream provides a reliable trail of everything that happened, based on which new insights can be calculated, since day 1.
Agility
As software systems evolve during their lifetime, they grow more complex. It is essential that complex systems themselves are built on simple, loosely coupled components. Axon Framework provides clear and simple APIs for components to communicate in a location transparent way. This ensures that components remain loosely coupled and can be simply interchanged with a new version. Besides making components much easier to adjust, it also makes adding new components easier. By simply connecting to the message bus, the addition of new components doesn’t require existing components to be modified. This is a huge advantage over the more traditional imperative programming approach.
Integration
Integration with third-party applications is often a source of accidental complexity. In more traditional architectures, this involves writing code in different places to trigger communication with these external systems. As the Axon Framework works with explicit messaging, you can easily add components that provide an integration with 3rd party systems without intruding on the original application behavior. This holds for both in- and outbound 3rd party systems. This architecture makes integration with several external systems possible without increasing complexity.