A cloud-native distributed system reference implementation using Reactive DDD, Event Sourcing, CQRS, and microservices.
EventualShop is a reference implementation of a distributed, cloud-native e-commerce system built with modern architectural patterns. It demonstrates how to apply Reactive Domain-Driven Design, Event Sourcing, CQRS, and microservices to create scalable and resilient applications. The project serves as a practical guide for developers and architects designing complex systems with high availability and domain-centric principles.
Software architects, senior developers, and engineering teams building or modernizing distributed systems, particularly those interested in domain-driven design, event-driven architectures, and microservices.
It provides a fully realized, production-inspired example that integrates multiple advanced patterns into a cohesive system, offering clear insights into their practical application and interaction. Unlike theoretical explanations, EventualShop shows how these patterns work together in a real-world context.
A state-of-the-art distributed system using Reactive DDD as uncertainty modeling, Event Storming as subdomain decomposition, Event Sourcing as an eventual persistence mechanism, CQRS, Async Projections, Microservices for individual deployable units, Event-driven Architecture for efficient integration, and Clean Architecture as domain-centric design
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Seamlessly combines Reactive DDD, Event Sourcing, CQRS, and microservices in a single reference implementation, providing a practical blueprint for complex architectures as shown in the architecture diagrams.
Implements an append-only event store using EF Core and MSSQL, with snapshots to optimize state reconstruction, detailed in the README's event sourcing and snapshot sections.
Emphasizes business logic through bounded contexts and Clean Architecture, isolating domain concerns from infrastructure to enhance maintainability, as per the philosophy and research sections.
Designed for containerized deployment with Kubernetes, supporting independent scaling of microservices and event-driven communication for resilience, evident from the tech stack and solution architecture.
Involves multiple advanced patterns like event sourcing and choreography-based sagas, making it daunting for teams without prior experience in distributed systems or DDD.
Uses a custom event store implementation with EF Core and MSSQL, rather than established solutions like EventStoreDB, which may limit features and community support.
Requires managing numerous services, databases (MSSQL for events, MongoDB for projections), and message brokers, increasing deployment and maintenance burdens.