This in-depth course will transform the way you build modern systems. You will learn the best practices for applying the Modular Monolith architecture in a real-world scenario. Join 500+ other students to accelerate your growth as a software architect.
Modular Monolith Architecture
More Than Just Theory
Modular Monolith Architecture includes more than just theoretical discussion.
We're going to build a production-ready system from scratch. This includes dozens of API endpoints, 50+ use cases, and 6000+ lines of code.
I built the course with bonus resources to make sure you apply what you learn.
After Completing This Course You Will
- Confidently use Modular Monoliths to build robust and scalable systems
- Learn how to create an architecture that stands the test of time
- Understand how to implement an event-driven system
- Easily migrate to microservices (if you need to)
About the Author: Milan Jovanović
Milan Jovanović is a Serbian software engineer and Microsoft MVP focused on the architectural side of .NET development — particularly Clean Architecture, Modular Monoliths, and the patterns for building maintainable production .NET applications. He runs the Milan Jovanović Tech newsletter — one of the more widely-read newsletters in the .NET community — and publishes paid course material on the same topics.
His CourseFlix listing carries three Milan Jovanović courses: Pragmatic Clean Architecture, Modular Monolith Architecture, and Pragmatic REST APIs. The teaching style is unusually rigorous for the .NET tutorial market about architectural decisions — each course is essentially a senior engineer's playbook on a specific architectural pattern.
Material is paid and aimed at intermediate-and-up .NET developers responsible for architectural decisions on real production systems. For broader content, see CourseFlix's C# and System Design & Architecture category pages.
Watch Online 59 lessons
| # | Lesson Title | Duration | Access |
|---|---|---|---|
| 1 | Agenda, Your Instructor, Course Structure Demo | 05:58 | |
| 2 | How To Use This Course | 02:33 | |
| 3 | Introduction, Monoliths and Microservices | 15:28 | |
| 4 | Modular Monoliths | 14:57 | |
| 5 | Module Constraints | 15:52 | |
| 6 | Domain-Driven Design, Event Storming, Bounded Contexts | 15:21 | |
| 7 | Introducing Evently Sample Application | 06:11 | |
| 8 | Building the First Module | 35:37 | |
| 9 | Refactoring to Clean Architecture | 38:38 | |
| 10 | Events Module Review | 11:02 | |
| 11 | Cross-Cutting Concerns | 06:20 | |
| 12 | Dependency Injection | 14:48 | |
| 13 | Module Configuration | 05:13 | |
| 14 | Structured Logging With Serilog and Seq | 10:44 | |
| 15 | Exception Handling | 05:48 | |
| 16 | Validation With FluentValidation | 06:14 | |
| 17 | Distributed Caching With Redis | 09:31 | |
| 18 | Health Checks | 06:23 | |
| 19 | Automatically Registering Endpoints | 08:19 | |
| 20 | Module Communication Patterns | 09:07 | |
| 21 | Publishing Domain Events | 07:04 | |
| 22 | Introducing the Users Module | 07:30 | |
| 23 | Scaffolding the Ticketing Module | 04:03 | |
| 24 | Synchronous Communication | 17:50 | |
| 25 | Duplicating Data Between Modules | 10:07 | |
| 26 | Asynchronous Communication | 17:24 | |
| 27 | Eventual Consistency: Introduction | 09:26 | |
| 28 | Authentication & Authorization | 03:34 | |
| 29 | Keycloak Identity Provider Setup | 18:59 | |
| 30 | Token Based Authentication | 14:40 | |
| 31 | User Registration With KeyCloak | 22:23 | |
| 32 | RBAC Authorization | 23:57 | |
| 33 | 2 Short Asks | 01:14 | |
| 34 | Architecture Enforcement | 05:51 | |
| 35 | Modular Architecture | 10:04 | |
| 36 | Architecture Testing | 19:31 | |
| 37 | Reliable Messaging | 04:15 | |
| 38 | Outbox Pattern | 31:57 | |
| 39 | Outbox: Idempotent Consumers | 21:22 | |
| 40 | Inbox Pattern | 12:57 | |
| 41 | Event-Driven Architecture | 11:50 | |
| 42 | Event Notifications | 05:30 | |
| 43 | Event-Carried State Transfer | 05:49 | |
| 44 | Materialized Views and CQRS | 11:16 | |
| 45 | Saga Pattern, Orchestration | 25:09 | |
| 46 | Testing Modular Monoliths | 07:14 | |
| 47 | Unit Testing | 14:58 | |
| 48 | Integration Testing | 30:32 | |
| 49 | System Integration Testing | 13:50 | |
| 50 | Automated Testing in CI/CD Pipelines | 07:36 | |
| 51 | Microservices Benefits, Extracting Modules | 06:28 | |
| 52 | Distributed Tracing, OpenTelemetry | 17:07 | |
| 53 | Distributed Messaging With RabbitMQ | 10:54 | |
| 54 | API Gateways, Introducing YARP | 19:03 | |
| 55 | Extracting Modules to Microservices | 30:47 | |
| 56 | A Note From Me | 00:57 | |
| 57 | Introduction, Document Databases | 09:22 | |
| 58 | Implementing CQRS With MongoDB | 31:01 | |
| 59 | A Small Ask From Me | 01:15 |
Get instant access to all 58 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.
Learn more about subscriptionCourse content
59 lessons · 12h 48m 50sShow all 59 lessons
- 1 Agenda, Your Instructor, Course Structure 05:58
- 2 How To Use This Course 02:33
- 3 Introduction, Monoliths and Microservices 15:28
- 4 Modular Monoliths 14:57
- 5 Module Constraints 15:52
- 6 Domain-Driven Design, Event Storming, Bounded Contexts 15:21
- 7 Introducing Evently Sample Application 06:11
- 8 Building the First Module 35:37
- 9 Refactoring to Clean Architecture 38:38
- 10 Events Module Review 11:02
- 11 Cross-Cutting Concerns 06:20
- 12 Dependency Injection 14:48
- 13 Module Configuration 05:13
- 14 Structured Logging With Serilog and Seq 10:44
- 15 Exception Handling 05:48
- 16 Validation With FluentValidation 06:14
- 17 Distributed Caching With Redis 09:31
- 18 Health Checks 06:23
- 19 Automatically Registering Endpoints 08:19
- 20 Module Communication Patterns 09:07
- 21 Publishing Domain Events 07:04
- 22 Introducing the Users Module 07:30
- 23 Scaffolding the Ticketing Module 04:03
- 24 Synchronous Communication 17:50
- 25 Duplicating Data Between Modules 10:07
- 26 Asynchronous Communication 17:24
- 27 Eventual Consistency: Introduction 09:26
- 28 Authentication & Authorization 03:34
- 29 Keycloak Identity Provider Setup 18:59
- 30 Token Based Authentication 14:40
- 31 User Registration With KeyCloak 22:23
- 32 RBAC Authorization 23:57
- 33 2 Short Asks 01:14
- 34 Architecture Enforcement 05:51
- 35 Modular Architecture 10:04
- 36 Architecture Testing 19:31
- 37 Reliable Messaging 04:15
- 38 Outbox Pattern 31:57
- 39 Outbox: Idempotent Consumers 21:22
- 40 Inbox Pattern 12:57
- 41 Event-Driven Architecture 11:50
- 42 Event Notifications 05:30
- 43 Event-Carried State Transfer 05:49
- 44 Materialized Views and CQRS 11:16
- 45 Saga Pattern, Orchestration 25:09
- 46 Testing Modular Monoliths 07:14
- 47 Unit Testing 14:58
- 48 Integration Testing 30:32
- 49 System Integration Testing 13:50
- 50 Automated Testing in CI/CD Pipelines 07:36
- 51 Microservices Benefits, Extracting Modules 06:28
- 52 Distributed Tracing, OpenTelemetry 17:07
- 53 Distributed Messaging With RabbitMQ 10:54
- 54 API Gateways, Introducing YARP 19:03
- 55 Extracting Modules to Microservices 30:47
- 56 A Note From Me 00:57
- 57 Introduction, Document Databases 09:22
- 58 Implementing CQRS With MongoDB 31:01
- 59 A Small Ask From Me 01:15
Related courses
-
Updated 2y agoFundamentals of Backend Engineering
By: UdemyFundamentals of Backend Engineering by Hussein Nasser — communication patterns, protocols, scaling and database internals for senior developers.16 hours 53 minutes 4 seconds 5 / 5 -
Updated 2y agoSoftware Essentialist
By: Khalil StemmlerLearn to write scalable, testable TypeScript and Master the 12 Essentials of design, architecture & testing from first principles.34 hours 6 minutes 47 seconds 5 / 5 -
Updated 2y agoDesign Microservices Architecture with Patterns & Principles
By: UdemyIn this course, we’re going to learn how to Design Microservices Architecture with using Design Patterns, Principles and the Best Practices with Iterate Design17 hours 26 minutes 52 seconds