.NET Backend Bootcamp: Modular Monoliths, VSA, DDD, CQRS and Outbox
I have just published a new course — “.NET Backend Bootcamp: Modulith, VSA, DDD, CQRS and Outbox”
In this bootcamp, you’ll learn how to build robust, scalable, and maintainable applications using cutting-edge technologies and latest architectural patterns.
We will develop;
- Modular Monoliths (Modulith) Architecture
- Vertical Slice Architecture (VSA)
- Domain-Driven Design (DDD)
- Command Query Responsibility Segregation (CQRS)
- Outbox Pattern for Reliable Messaging
We start with the basics and progressively dive deeper into each topic. You’ll get hands-on experience building a complete EShop Modular Monolith application, implementing features like CQRS and the Outbox pattern.
- We’ll follow CQRS (Command Query Responsibility Segregation) and Vertical Slice architectures for module development.
- Modules will communicate over In-process method calls-public APIs and use RabbitMQ for event-driven communication.
- We’ll secure our APIs with Keycloak, using OpenID Connect and Bearer Tokens.
- We’ll implement the Outbox Pattern for reliable messaging between modules.
Along with this you’ll develop following modules and items:
Catalog Module
- Using Asp.Net Core Minimal APIs and latest features of .Net8 and C# 12
- Develop Vertical Slice Architecture implementation with Feature folders
- Develop DDD, CQRS Patterns using MediatR library w/ following Best Practices
- Use Domain Events & Integration Events when UpdatePriceChanged event
- Use Entity Framework Core Code-First Approach and Migrations on PostgreSQL Database
- Use Carter for expose Minimal Api endpoints
- Cross-cutting Concerns including Logging with Serilog, Validation with MediatR Pipeline Behaviors, Exceptions, Pagination
Basket Module
- Similar to Catalog Module; Develop DDD, CQRS, Vertical Slice Architecture implementation
Additionally;
- Using Redis as a Distributed Cache over PostgreSQL database
- Develop and Implements Proxy, Decorator and Cache-aside patterns
- Publish BasketCheckoutEvent to RabbitMQ via MassTransit library
- Implement Outbox Pattern For Reliable Messaging w/ BasketCheckout Use Case
Module Communications
- Sync Communications between Catalog and Basket Modules with In-process Method Calls (Public APIs)
- Async Communications between Modules w/ RabbitMQ & MassTransit for UpdatePrice Between Catalog-Basket Modules
Identity Module
- Develop User Identity Module with Keycloak Authentication
- OAuth2 + OpenID Connect Flows with Keycloak
- Setup Keycloak into Docker-compose file for Identity Provider as a Backing Service
- Secure EShop Modules with Keycloak OpenId Connect in AspNet
- JwtBearer token for OpenID Connect with Keycloak Identity
Ordering Module
- Similar to the Catalog and Basket Module; Develop DDD, CQRS, Vertical Slice Architecture implementation
- Implement Outbox Pattern For Reliable Messaging w/ BasketCheckout Use Case
Lastly, we will discuss
- Migrating to Microservices: EShop Modules to Microservices w/ Stranger Fig Pattern
We’ll learn how to transition from monolithic applications to modular monoliths, and eventually to microservices, using best practices and advanced design patterns.
This course is more than just learning .NET, it’s a deep dive into the world of Modular Monoliths with Vertical-Slice Architecture, Domain-Driven Design (DDD), CQRS, and advanced architectural patterns for Backend Development.