Detailed Course Outline
Introduction to Cloud Native Applications
- What are Cloud Native Applications
- App Monolith vs Microservices
- Domain Driven Design (DDD) and Bounded Context Pattern
- Microservices Communication Patterns (Sync, Async, Event Driven)
- Api Gateway Pattern, Frontend Aggregation Pattern
- What are Event Driven Applications
- What are Cloud Architecture Design Patterns
- Creating Software Architecture Diagrams
Recap: Building Blocks & Architecture Overview
- Hosting: Containers, Kubernetes and Functions (Serverless / Containers)
- Storage: Azure Cosmos DB, Azure SQL, Blob Storage
- Configuration Management, Secrets: Key Vault, App Config Service
- Messaging Brokers: Service Bus, Event Hub, Event Grid
- Real Time: Azure SignalR Service, Azure Web PubSub
- Access & Management: API Management & Application Gateway
- Authentication & Authorization: Microsoft Identity & Managed Identities
Container Essentials & Patterns
- Container Recap (Multistage Build, Run, Debug, Publish to ACR)
- Configuration Management Options (Env Variables, ConfigMaps, Azure App Config Service)
- Docker Development Workflow and Debugging
- Using docker-compose.yaml to locally test multiple containers
- Stateful Containers using Azure Blob Storage and Volume Mounts
- Understanding and using Sidecar Pattern
- Azure Container Hosts: Azure Container Apps vs Kubernetes
Schemaless and Event Optimized Data storage using Cosmos DB
- Cosmos DB Partitioning Strategies
- From Relational to Schemaless: Does and Don'ts
- Implementing Domain Driven Design for microservices
- Cosmos DB Change Feed and Event Sourcing
- Understanding and implementing the CQRS Pattern
Implementing Microservices using Durable Azure Functions
- Serverless and Azure Functions Recap
- Hosting: Serverless vs Containers
- Implementing OData and Open API Support
- Hosting and Scaling Function Apps in Containers
- Durable Functions and Patterns
- Using Azure Durable Entities for Long running processes and background Tasks
- Monitoring Durable Functions
- Implementing a Microservice using Azure Durable Functions
- Implementing a Saga Pattern using Durable Functions
- Changing Storage Providers in Azure Durable Functions
Introduction to Azure Container Apps (ACA)
- What is Azure Container Apps
- Deploying a muliti-container App (Ingress, Exgress)
- Working with Secrets
- Introduction to KEDA (Kubernetes Event Driven Auto-Scaling)
- Working with Revisions
- Container Apps Authentication and Authorization using Managed Identities
- Container Apps Monitoring and Logging (Observability)
Designing & Implementing Event Driven Apps
- Introduction to Event Driven Architecture
- Common Message Broker Types in Azure
- Messages vs Events
- Message Patterns: Queues vs Topics (Pub/Sub)
- What to choose when: Service Bus vs Event Hub vs Event Grid
- Choosing the Messaging Broker: Features and Use-Cases
- Common Cloud Design Patterns used with Even Driven Architecture
- Event Sourcing and Integration Events
- Publishing & Subscribing Event in Microservices
- Implementing Transactions using the Saga Pattern
- Orchestration vs Choreography
- Refactor Microservices to support Event Based Communication
- Debugging Event Driven Applications
Connecting Microservices using Distributed Application Runtime - Dapr
- Introduction to Dapr
- Dapr Environment Setup & Tooling
- Understanding Dapr Architecture
- Understanding Dapr Pub/Sub
- Using Dapr Components to interact with Azure Services
- Enhance Performance using Dapr State Management
Optimizing and Securing API Access using Api Management
- API Management (APIM) Recap
- APIM Policies Recap (Quotas, Throttling, Mock Response, Retry, ...)
- Understanding Gateway Pattern and Backends for Frontends Pattern
- API Versions and Revisions
- Securing API Access using Authentication & Managed Identities-
- Using Redis Cache in API Management
- Intro to GraphQL and Use Cases
- Introduction to APIM Synthetic GraphQL
Implementing Real Time Micro-Frontends & User Interfaces
- Event Grid Recap
- Real Time Options: SignalR vs Azure Web PubSub
- Introduction to Micro Frontends
- Implementing Reactive Real Time Frontends using Event Grid & Azure Web PubSub
- Implementing a Micro Frontend as Teams App.