Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivkovicstefan/lrn-microservices-eshop
A practical project done during the ".NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture" course created by Mehmet Ozkaya
https://github.com/ivkovicstefan/lrn-microservices-eshop
clean-architecture docker domain-driven-design grpc microservices-architecture postgresql redis rest-api sql-server sqlite vertical-slice-architecture
Last synced: about 2 months ago
JSON representation
A practical project done during the ".NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture" course created by Mehmet Ozkaya
- Host: GitHub
- URL: https://github.com/ivkovicstefan/lrn-microservices-eshop
- Owner: ivkovicstefan
- License: mit
- Created: 2024-10-02T17:41:15.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-11-02T10:34:20.000Z (3 months ago)
- Last Synced: 2024-11-02T11:19:45.834Z (3 months ago)
- Topics: clean-architecture, docker, domain-driven-design, grpc, microservices-architecture, postgresql, redis, rest-api, sql-server, sqlite, vertical-slice-architecture
- Language: C#
- Homepage:
- Size: 721 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Eshop On Microservices
![Static Badge](https://img.shields.io/badge/Learning_Project-21a600)
![Static Badge](https://img.shields.io/badge/Udemy-A435F0?style=flat&logo=udemy&logoColor=white)This project is part of a course called ".NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture" created by Mehmet Ozkaya. It represents a practical implementation of microservices architecture using .NET 8, domain-driven design, command and query responsibility segregation pattern (CQRS), vertical slices, and clean architecture.
## Building Blocks
The project consists of main services and shared libraries.### Main Services
- Catalog.API - Product management service
- Basket.API - Shopping cart management service
- Discount.Grpc - Discount management service
- Ordering.API - Ordering management service
- YarpApiGateway - Reverse proxy API gateway
- Shopping.WebApp - Web application for end users### Shared Projects
- BuildingBlocks - Holds useful abstractions for CQRS implementation, cross-cutting concerns
- BuildingBlocks.Messaging - Holds abstractions for message broker and event-driven communication between services### Backing services
- CatalogDb - PostgreSQL database
- BasketDb - PostgreSQL database
- DiscountDb - SQLite database
- OrderingDb - SQL Server database
- DistributedCache - Redis
- MessageBroker - RabbitMQ broker### Container Management And Orchestration
- Docker
- Docker Compose## External Architecture Diagram
The system is designed with Microservice Architecture, which is followed by both synchronous and asynchronous communication types between services. In picture 1, synchronous communication is highlighted with green, and asynchronous communication is marked with orange color.![External Architecture](/EShop/docs/images/external-architecture-diagram-dark.png#gh-dark-mode-only)
![External Architecture](/EShop/docs/images/external-architecture-diagram-light.png#gh-light-mode-only)Picture 1 - External architecture diagram
## Internal Architecture Diagrams
### Catalog.API
Catalog API uses a Vertical Slice Architecture together with a CQRS design pattern. Each slice has its endpoint and request handler. Slices are separated into different folders.
Picture 2 - Catalog.API architecture diagram
### Basket.API
Basket API uses a Vertical Slice Architecture together with a CQRS and Repository design pattern. A repository pattern is implemented to add a distributed cache using the Cache-aside pattern. Each slice has its endpoint and request handler. Slices are separated into different folders.
Picture 3 - Basket.API architecture diagram
### Discount.Grpc
Discount GRPC uses an N-layer Architecture.
Picture 4 - Discount.Grpc architecture diagram
### Ordering.API
Ordering API uses a Clean Architecture together with CQRS, and a Domain-driven Design.
Picture 5 - Ordering,API architecture diagram
## Concepts Learned
1. Microservices Architecture
2. Vertical Slice Architecture
3. Clean Architecture
4. gRPC Services
5. CQRS Pattern
6. Mediator Pattern
7. Proxy Pattern
8. Decorator Pattern
9. Cache-aside Pattern
10. Pub/Sub Pattern
11. REPR Pattern
12. API Gateway Pattern
13. Gateway Routing Pattern
14. BFF Pattern
15. Domain-driven Design
16. RabbitMQ