"You shouldn't start a new project with microservices, even if you're sure your application will be big enough to make it worthwhile."

— Martin Fowler


Everything you need to build and scale a modular monolith system.

Evently system architecture diagram

Modular Monoliths: Introduction

We'll start with the foundations. Building a modular monolith requires a deep understanding of monoliths and microservices. Modular monoliths take the best of both worlds.

Course snippet

Defining Module Boundaries

You will learn how to apply Domain-Driven Design and Event Storming to explore potential domain boundaries. This is where we'll introduce the sample application we will build.

Course snippet

Module Cross-Cutting Concerns

How do you apply cross-cutting concerns without coupling the modules? Here, you're going to learn how to isolate dependency injection, configuration, and more for each module.

Course snippet

Module Communication

We're going to explore the two ways how modules can communicate. This will determine how flexible your system will be for future changes.

Course snippet

Authentication & Authorization

We can't build a production-ready system without robust authentication and authorization. Here, we will introduce token-based authentication and RBAC (Role-Based Access Control).

Course snippet

Architecture Enforcement

What good is a shiny software architecture if we can easily break it? You'll learn 3 techniques you can apply to ensure your team sticks to the modular monolith architecture.

Course snippet

Reliable Messaging: Outbox and Inbox

What happens if we fail to publish a message? How do we apply temporal decoupling? How do we implement idempotency? You'll learn all of this and so much more.

Course snippet

Event-Driven Architecture

We're going to explain what it means to be event-driven. You will learn how the reactive programming paradigm can help you implement a robust, loosely coupled system.

Course snippet

Testing Modular Monoliths

How can you have complete confidence in your system? I'll show you a powerful approach for testing modular monoliths. It's almost like running our system in the real world.

Course snippet

Microservices: Extracting Modules

Finally, I'm going to present how to transition from a modular monolith to microservices. We will also introduce an API Gateway and distributed messaging system.

Course snippet

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.

Course snippet


Modular Monoliths: CQRS With MongoDB

If you're wondering how to introduce a document database to a modular monolith, this bonus course contains the answers.

Course snippet


Modularize Your Monolith: A Quick Guide

To help you modularize an existing monolith application, I've bundled in a complete bonus course that walks you through the basics.

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)

What Students Are Saying About MMA

Course student
Course student
Course student
Course student
Course student
Course student
4.97/5 from 800+ students

Ready to Join Modular Monolith Architecture?



10 in-depth chapters

12+ hours of video training content

59 high-quality lessons

Complete project source code

Bonus "Modular Monoliths: CQRS With MongoDB" Course

Lifetime updates

Lifetime access

MMA + Community


10 in-depth chapters

14+ hours of video training content

66 high-quality lessons

Complete project source code

Bonus "Modular Monoliths: CQRS With MongoDB" Course

Bonus "Modularize Your Monolith: A Quick Guide" Course

Community access

Lifetime updates

Lifetime access

The Full Curriculum

Introduction (9m)

  • Agenda, Your Instructor, Course StructureFREE PREVIEW
  • How To Use This Course

Modular Monoliths: Introduction (46m)

  • Introduction, Monoliths and Microservices
  • Modular Monoliths
  • Module Constraints

Defining Module Boundaries (1h 47m)

  • Domain-Driven Design, Event Storming, Bounded ContextsFREE PREVIEW
  • Introducing Evently Sample ApplicationFREE PREVIEW
  • Building the First Module
  • Refactoring to Clean Architecture
  • Events Module Review

Module Cross-Cutting Concerns (1h 13m)

  • Cross-Cutting ConcernsFREE PREVIEW
  • Dependency Injection
  • Module Configuration
  • Structured Logging With Serilog and Seq
  • Exception Handling
  • Validation With FluentValidation
  • Distributed Caching With Redis
  • Health Checks
  • Automatically Registering Endpoints

Module Communication (1h 22m)

  • Module Communication PatternsFREE PREVIEW
  • Publishing Domain Events
  • Introducing the Users Module
  • Scaffolding the Ticketing Module
  • Synchronous Communication
  • Duplicating Data Between Modules
  • Asynchronous Communication
  • Eventual Consistency: Introduction

Authentication & Authorization (1h 23m)

  • Authentication & Authorization
  • Keycloak Identity Provider Setup
  • Token Based Authentication
  • User Registration With Keycloak
  • RBAC Authorization

Architecture Enforcement (35m)

  • Architecture Enforcement
  • Modular Architecture
  • Architecture Testing

Reliable Messaging: Outbox and Inbox (1h 10m)

  • Reliable Messaging
  • Outbox Pattern
  • Outbox: Idempotent Consumers
  • Inbox Pattern

Event-Driven Architecture (1h)

  • Event-Driven ArchitectureFREE PREVIEW
  • Event Notifications
  • Event-Carried State Transfer
  • Materialized Views and CQRS
  • Saga Pattern, Orchestration

Testing Modular Monoliths (1h 14m)

  • Testing Modular Monoliths
  • Unit Testing
  • Integration Testing
  • System Integration Testing
  • Automated Testing in CI/CD Pipelines

Microservices: Extracting Modules (1h 24m)

  • Microservices Benefits, Extracting ModulesFREE PREVIEW
  • Distributed Tracing, OpenTelemetry
  • Distributed Messaging With RabbitMQ
  • API Gateways, Introducing YARP
  • Extracting Modules to Microservices

BONUS - Modular Monoliths: CQRS With MongoDB (40m)

  • Introduction, Document Databases
  • Implementing CQRS With MongoDB

BONUS - Modularize Your Monolith: A Quick Guide (1h 31m)

  • Introduction, Modular Monoliths
  • Defining Module Boundaries
  • Introducing Sample Application
  • Module Code Organization
  • Module Communication
  • Module Data Isolation
  • Enforcing Module Boundaries
Course student
Course student
Course student
Course student
Course student
Course student
4.97/5 from 800+ students
Milan Jovanović


Hi – I'm Milan Jovanović. I help software engineers improve their .NET and software architecture skills.

I'm a Software Architect and Microsoft MVP for Developer Technologies with years of experience building large-scale systems.

I've helped thousands of people become better software engineers through my practical tips on social media, The .NET Weekly newsletter, and YouTube channel.

My goal is to teach you everything I learned while building and maintaining production-ready applications using Modular Monolith Architecture.

Frequently Asked Questions

  • Who is this course for?

    This course is for anyone who wants to learn how to build Modular Monoliths in the real world. We'll start from the fundamentals and work our way up to building a production-ready application. We'll also explore distributed systems and microservices.

    That being said, this is not a course for beginners. Expect that you'll have to spend at least 12+ hours watching the video lessons.

  • What will I learn in this course?

    You'll learn the best practices for developing enterprise systems using Modular Monolith architecture. This architectural style gives you the best of both monoliths and microservices.

    This course covers all the fundamentals of designing a modular monolith system, but also explores many advanced topics like distributed messaging and microservices.

    I recommend checking out the Curriculum to see all the lessons and what's covered.

  • How long is this course?

    The main course is 12 hours long. There are also two bonus courses, that introduce an additional 2 hours of content.

  • What does Community access mean?

    If you purchase the MMA + Community Access plan, you will gain access to the Community section and a bonus course called Modularize Your Monolith: A Quick Guide. If you don't want to go through the course alone, it's a great way to enhance your learning experience. The Community is where like-minded engineers like yourself can get together and collaborate. If you get stuck at any point, this is where you will find help. Of course, I'll also be there to answer any questions.

  • Do I get lifetime access?

    Absolutely, YES! You can access the course forever, including any future updates, with no extra payment.