Detailed Course Outline
Introduction to Cloud Native Applications & Cloud Maturity Model
- What are Cloud Native Applications
- Cloud Maturity Model: Monolith vs Microservices Architecture
- Clean Architecture
- Introduction to .NET Aspire: Orchestration, Components, Tooling
- Microservices Communication Patterns
- Architecture Overview of the Sample App & Services
- Cloud Architecture Design Patterns
- Container Hosting & DevOps
- Provisioning of Azure Resources using Azure CLI & Bicep
- Introduction to Azure Cost Management
Container Essentials & Configuration Management
- Docker Development Workflow: Multistage Build, Run & Debug Recap
- Container builds using Azure Container Registry
- Using docker-compose.yaml to run multiple containers for local development
- Kubernetes Developer Essentials
- Container Configuration Management (Env Variables, Key Vault & Azure App Config Service)
- Understanding the Sidecar Pattern
- Optimizing .NET 8 Container Size using chiseled, trim and aot
- Container Security Patching
Developing & Publishing Microservices using Azure Container Apps (ACA)
- Azure Container Apps Introduction
- Azure Container Apps vs Kubernetes
- Publish Microservices (Ingress, Egress) and manage Revisions
- Secrets, Managed Identities & Service Connectors
- Using Azure App Configuration in Azure Container Apps
- Task Automation using Jobs
- Scaling & KEDA (Kubernetes Event Driven Auto-Scaling)
- Stateful Apps using Volume Mounts & Persistent Storage
- Microsoft Entra ID Easy Authentication
- Health Probes, Monitoring, Logging & Observability
Stateful Microservices using Azure Functions
- OData, Open API Support and Dependency Injection
- Hosting: Serverless vs Containers
- Environment Variables, Key Vault, and App Configuration
- Using Managed Identities and Service Connector to access Azure Resources
- Implementing and monitoring Durable Functions to implement long running processes
- Azure Durable Entities, Aggregation & Virtual Actors
- Publishing Azure Functions to Azure Container Apps
NoSQL Data & Event storage using Cosmos DB
- From Relational to NoSQL: Do's and Don’ts
- Partitioning Strategies & Performance Optimization
- Domain Driven Design (DDD) Basics & Bounded Context Pattern
- Using SDKs to interact with Cosmos DB
- Using Data Api Builder to expose Cosmos DB
- Implementing an Event Store using Event Sourcing
- Creating Materialized Views using Materialized Views Builder
- Optimizing Read/Write Performance with Change Feed & CQRS
Designing and Implementing Message- & Event Driven Apps
- Introduction to Messaging
- Message Types and Channels
- Introduction to Event Driven Architecture (EDA)
- Event Types: Domain-, Integration-, Cloud Events
- Publishing & Subscribing Events using an Event Bus
- Distributed Transactions
- Saga: Orchestration, Choreography
- Common Message Brokers in Azure
Using Distributed Application Runtime - Dapr
- Introduction to Dapr
- Understanding Dapr Architecture & Building Blocks
- Developer Environment Setup, Debugging & State Management
- Using Dapr Components in Azure Container Apps
- Service Invocation & Bindings
- Pub/Sub Messaging
- Secrets and Configuration
- Azure Functions & Dapr Bindings
- Dapr Actors & Saga
- Observability and Distributed Tracing
Optimizing and Securing Access using Api Management & Application Gateway
- API Management (APIM) Recap
- API Versions and Revisions using Azure Container Apps
- Authenticating to Backend Services
- Understanding Gateway Pattern and Backends for Frontend Pattern (BFF)
- Implement BFF using APIM and GraphQL
Connecting Real Time Micro Frontends using Event Grid
- Micro Frontends: Introduction & Benefits
- Publish the Shop Micro Frontend to Azure Container Apps
- Real-time connected Micro Frontend using Azure Event Grid and SignalR
- Connect the Real Time Kitchen Dashboard
- Connect the Order Status Micro Frontend