A Kotlin/Java framework for building reactive, event-sourced microservices using DDD and CQRS patterns.
Wow is a framework for developing reactive microservices based on Domain-Driven Design (DDD), Command Query Responsibility Segregation (CQRS), and Event Sourcing. It provides a structured architecture to handle complex business domains by separating command and query models, persisting state changes as events, and enabling high-performance, scalable applications. The framework integrates with Spring Boot and offers tools for testing, observability, and event compensation.
Backend and microservice developers, particularly those working in Kotlin or Java ecosystems, who are building complex, event-driven systems that require scalability, audit trails, and strict domain modeling.
Developers choose Wow for its cohesive integration of DDD, CQRS, and Event Sourcing patterns into a single, reactive framework. It stands out with its declarative API, comprehensive testing utilities, built-in observability, and proven high-performance benchmarks, reducing the boilerplate and complexity typically associated with these architectural patterns.
Modern Reactive CQRS Architecture Microservice development framework based on DDD and EventSourcing | 基于 DDD & EventSourcing 的现代响应式 CQRS 架构微服务开发框架
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables fluent definition of aggregates, commands, and events in Kotlin/Java, as shown in the modeling patterns and test code snippets for CartSpec and OrderTest.
Supports configurable wait strategies (SENT, PROCESSED) with proven TPS benchmarks, such as 59,625 average TPS for AddCartItem in SENT mode, detailed in performance reports.
Provides AggregateVerifier and SagaVerifier for unit testing with a Given-When-Expect pattern, facilitating 80%+ test coverage, as demonstrated in the example domain tests.
Integrates with OpenTelemetry for tracing and monitoring across distributed systems, highlighted in the observability section with visual dashboards.
Includes tools and a dashboard for handling failed event processing and retries, with detailed sequence diagrams and execution flows in the documentation.
Requires understanding of DDD, CQRS, Event Sourcing, and Reactive Programming, as listed in preconditions, making it inaccessible for teams new to these concepts.
Deployment examples depend on Redis, MongoDB, and Kafka, indicating significant setup and operational overhead for distributed systems.
Tightly integrated with Spring Boot 3.x/4.x and Spring WebFlux, limiting adoption in non-Spring environments or with alternative JVM frameworks.
Event sourcing inherently introduces eventual consistency, which may not suit applications requiring immediate data synchronization, despite compensation mechanisms.