Domain-Driven Design

Domain-Driven Design (DDD) defines many concepts and patterns that help design software effectively, in line with the business requirements. Axon separates infrastructural concerns from the domain logic, which, combined with DDD best practices, keeps complexity to a minimum.

Introducing the Axon Framework IntelliJ plugin

By Mitchell Herrijgers

    5 min

|

    Mar 11, 2022

AxonIQ is introducing an IntelliJ plugin to make developing applications with Axon Framework and Axon Server even easier!

Distilling the CQRS/ES Capability

By Vijay Nair

    4 min

|

    Apr 20, 2021

CQRS/ES are patterns and to be more specific they are Application Design patterns and their implementation spans across 3 main Architectural areas: structural and continuity, operational and extensibility, and cross-cutting and usability. To help pinpoint the exact implementation areas, let us look at two terms commonly used in Enterprise Architecture - Capabilities and Capability Maps.

Dispelling the Eventual Consistency FUD when using Event Sourcing

By Vijay Nair

    6 min

|

    Mar 24, 2021

In the CQRS/ES space, we are equally guilty of not countering the FUD with enough examples and literature that gives relevant data points for folks wanting to adopt these patterns. What if I told you that your systems built with CQRS/ES are as transactionally consistent as systems built without these patterns using the more formal storage methods! Well, let’s walk through an example actually to prove it.

From Model to Code: Event Modeling & Axon Framework

By Sara Torrey

    6 min

|

    Oct 27, 2020

Well, the "old me" would design an application "on the fly;" AKA, create a repository on GitHub, open it on IntelliJ, and BAM! You’ve got an application. Success? Sure… maybe for a simple application. But what about designing a large-scale application or a modular application with individual parts that can scale and evolve easily? 

Bounded contexts with Axon

By Ivan Dugalic

    6 min

|

    Apr 05, 2019

Bounded Contexts represent logical boundaries from a run-time perspective, defined by contracts within software artefacts where the model is implemented. In Axon applications, the contract (API) is represented as a set of messages (commands, events, and queries) which the application publishes and consumes. Bounded Contexts are a strategic concept in Domain Driven Design, and it is important to know how it is reflected in the architecture and organizational/team structure.

How to write an Axon application?

By Frans van Buul

    6 min

|

    Nov 16, 2018

Learning to write a proper Axon application from scratch consists of various aspects. However, talking with AxonIQ customers, I found out that there's something we may need to be a little more clear about: What does the general structure of a real-life Axon application look like? What goes where, and how do you prevent a mess? In this blog, I'll try to shed some light on this topic.

Building Reactive Systems with Axon Framework

By Milan Savić

    5 min

|

    Jul 18, 2018

Unfortunately, old systems aren’t as responsive as we expect them to be. They cannot be scaled that easily. Instead, they use processor time, waiting for operations to complete when they could do something else (processing another request, doing some background calculations, etc.). In this blog, we will discuss why Axon Framework provides infrastructural components that help us build reactive systems.

How do I enhance events with data that is not part of the Aggregate?

By Allard Buijze

    5 min

|

    May 31, 2017

To answer the question How do I enhance events with data that is not part of the Aggregate? I can provide several possibilities. I will list them here in this blog post.

How can I identify entities within an aggregate?

By Allard Buijze

    2 min

|

    May 30, 2017

There are roughly three options for choosing identifiers: random, hash or sequential. The advantage of random and hash identifiers is that the client can generate the identifier, and reference an instance without the need to wait for the result of the creation command.