Axon Server without the Axon Framework (and JVM)

Hi all

I’m new to Axon, but I’m already hooked.

I’ve been trying to go all in with DDD and CQRS for a few years now. In trying to achieve that goal, and putting message exchange front and center of my systems, I’ve put together a list of requirements.
I’m convinced that in order to tackle any sufficiently complex problem domain, I need a platform able to fulfill these requirements for me.
I believe Axon (Framework + Server) is that platform. Not only the Axon features fulfill all my requirements, but for the few details that are not a perfect match with my mental model, Axon gives me enough flexibility and extension points to adapt my own solution.

Unfortunately I’m not a Java developer. I’m working on solving that problem, but that will take me some time. In the meantime I was wondering if someone out there has attempted to leverage the Axon Server from outside the JVM, leveraging the gRPC interface with any degree of success.

I’m planning to carefully study the lifecycle of a traditional fullstack (Framework + Server) Axon application and try to replicate that from my current tech stack. Being new to Java I’m having a hard time finding out how everything is put together with Spring Boot “magic”.

My hope is to find someone here in a similar path that could jumpstart my journey. Or that had already attempted the same with no luck, and could warn me about any roadblocks.

Searching the forum I’ve found these 2 topics:

But I could not extract anything from them.

Thanks in advance and congrats to the team for this awesome platform.

Os

Hi Os,

Welcome to Axon community and thank you for the kind words.

I hope others will share their experiences with non-Java technologies. I personally don’t have such. But I wanted to respond to this

You don’t have to understand the Spring / Spring Boot magic. Axon Framework integrates with it for convenience but it does not depend on it. If you look at the relevant places in the reference docs:

you’ll see there are examples with both Axon Configuration API and Spring. If you only want to dig into the code to “study the lifecycle” it’s probably better to follow the Axon Configuration API approach.

I wish you good luck with your projects.

Hi Milen, thanks for taking the time to get back to me. I really appreciate it.

I’m glad to hear that the Spring integration is just a convenience and not a requirement. I think this will make things easier for me down the road.

To be honest, right now I’m taking advantage of the Spring Boot starter. It makes putting together a small proof of concept application, a quick and easy task.

My current plan is to, first, get comfortable with the framework. Just get to a point where I’m able to implement, deploy and maintain a very basic system for a simple test domain. I’m especially interested in knowing where to look when things go wrong.
I already have a couple of very simple test applications locally, with a little bit of everything, one or two aggregates (no event sourcing of now), a few commands and events, two or three query models and a saga.
After deploying these apps, the next step will be to start removing the automatic configuration parts. I need to learn how to manually configure and bootstrap everything using the Configuration API.
In my head, only after that is done I’ll be able to start working in porting that bootstrap sequence to my stack. Unless someone else comes in and drops all the details here and spares me the effort :wink:

Btw, the Reference guide is in great shape. Well organized and easy to read. Kudos on that too.

Thanks again

Hi Os,

Just to add to that, a couple of months ago I put a Dropwizard app to work with Spring, which means I haven’t used anything Spring/Annotation related.
It is a very simple project which is not even using AxonServer but hope to help you understand most of the ‘magic’ configuration done under the hood!
You can find the configuration piece here.

Hope it helps a bit more on your project!

It helps a lot, thank you Lucas. This is a great jump start for me.

I’ll try to replicate that manual configuration in my sample app leveraging the Axon Server.

I’ll post here as soon as I have some progress to show. Maybe someone in a similar path can find some value

I have to confess that actually, yes, I am trying to leverage the power of AxonServer outside the JVM. Although the familiar Axon stack is a very good fit for the projects that I do with the clients I work for, it is less suitable for the computation-intensive side-project I am working on.

I’ve got a working example in Go: dendrite. I am currently working on a version in Rust (which is harder than I hoped :wink: ) rustic-dendrite. These are more proof of concept projects and no real substitute for the rock-solid reliability of AxonFramework I should note.

3 Likes

Wow, that is great Jeroen, you already walked the path. Awesome. Can’t wait for the weekend to check your code and also Lucas’s.
I’m going for the Axon integration on my own time (for now), so only late nights and weekends :frowning_face:

Thanks for sharing the code :+1: