Axon Server Performance

Greetings,
As I venture into the world of microservices/cqrs/es, I intend to use Axon Server. I am not entirely new to Axon, but I wouldn’t call myself an expert as of today. Discussions regarding databases and multiple nodes have come up. My understanding is that by using Axon Server, I am essentially moving some of that type of responsibility into the application level. eg. multiple instances of an app could each have their own db instance for the read model, so you really don’t have to use the db functionality to replicate (using the term loosely here) the data from one node to another because each app instance is reading the event store to perform that task. My database guy has some concerns regarding read performance and would prefer feedback from an end-user and not just AxonIQ. Here is what he has to say on the matter:

Also, considering HA and replication, please make sure any replacements are fully vetted at an enterprise level with large production examples/use cases. It really doesn’t make sense to have HA and replication that isn’t fully proven. All that said, I am very open to new ideas but I have to be sure the new technologies are robust.

I imagine that AxonIQ can provide stats (which I am interested in) while end-users can provide their own experiences (eg. we’re running X application instances against a single Axon server which process Y events per second/minute/hour/day/etc…)
As of now, I feel like Axon Server is more than capable of handling what we need, but I don’t know what to expect down the road. Even so, I’d like to think that it will stay in the lead. Plus, I’m also aware that snapshots can be made to reduce the number of events needed to reconstruct an aggregate.

At any given time, I’d say there are less than 20 web sessions, with the exception of some occasional spikes because of a product recall/incident. So even if there was a big boom, I’d venture to say that 100 sessions would be considered “a lot”. Not sure what kind of event rate this would translate to because the first app being extracted is still in the incubator.

I look forward to reading all responses.

Have a good day!

Brian Sanders

Hi Brian,

we regularly run tests where we put a decent load on AxonServer. This is part of our delivery pipeline. In those tests, we run around 7000 commands per second (which result in 7000 published events and 7000 result messages as well). These Events are also concurrently read by tracking processors, bringing the total transported messages to around 30k per second. I don’t have the exact server specs for these tests right now, but they aren’t too heavy. Reading events from AxonServer is relatively cheap, as that’s what it has been optimized for (besides append).

If you expect 100 concurrent user sessions, my guess is that these numbers are high enough to provide room for growth.

Kind regards,