Some people have asked be what I was working on lately, since they didn’t see any blogs from me the last months. Well, my life has been heavily focused on the investigation of all the capabilities of a very simple pattern: CQRS. As I unleashed its power on a project, I noticed that most of it is quite generic. That was my trigger to build the Axon Framework, a CQRS Framework for Java.
Read on to find out more…
I will refrain from giving a detailed description about CQRS. There is a lot of information to be found, of which this article by Greg Young, and Udi Dahan’s article here are must-reads for all who want to know more about CQRS.
In my eyes, the very simple concept of CQRS opens up very powerful opportunities in terms of application maintenance, testing, integration and scalability. But don’t let all these opportunities fool you: with a basic setup, using CQRS is not any more complex than the layered architecture most developers are used to. However, when an application grows (which in the end, all applications do), the complexity of a layered-architecture increases rapidly and definitively becomes more complex than one based on CQRS.
Why? Simply because CQRS makes a separation between Command and Query processing in an application. Typically, each of those aspects has to deal with different functional and technical requirements. If you merge the two, you would have to deal with all these aspects in a single component. That makes the component unnecessarily complex.
When building an application according to the CQRS pattern, you will most likely have to build some components that actually have nothing to do with the functional requirements you have. This plumbing is the reason I started the Axon Framework. The goal of the Axon Framework is to provide the most common building blocks found in CQRS based architectures, such as a Command Bus, Event Bus, Event Sourcing repositories, etc.
Axon makes it easy to choose the type of configuration you would like to use. Whether you want to use event sourcing or not, eventual consistency or full transactional, or maybe a combination of the two, Axon makes it a matter of configuration to switch between these options. You can set up a complete baseline architecture within an hour and get started with the actual business logic.
I have released the 0.4 version little over a month ago and am working hard to get the 0.5 version out. This version will be nearly feature-complete.
You can find more information about Axon Framework and track my progress on axonframework.org.
A few weeks ago, InfoQ approached me for an interview. After some emailing between myself and InfoQ author Josh Long, InfoQ published an interview with me about the Axon Framework. You can read the interview here: http://www.infoq.com/articles/cqrs_with_axon_framework
The coming month, I will be giving 2 presentations about CQRS and the Axon Framework. The first is on JTeam’s tech evening on May 6th. The tech meeting starts at 16:00 in JTeam’s head office in Amsterdam. See www.jteam.nl/contact.html for directions. Please subscribe to the event using the contact form if you like to join this free event.
My next presentation, about the same topic is on the Domain Driven Design Netherlands User Group (www.DDDnl.org). In the May meetup we will spend time on CQRS and I will give a presentation about the practical aspects of CQRS and Axon. The meetup is held on May 11th at JTeam’s office in Amsterdam. The meetup starts at 18:00. If you want to join, send an email to firstname.lastname@example.org to confirm your attendance.
CQRS and Axon Workshop
If a 1 hour presentation is not enough of an immersion for you, I will also give a CQRS Workshop soon. On may 21st, JTeam organizes a one-day workshop where you will learn to apply CQRS in your own projects. The workshop is very much focused on practical aspects and making pragmatic decisions when it comes to the different possibilities CQRS offers. We will cover the different building blocks in a typical CQRS architecture, as well as testing, and scalability scenario’s.
For more information, visit the workshop page: http://www.jteam.nl/training/workshop/cqrs-axon-framework-training-workshop.html.
So, if you’re wondering why I haven’t been blogging much lately, you can blame the Axon Framework. Open source is nice, but it just takes a lot of time. Time I gladly spend…