Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Awesome Serverless | 7,213 | 13 days ago | 2 | gpl-3.0 | ||||||
:cloud: A curated list of awesome services, solutions and resources for serverless / nobackend applications. | ||||||||||
Php Ddd Example | 2,728 | a month ago | 69 | PHP | ||||||
🐘🎯 Hexagonal Architecture + DDD + CQRS in PHP using Symfony 6 | ||||||||||
Event Sourcing Examples | 2,646 | 3 years ago | 25 | other | JavaScript | |||||
Example code for my building and deploying microservices with event sourcing, CQRS and Docker presentation | ||||||||||
Ultimate Backend | 2,266 | 2 months ago | 64 | mit | TypeScript | |||||
Multi tenant SaaS starter kit with cqrs graphql microservice architecture, apollo federation, event source and authentication | ||||||||||
Dotnetcore Microservices Poc | 1,780 | 4 days ago | 5 | apache-2.0 | C# | |||||
Very simplified insurance sales system made in a microservices architecture using .NET Core | ||||||||||
Practical.cleanarchitecture | 1,645 | 8 days ago | 20 | C# | ||||||
Full-stack .Net 7 Clean Architecture (Microservices + Dapr, Modular Monolith, Monolith), Blazor, Angular 16, React 18, Vue 3, BFF with YARP, Domain-Driven Design, CQRS, SOLID, Asp.Net Core Identity Custom Storage, OpenID Connect, Entity Framework Core, Selenium, SignalR, Hosted Services, Health Checks, Rate Limiting, Cloud (Azure, AWS) Services, .. | ||||||||||
Eventmesh | 1,441 | 32 | 3 days ago | 6 | June 30, 2023 | 335 | apache-2.0 | Java | ||
EventMesh is a new generation serverless event middleware for building distributed event-driven applications. | ||||||||||
Pitstop | 1,009 | 1 | 1 | 5 days ago | 22 | December 12, 2022 | 2 | apache-2.0 | JavaScript | |
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency. | ||||||||||
Clean Architecture Dotnet | 997 | 5 months ago | 12 | mit | C# | |||||
🕸 Yet Another .NET Clean Architecture, but for Microservices project. It uses Minimal Clean Architecture with DDD-lite, CQRS-lite, and just enough Cloud-native patterns apply on the simple eCommerce sample and run on Tye with Dapr extension 🍻 | ||||||||||
Jdonframework | 877 | 15 | 3 years ago | 5 | September 22, 2018 | 3 | apache-2.0 | Java | ||
Domain-Driven-Design Pub/Sub Domain-Events framework |
This example application is the money transfer application described in my talk Building and deploying microservices with event sourcing, CQRS and Docker. This talk describes a way of architecting highly scalable and available applications that is based on microservices, polyglot persistence, event sourcing (ES) and command query responsibility segregation (CQRS). Applications consist of loosely coupled components that communicate using events. These components can be deployed either as separate services or packaged as a monolithic application for simplified development and testing.
Read the overview or look at the other example applications.
This example illustrates several important concepts:
How to decompose an application into microservices - as described below the application consists of several services. For example, bank accounts are managed by one service, money transfers by another service.
Using an event-driven architecture to achieve data consistency - rather than using traditional distributed transaction to maintain database consistency this application uses an eventually consistent, event-driven approach.
Using event sourcing to implement the event-driven architecture - the domain logic consists of Domain-Driven Design (DDD) aggregates that using event sourcing.
Using Command Query Responsibility Segregation (CQRS) - update requests (HTTP POSTs and PUTs) and view requests (HTTP GETs) are handled by separate services.
How event sourcing enables deployment flexibility - the application can either be deployed as a monolith or as microservices.
This example application provides a REST API for creating and viewing bank accounts and transferring money between them.
The following diagram shows the architecture:
There are the following services:
There is also an API gateway service that acts as a Facade in front of the services.
There are currently the following versions of the example application:
Other examples will be added shortly including a Scala/Play example.
For more information, please see the wiki
The application is built using Eventuate, which is an application platform for writing transactional microservices. It provides a simple yet powerful event-driven programming model that is based on event sourcing and Command Query Responsibility Segregation (CQRS). Eventuate solves the distributed data management problems inherent in a microservice architecture. It consists of a scalable, distributed event store and client libraries for various languages and frameworks including Java, Scala, and the Spring framework.
There are two versions of Eventuate:
There is also an embedded test event store, which is great for integration tests.
This is a Gradle project. However, you do not need to install Gradle since it will be downloaded automatically. You just need to have Java 8 installed.
The details of how to build and run the services depend slightly on whether you are using Eventuate SaaS or Eventuate Local.
First, must sign up to get your credentials in order to get free access to the SaaS version.
Next, build the application
cd java-spring
./gradlew assemble
Next, you can launch the services using Docker Compose:
docker-compose up -d
Finally, you can open the home page, which is served up by the API Gateway: http://$DOCKER_HOST_IP:8080
Note: DOCKER_HOST_IP
is the IP address of the machine where Docker is running, e.g. the IP address of the VirtualBox VM.
First, build the application
cd java-spring
./gradlew assemble -P eventuateDriver=local
Next, launch the services using Docker Compose:
export DOCKER_HOST_IP=...
docker-compose -f docker-compose-eventuate-local.yml up -d
Note: You need to set DOCKER_HOST_IP
before running Docker Compose.
This must be an IP address or resolvable hostname.
It cannot be localhost
.
See this guide to setting DOCKER_HOST_IP
for more information.
Finally, you can open the home page, which is served up by the API Gateway: http://$DOCKER_HOST_IP:8080