Why Axon Server?
Makes it significantly easier for the user to setup and maintain the environment
Reduce configuration management
Microservices systems are often associated with complex configuration management. Setting up service discovery and message routing correctly is a time-consuming and error-prone task. Axon Server eliminates this complexity. Because it’s built for purpose and tightly integrated with Axon Framework, it performs service discovery and message routing with zero configuration. It just works.
Scale out easily
As your application becomes more successful, you may need to horizontally scale your service components. Axon Server makes it easy: just spin up new instances, and Axon Server takes care of the rest. It detects that there are multiple copies of the same service, and deals with this correctly for commands, events and queries alike. No matter whether you have 2 instances, or 50.
In a complex microservices system, it can be hard to understand “what’s going on” when teams need to debug a problem. Axon Server helps out here: it automatically provides a graphical overview of our landscape, with drill-down functionality to get detailed information about message handlers. Also, it allows you to do ad-hoc querying on events, extracting specific information from JSON or XML event payloads.
Scalable event sourcing
Event Sourcing has tremendous benefits for auditability, compliance and machine learning. But it’s also a challenge for traditional databases. Their general purpose storage engines are not optimized for storing event data. In practice, this leads to scalability problems when the number of events grows beyond a certain point. Axon Server contain a storage engine which is designed for the specific purpose of storing events for event sourcing. It offers superior scalability and throughput characteristics, without requiring difficult tuning.
Ready for enterprise deployment
Axon Server is freely available to get started quickly and easily. For serious enterprise deployments, various other options are available to give you the assurance and functionality you need. “Axon Server Enterprise” adds SLA-backed support, clustering, monitoring and integration features to the free Axon Server. Expansion packs are available for security and compliance, global multi-datacenter deployments, and big-data applications.
Technical highlights of Axon Server
Purpose-built for Axon Framework applications
More traditional forms of integration haven't been designed with the specifics of Axon Framework, or more generally CQRS/ES architectures in mind. When you're using such general purpose integration techniques, you'll find yourself in a constant effort to make everything work properly and efficiently. For instance, plain HTTP/REST calls are commonly used in microservices architectures, but have very clear drawbacks: they're verbose and slow, synchronous in nature, and while load balancing is possible on the HTTP level, consistent routing based on aggregate id is very difficult. Another example is problems associated with using an RDBMS table as an event store: you may be fighting global sequence number gaps, delays in event processing due to polling, and scalability issues related to the number of events. Axon Server has been designed from the beginning to support the CQRS/ES architectural style, implementing optimized routing and storage algorithms.
Axon Server uses HTTP/2 for its connections, more specifically Google's gRPC protocol which adds a binary Protobuf-based RMI layer on top of HTTP/2. This is a very efficient protocol supporting two-way communications. Importantly, in the Axon Server model, all connections are initiated by the client. After the connection has been established, the client can send messages to Axon Server and vice versa. This approach has a clear benefit: the only service location that has to be managed is the location of Axon Server, which must be made known to the application clients. Other than that, no discovery or registration mechanisms are needed: Axon Server will be able to reach the clients, simply because the clients reach out to Axon Server.
Your Axon Framework-based application will have a number of @CommandHandler, @EventHandler and/or @QueryHandlers methods. Axon Framework registers those with whatever implementation of the Axon buses is present. If you're using the Axon Server version of the buses, this is taken one step further: the Axon Server client will be relaying the information about the handlers present in this application to Axon Server. As a result, Axon Server knows which components are available to handle which types of messages. This allows it to configure routing fully automatically.
Easy to integrate
Axon Server can be easily integrated with your applications in a number of ways. Starting from Axon 4, Axon Server integration is enabled by default in Axon Framework, and all you need to configure is the network location of Axon Server. For Axon 3, or non-Axon applications, there's an open source Axon Server client (available on GitHub and Maven Central). It offers drop-in implementations of Axon Framework's CommandBus, EventBus/EventStore and QueryBus interfaces. If you're using Spring Boot, you can use the axonhub-spring-boot-autoconfigure dependency which will wire these buses automatically. If you need more freedom, like using AxonHub from another programming platform, you could communicate with AxonHub directly via the open HTTP+JSON and gRPC interfaces.
Distributed as a jar file
Axon Server is distributed as a stand-alone jar file which you can run in any environment you like, on premise or in the cloud. There are two versions of the jar file: the free Axon Server and the commercial Axon Server Enterprise, which requires a license key to use. Axon Server can be configured to run as a messaging platform (previously called “AxonHub”), as an event store (previously called “AxonDB”), or both at the same time. Axon Server can run well directly on a (virtual) machine, but has also been tested extensively in a Docker/Kubernetes containerized setting.
Axon Server instances can cooperate in a cluster for both high-availability and high-throughput. Different application instances can connect to different Axon Server instances and will still be able to communicate - Axon Server will route the messages correctly across the cluster. Axon Server node goes down? Connected application components will automatically connect to another Axon Server instance. New application component coming up? It will pick an arbitrary Axon Server instance to connect to initially, but this instance may redirect it to another one that is currently serving the smallest number of application components. Event storage will be replicated across all nodes in the cluster, and transactions won’t be considered committed until a quorum of replicas has confirmed them.
How to get started with AxonServer
Axon 4.0 is a platform consisting of the popular, Apache 2 licensed, Axon Framework, and the new, built-for-purpose Axon Server.
While they can be used independently, together they show their true power. Build microservices systems in Java, following DDD, event sourcing and CQRS best practices, while focusing on business logic instead of boilerplate and plumbing.
Listen to this webinar and learn about AxonServer and Axon 4.0 and it's advantages
Sign up for our newsletter
monthly updates about new product releases and invitations to AxonIQ events