Does this sound familiar?

In the early days of your project, everything was great: the small code base was easy to understand, you could add features and fix bugs quickly, you could verify the whole app was working properly with just a few manual tests and you were able get a new version up and running any time your boss asked to show your progress.

A year later, your customers are loving your app, but now that your team has grown and you have to deal with thousands of lines of code, things are not fun anymore:

  • The code base is too complex to understand and explain to new team members, which makes adding new features and fixing bugs difficult and time consuming
  • Loading and building the code in your IDE keeps getting slower. It's painful to make even one-line changes
  • The app keeps breaking very frequently now that there are so many devs making changes at the same time. Even a small bug in a single module can break the whole thing
  • You keep missing deadlines. With so much to build and test, you can only release new bits once a month, and usually late on a Friday or Saturday night
  • Scaling to handle the increasing load is too hard. Getting new servers, configuring them, deploying your app there, etc. And when the load goes down, so much wasted server power.
  • Move to the latest .NET stack? Only a dream. It would mean rewriting a crazy amount of code, not to mention the time needed to verify all features keep working properly and reconfiguring your production environment for the latest tech

There must be a better way, right? After reading a few blog posts and watching some YouTube videos, you realize you are suffering from a case of monolithic hell, and you keep hearing that the way to get out of this mess is to adopt a microservices architecture.

What Are Microservices?

Autonomous, loosely coupled services

Microservices are an architectural style that structures an application as a collection of autonomous, loosely coupled services that are modeled around a business domain. Each microservice is focused on doing one thing well.

Owned by small, focused teams

A microservice is small enough that a single feature team can own it. Small team sizes promote greater agility. Large teams tend be less productive, because communication is slower, management overhead goes up, and agility diminishes.

Built and deployed independently

A team can update an existing microservice without rebuilding and redeploying the entire application and roll back an update if something goes wrong. In traditional applications, a bug found in one part of the application, can block the entire release.

Building Microservices With .NET Online Course


Building Microservices With .NET is the complete learning path that will teach you how to master all the building blocks of a complete .NET microservices architecture that finally lets you continuously deliver resilient and scalable systems in minutes, not months.

You will learn:

  • How to create autonomous microservices that your teams can build and deploy in minutes, not months
  • How to design distributed systems that can actually scale to handle production demands
  • How to modernize your software development skills and be ready for your next .NET job or project
  • How to go beyond the theory and start building microservices with .NET, step by step

Who is using microservices?

Top companies that are constantly dealing with very complex changing requirements have been embracing microservices for several years.

Only microservices allow teams to stay agile and autonomous, while also getting your system ready to scale when unexpected traffic peaks show up.


Is Building Microservices With .NET Right For You?

Building Microservices With .NET is perfect for software engineers that want to update their knowledge of design and development of complete backend systems, end to end, with the latest .NET platform innovations, especially:

  • Dev leads and software architects, familiar with C#/.NET/ASP.NET Core, looking to understand if microservices is the right choice for their next project.
  • Experienced C#/.NET/ASP.NET developers tired of the pains caused by monolithic systems, looking for the best approach to transition to a modern microservices architecture.

The microservices learning path


What you get when you enroll

27+ hours on-demand video

More than 27 hours of didactic, high-quality video, specifically designed for learning purposes.

Source code

Each coding lesson includes downloadable source code so you can easily compare and troubleshoot.

Full lifetime access

Learn at your own pace, from anywhere and come back anytime. You'll have full access for life.

The complete learning path in numbers




Hours of video


Happy Students

Course Curriculum

Week 1: Fundamentals

01 Welcome to the course! 5 lessons
  • Course Introduction
  • Source code and other course downloads
  • Development environment setup
  • What's wrong with the monolith?
  • What are microservices?
02 Your first microservice 5 lessons
  • Creating a microservice via the .NET CLI
  • Introduction to the REST API and DTOs
  • Adding the DTOs
  • Adding the REST API operations
  • Handling invalid inputs
03 Adding database storage 7 lessons
  • Introduction to the repository pattern and MongoDB
  • Implementing a MongoDB repository
  • Using the repository in the controller
  • Introduction to Docker
  • Trying out the REST API with a MongoDB container
  • Introduction to Dependency Injection and Configuration
  • Implementing dependency injection and configuration
04 Preparing for the next microservice 7 lessons
  • Using Postman
  • Reusing common code via NuGet
  • Refactoring into a generic MongoDB repository
  • Refactoring MongoDB registration into extension methods
  • Moving generic code into a reusable NuGet package
  • Introduction to Docker Compose
  • Moving MongoDB to docker compose
