FAQ

Popular questions we get regarding our products and concepts

Why would I want to do DDD?

DDD, or Domain-Driven Design, helps an application to focus on the problem at hand. More specifically, to construct an application that at the basis follows the language spoken in the domain. This provides a clean separation in code but also gives a great handle for ongoing discussion between developers and the business themselves.

Why would I separate my command from my view model(s) with CQRS?

Separating a domain model into command and query models allows for more fine-grained optimization. The non-functional requirements of validation (the command model) and retrieving information (the query model) are typically far apart in any application. Keeping the models together will require comprises. By pulling them apart, either can be scaled up and optimized for the specific problem you have.

What is the difference between Event Streaming and Event Sourcing?

Event Streaming is the process of opening a stream of events and processing those events. The event stream consists of a multitude of events from different sources and models. Processing these events is done to update view models and trigger actions. Event Sourcing on the other hand is the reconstruction of a specific command model instance out of the events that instance has published. This makes it a solution to reconstruct or rehydrate a model (e.g., the Aggregate) through the changes it has decided on.

How does AxonIQ help me with microservice development?

AxonIQ, through Axon Framework foremost, focuses on message-based applications. Using messages (read: commands, events, and queries) gives application components a natural separation from one another. The messaging solution gives an application Location Transparency: “A component should neither be aware of nor make any assumptions about the location of components it interacts with.” It’s location transparency that allows an application to be a monolith, but more importantly, to be separated out into microservices.

How do you keep Event Sourcing efficient?

There are roughly speaking two points that make Event Sourcing inefficient. (1) An unoptimized Event Store is used and (2) an aggregate has published tons of events. The first problem can be tackled by using a dedicated Event Store implementation, like Axon Server. The second issue is solved by introducing snapshotting to your application. By using snapshotting, a snapshot event of the aggregate is stored at configurable intervals. Then when Event Sourcing an Aggregate, the snapshot will first be read, followed by any remaining events.