Define rich, type‑safe domain model
Once, for all tiers and platforms. Don't mess with Json. DRY.
Focus on the business logic
... rather than “plumbing”. A
Command will be delivered to only one
Projections will get all
Events they need.
ProcessManagers will cover more complex scenarios.
Storage, message delivery, and other environment matters are isolated from the main code.
Clear work separation
Thanks to CQRS, more experienced developers can work on the core domain. The read–side and UI are created by the rest of the team. People don't add new database indexes or fields to core data because of UI needs.
In-memory and JDBC-based storage implementations allow to implement and test the core logic quickly. Adopt your application to selected deployment environment(s) with a few lines of code, added in one place.
Evolve your business model
Add and remove fields while keeping binary compatibility with older code;
handle new opportunities with
oneof, natively provided by Protobuf.
Projections on the whole event history of the system.
Scale with micro-services
CQRS architecture allows to scale read- and write- sides independently. When further scaling is needed, Event-Driven Architecture allows to further separate and scale heavily loaded parts.
Permissive Apache License allows using the framework in closed-source projects. You are welcome to contribute to improving the framework.