05 Synchronous inter-service communication 8 lessons
  • Creating the Inventory microservice
  • Introduction to synchronous communication
  • Implementing synchronous communication via IHttpClientFactory
  • Understanding timeouts and retries with exponential backoff
  • Implementing a timeout policy via Polly
  • Implementing retries with exponential backoff
  • Understanding the circuit breaker pattern
  • Implementing the circuit breaker pattern
06 Asynchronous inter-service communication 7 lessons
  • Introduction to asynchronous communication
  • Defining the message contracts
  • Publishing messages via MassTransit
  • Standing up a RabbitMQ docker container
  • Refactoring MassTransit configuration into the reusable NuGet package
  • Consuming messages for eventual data consistency
  • Removing the inter-service synchronous communication
07 Initial Frontend Integration 6 lessons
  • Installing Node.js
  • Getting the React frontend source code
  • Getting started with the frontend
  • Understanding CORS
  • Adding the CORS middleware
  • Exploring the frontend to microservices communication

Week 2: Security

08 Identity in Microservices 4 lessons
  • Introduction to ASP.NET Core Identity
  • Creating the Identity microservice
  • Integrating ASP.NET Core Identity with MongoDB
  • Adding the Users REST API
09 Microservices Security Patterns and Techniques 4 lessons
  • Microservices authentication
  • Introduction to OAuth 2.0
  • Introduction to OpenID Connect
  • Introduction to IdentityServer
10 Implementing Microservices Security 7 lessons
  • Setting up IdentityServer
  • Requesting tokens via Postman
  • Understanding JSON Web Tokens
  • Securing the Catalog microservice
  • Generalizing how to add authentication to microservices
  • Securing the Inventory microservice
  • Securing the Identity microservice
11 Authorization in Microservices 6 lessons
  • Storing secrets during local development
  • Understanding Authorization in ASP.NET Core
  • Seeding users and roles
  • Adding users to the Player role
  • Implementing role-based authorization
  • Implementing claims-based authorization
12 Frontend Integration to Secure Microservices 7 lessons
  • Getting the React frontend source code
  • Configuring CORS in the Identity microservice
  • Adding the frontend client to the IdentityServer configuration
  • Fixing the logout experience
  • Using ID tokens in the frontend client
  • Using access tokens in the frontend client
  • Fixing the user registration experience

Week 3: Transactions

13 Transactions with Microservices 4 lessons
  • Database Transactions
  • Distributed Transactions
  • Introduction to Sagas
  • Choreographed VS Orchestrated Sagas
14 Preparing the Saga participants 5 lessons
  • Purchase Saga Overview
  • Publishing Catalog prices
  • Allowing services to customize the retry configuration
  • Granting and subtracting items via asynchronous messages
  • Debiting gil via asynchronous messages
15 Implementing the Purchase Saga 12 lessons
  • Creating the Trading microservice
  • Creating a MassTransit state machine
  • Initializing the state machine
  • Adding the Purchase controller
  • Configuring the Trading microservice
  • Trying out the state machine
  • Querying the state machine via a controller action
  • Consuming Catalog prices in the Trading microservice
  • Adding a custom state machine activity
  • Sending and consuming Inventory messages from the state machine
  • Unsing the MassTransit In-Memory Outbox
  • Sending and consuming Identity messages from the state machine
16 Compensation and Idempotency 6 lessons
  • Compensating actions in the state machine
  • Idempotency in microservices
  • Adding idempotency to a controller action
  • Handling out of order messages in the state machine
  • Handling message duplication
  • Implementing idempotent consumers
17 The Frontend Store Experience 9 lessons
  • Store experience overview
  • Publishing inventory updated events
  • Publishing user updated events
  • Consuming Inventory and Identity events in the Trading microservice
  • Implementing the Store controller
  • Trying out the updated Frontend portal
  • Real-time updates via SignalR
  • Configuring SignalR authentication
  • Sending real-time updates from the state machine via SignalR

Week 4: Docker and Microsoft Azure

18 Microservices and Source Control 5 lessons
  • Monorepo vs Multirepo
  • Installing Git
  • Using Git to add files to source control
  • Creating a GitHub organization
  • Uploading files to a GitHub repository
19 Publishing NuGet Packages to GitHub 4 lessons
  • Preparing NuGet packages for GitHub
  • Generating a GitHub Personal Access Token
  • Publishing to GitHub Packages
  • Consuming a NuGet package from GitHub
20 Dockerizing your microservices 5 lessons
  • Running your microservice anywhere via Docker
  • Adding a Dockerfile
  • Consuming NuGet packages within a Dockerfile
  • Building a Docker image
  • Running a Docker container
21 Getting Started with Microsoft Azure 3 lessons
  • Creating an Azure account
  • Installing the Azure CLI
  • Creating an Azure resource group
22 Using Azure Cosmos DB 3 lessons
  • Creating a Cosmos DB account
  • Adding Cosmos DB support to the Common library
  • Using Cosmos DB in a microservice
