Personal reference implementation of an event-driven microservice architecture.
The example application is a freelance job matching platform.
Services are loosely-coupled, maintain their own storage and use their own dedicated stack. (i.e. Java, .NET, Node.js)
Commands | Events |
---|---|
Represent actions | Represent changes |
Invoked synchronously through REST API | Consumed asynchronously from Event Store |
Point-to-point | Publish/subscribe |
- Application services
The main application services, shown in the diagram above. - Cloud services
Additional Spring Cloud infrastructure services.
- OpenJDK 17
- Node.js 18
- Docker
To get started with local development, you can run in-memory Docker containers for the Infrastructure and Cloud services.
# Start/Stop containers for Infrastructure and Cloud services (recommended)
./local-dev/bin/cloud/up.sh
./local-dev/bin/cloud/down.sh
./local-dev/bin/cloud/follow-logs.sh
# Start/Stop Infrastructure containers only
# Useful when debugging Cloud services
./local-dev/bin/up.sh
./local-dev/bin/down.sh
./local-dev/bin/follow-logs.sh
You can then run the application services manually.