“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

What's inside

Everything you need to build and scale a modular monolith

.NET 10

Latest features for modular systems

PostgreSQL

Reliable, scalable persistence

RabbitMQ

Distributed messaging between modules

Docker

Containerized dev environment

Evently system architecture diagram
01Fundamental

Modular Monoliths: Introduction

Start with the foundations. Building a modular monolith requires a deep understanding of monoliths and microservices — modular monoliths take the best of both worlds.

46m3 lessons
Watch a free preview
02Fundamental

Defining Module Boundaries

Apply Domain-Driven Design and Event Storming to explore potential domain boundaries. This is where we introduce the Evently sample application we will build.

1h 47m5 lessons
Defining Module Boundaries
03Intermediate

Module Cross-Cutting Concerns

How do you apply cross-cutting concerns without coupling modules? Learn to isolate dependency injection, configuration, logging, caching, and more for each module.

1h 13m9 lessons
Module Cross-Cutting Concerns
04Intermediate

Module Communication

Explore the two ways modules can communicate. This decision determines how flexible your system will be for future changes.

1h 22m8 lessons
Module Communication
05Intermediate

Authentication & Authorization

No production system is complete without robust auth. We introduce token-based authentication and RBAC (Role-Based Access Control).

1h 23m5 lessons
Authentication & Authorization
06Intermediate

Architecture Enforcement

What good is a shiny architecture if you can easily break it? Learn 3 techniques to ensure your team sticks to the modular monolith architecture.

35m3 lessons
Architecture Enforcement
07Advanced

Reliable Messaging: Outbox and Inbox

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

1h 10m4 lessons
Reliable Messaging: Outbox and Inbox
08Advanced

Event-Driven Architecture

What does it mean to be event-driven? Learn how the reactive programming paradigm helps you implement a robust, loosely coupled system.

1h5 lessons
Event-Driven Architecture
09Intermediate

Testing Modular Monoliths

How can you have complete confidence in your system? A powerful approach for testing modular monoliths that is almost like running it in the real world.

1h 14m5 lessons
Testing Modular Monoliths
10Advanced

Microservices: Extracting Modules

Finally, transition from a modular monolith to microservices. We also introduce an API Gateway and a distributed messaging system.

1h 24m5 lessons
Microservices: Extracting Modules
Get instant access

More than just theory

We build a production-ready system from scratch — dozens of API endpoints, 50+ use cases, and 6000+ lines of code. Plus bonus courses to make sure you apply what you learn.

Modular Monoliths: CQRS With MongoDB
Bonus course #1

Modular Monoliths: CQRS With MongoDB

Wondering how to introduce a document database to a modular monolith? This bonus course contains the answers.

Modularize Your Monolith: A Quick GuideCommunity
Bonus course #2

Modularize Your Monolith: A Quick Guide

A complete bonus course that walks you through modularizing an existing monolith application, step by step.

After completing this course you will

  • Confidently use modular monoliths to build robust, scalable systems
  • Create an architecture that stands the test of time
  • Understand how to implement an event-driven system
  • Easily migrate to microservices (if you ever need to)

Start building better modular systems today

One-time payment. Lifetime access, including every future update.

MMA

$297
  • 10 in-depth chapters
  • 12+ hours of video training content
  • Complete project source code
  • Bonus: CQRS With MongoDB
  • Lifetime access
  • Email support
BEST VALUE

MMA + Community

$497
  • 10 in-depth chapters
  • 14+ hours of video training content
  • Complete project source code
  • Bonus: CQRS With MongoDB
  • Bonus: Modularize Your Monolith
  • Lifetime access
  • Priority support
  • Community access

Not sure yet? Preview the free lessons before you buy.

Paying with company money? You'll get a receipt you can submit for reimbursement.

It's the second course I'm taking from Milan and I'm so excited about it. The way it's structured, the depth of each topic and the code is simply excellent. This course is worth every penny I spent on it!
Mykola Kriukov
Mykola Kriukov
Senior Software Engineer

Loved by developers

What students are saying about MMA

Join them today
Course student
Course student
Course student
Course student
Course student
Course student

2,800+ engineers shipping better code

The full curriculum

10 chapters plus bonus courses, all production-focused.

Introduction
  • Agenda, Your Instructor, Course StructureFree preview
  • How To Use This Course
01Modular Monoliths: Introduction
  • Introduction, Monoliths and Microservices
  • Modular Monoliths
  • Module Constraints