23 Using Azure Service Bus 3 lessons
  • Creating a Service Bus namespace
  • Adding Service Bus support to the Common library
  • Using Service Bus in a microservice
24 Using the Azure Container Registry 2 lessons
  • Creating an Azure Container Registry
  • Publishing Docker images to Azure Container Registry

Week 5: Cloud Deployment

25 Deploying microservices to Azure Kubernetes Service 6 lessons
  • Introduction to Kubernetes
  • Creating a Kubernetes cluster
  • Defining a Kubernetes deployment
  • Using Kubernetes secrets
  • Creating a Kubernetes pod
  • Creating a Kubernetes service
26 Reporting the microservices health 4 lessons
  • Adding a basic health check
  • Creating a custom database health check
  • Adding Kubernetes health probes
  • Generalizing the health check configuration
27 Storing Secrets in Azure Key Vault 5 lessons
  • Creating an Azure Key Vault
  • Reading secrets from Azure Key Vault
  • Creating AAD pod-managed identities
  • Using AAD pod-managed identities
  • Generalizing the Azure Key Vault configuration
28 Adding the API Gateway 6 lessons
  • Introduction to the API Gateway
  • Installing Helm
  • Installing the Emissary-ingress API Gateway
  • Configuring Routing to a Microservice
  • Running the Identity microservice behind the API gateway
  • Using Postman environments
29 Enabling HTTPS and TLS Termination 6 lessons
  • Installing cert-manager
  • Generating a TLS certificate
  • Enabling HTTPS and TLS termination in Emissary-ingress
  • Forwarding headers to the Identity microservice
  • Creating a signing certificate
  • Using the signing certificate in the Identity microservice
30 Running the system in Production 2 lessons
  • Deploying the Catalog microservice to AKS
  • Trying out the Frontend in Production

What others are saying

I really enjoyed this course. The content and pacing was just right for me as someone with C# experience but little microservices experience. Julio is really responsive to questions and has an engaging teaching style.
Nathan Waterman
Amazing course I'd recommend anybody who wants to quickly grasp the fundamentals of microservices based on the .NET stack in a very practical way. There's no fluff material and the content itself is structured pretty well.
Samuel Tóth
It's a perfect course to learn the basics of microservices. Also, great introductory to learn Docker, Mongo Db and Message Brokers. It's clear and easy to understand.
Alper Tunga
This course teaches you WebApi, DI, new c# 9.0 functionalities, Docker, mongodb, microservices stuff and even some Postman stuff I wasn't aware of. Really went far beyond all my expectations. I did other individual courses about some of these topics (some considerably more expensive) and now I feel that most of these would not have been necessary had I watched this one first. Very likely the best programming course I ever did.
Eduardo Martins
Amazing course content!! The structure and material make it easy to absorb and recreate. Thank you for bringing this out.
Vikas Choodikottammel

Meet your instructor

My name is Julio Casal. I'm a passionate software engineer with almost two decades of experience building all sorts of applications and systems based on the .NET platform.

I like to continuously explore the latest software engineering trends and practices and use them to solve real world problems.

I believe reducing complex concepts into simple step by step instructions is incredibly valuable and helps to make coding accessible and fun for everyone.

Start Building Microservices With .NET Today!

One-time payment
Best Value

  • Instant access to the latest course content
  • 27+ hours of self-paced, high-quality training
  • Full source code for all coding lessons
  • All Postman collections used in the course
  • Lifetime access
  • Full captions
  • Ask questions to the instructor any time
  • Access the course discussions
  • Get new modules at no additional cost
  • Money Back Guarantee
Payment Plan
$97/ mo
x 12 months

  • Instant access to the latest course content
  • 27+ hours of self-paced, high-quality training
  • Full source code for all coding lessons
  • All Postman collections used in the course
  • Lifetime access
  • Full captions
  • Ask questions to the instructor any time
  • Access the course discussions
  • Get new modules at no additional cost
  • Money Back Guarantee

Money Back Guarantee

I do my best to provide high-quality content that will meet or exceed your expectations. But if for whatever reason you find this course isn't for you, you can request a refund during the first 30 days.


Do you offer team discounts?

Yes, I can provide team discounts depending on how many people you need to enroll.

When does the course start and finish?

Building Microservices With .NET is a completely self-paced online course. You decide when you start and when you finish.

Can you provide an invoice to request reimbursement from my employer?

Yes, I can provide an invoice upon your request. I will only need you to provide billing details.

Do you offer a certification on course completion?

Yes, you will get a certificate at no additional cost after completing all the course lessons and assignments.

How long will I have access to the content?

Your enrollment includes unlimited lifetime access and free updates for life.

Will I have to pay for new modules when they are released?

No, your purchase includes any future modules and course updates at no additional cost.