02Defining Module Boundaries
  • Domain-Driven Design, Event Storming, Bounded ContextsFree preview
  • Introducing Evently Sample ApplicationFree preview
  • Building the First Module
  • Refactoring to Clean Architecture
  • Events Module Review
03Module Cross-Cutting Concerns
  • 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
04Module Communication
  • 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
05Authentication & Authorization
  • Authentication & Authorization
  • Keycloak Identity Provider Setup
  • Token Based Authentication
  • User Registration With Keycloak
  • RBAC Authorization
06Architecture Enforcement
  • Architecture Enforcement
  • Modular Architecture
  • Architecture Testing
07Reliable Messaging: Outbox and Inbox
  • Reliable Messaging
  • Outbox Pattern
  • Outbox: Idempotent Consumers
  • Inbox Pattern
08Event-Driven Architecture
  • Event-Driven ArchitectureFree preview
  • Event Notifications
  • Event-Carried State Transfer
  • Materialized Views and CQRS
  • Saga Pattern, Orchestration
09Testing Modular Monoliths
  • Testing Modular Monoliths
  • Unit Testing
  • Integration Testing
  • System Integration Testing
  • Automated Testing in CI/CD Pipelines
10Microservices: Extracting Modules
  • Microservices Benefits, Extracting ModulesFree preview
  • Distributed Tracing, OpenTelemetry
  • Distributed Messaging With RabbitMQ
  • API Gateways, Introducing YARP
  • Extracting Modules to Microservices
BONUS — CQRS With MongoDB
  • Introduction, Document Databases
  • Implementing CQRS With MongoDB
BONUS — Modularize Your Monolith: A Quick GuideCommunity
  • Introduction, Modular Monoliths
  • Defining Module Boundaries
  • Introducing Sample Application
  • Module Code Organization
  • Module Communication
  • Module Data Isolation
  • Enforcing Module Boundaries
Get the full course
Course student
Course student
Course student
Course student
Course student
Course student

2,800+ engineers shipping better code

Milan Jovanović

Who's behind this

Hi — I'm Milan Jovanović. I help engineers level up 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 engineers improve through my practical tips on social media, The .NET Weekly newsletter, and YouTube channel.

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

Microsoft MVP Badge

Got questions?

Frequently asked questions

  • Who is this course for?

    This course is for anyone who wants to learn how to build and scale a modular monolith in the real world — and how to design systems that are maintainable, loosely coupled, and ready to evolve into microservices if needed.

  • What will I learn in this course?

    The best practices for applying the Modular Monolith architecture in a real-world scenario, building a production-ready system from scratch.

    • Defining module boundaries with DDD
    • Module communication & cross-cutting concerns
    • Reliable messaging with Outbox and Inbox
    • Event-driven architecture
    • Testing & extracting modules to microservices

    All course content is updated to .NET 10.

  • How long is the course?

    The course includes 12+ hours of video content (14+ hours with the Community edition's bonus material), packed with value and designed to be easy to follow.

  • What does Community Access mean?

    With the MMA + Community Access plan you gain access to the Community section, plus the bonus “Modularize Your Monolith” course. It's where like-minded engineers collaborate and get help, and I'll be there to answer questions too.

  • Got it. This must be expensive, right?

    No. It's $297 on the basic plan.

    And if you want Community access with like-minded engineers, it's $497.

  • Can my company pay for the course?

    Absolutely — many students expense the course through their employer. You'll receive a receipt after checkout that you can submit for reimbursement. If you need anything else, like a quote for multiple team seats, contact me.

  • Do I get lifetime access?

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

  • What are the prerequisites for taking this course?

    You should have at least 1 year of experience with ASP.NET Core and (preferably) Entity Framework Core. Familiarity with Clean Architecture and Docker will help, since we use Docker to run external services like PostgreSQL and RabbitMQ.

  • What if I get stuck during the course?

    The course is carefully designed to build knowledge progressively, so the chances of getting stuck are minimal.

    If you do need help, the Community Access edition gives you direct access to me and other participants.

  • What should I do next if I want to enroll?

    Click any enroll button on this page and get started today.

Enroll now

Ready to level up?

Unlock Modular Monolith Architecture today

Join thousands of developers who have already transformed how they build robust, scalable systems with this course.

Course student
Course student
Course student
Course student
Course student
Course student

2,800+ engineers shipping better code

Lifetime access
12+ hours of content
Production-ready system