1 — Core Compute Services (AZ-305)
A. Decision tree compute AZ-305 ⭐⭐
Le choix entre les 4 grandes familles compute.
Quel type de workload ?
├─ Code event-driven, sporadique, sans serveur à gérer
│ └─ Serverless → Azure Functions (Flex Consumption)
│
├─ App web HTTP/S avec déploiement zip/git, sans gérer l'OS
│ ├─ Multi-tenant standard → App Service (Premium v3) ⭐
│ ├─ Compliance stricte / VNet-only → App Service Environment (ASE v3)
│ └─ Container web simple → Web App for Containers / Container Apps
│
├─ Microservices / containers complexes
│ ├─ Kubernetes managed → AKS (fiche 3)
│ ├─ Serverless containers → Azure Container Apps (fiche 3)
│ └─ Container unique simple → Azure Container Instances (fiche 3)
│
├─ Control total OS / driver custom / agents tiers
│ └─ Azure Virtual Machines (IaaS)
│
└─ HPC / batch parallèle (rendu, scientifique, ML training)
└─ Azure Batch / CycleCloud (fiche 2)
Tableau de décision rapide
| Critère | Serverless (Functions) | PaaS (App Service) | Containers (AKS/ACA) | IaaS (VMs) |
|---|---|---|---|---|
| Gestion OS | ❌ MS gère | ❌ MS gère | ❌ MS gère runtime | ✅ Toi |
| Custom dependencies | Limité (runtime fixé) | Limité (runtime fixé) | ✅ (image) | ✅ (full) |
| Scaling | Auto event-driven | Auto par instance | Auto (HPA, KEDA) | Manuel ou VMSS |
| Billing | Pay-per-execution | Plan fixe ($/h) | Plan + workload | Per VM/h |
| Cold start | Possible (Flex) | ❌ | Possible (ACA scale-to-zero) | ❌ |
| Use case | API REST sporadique, triggers | Web app prod standard | Microservices, ML inference | Legacy, agents, control OS |
🎯 Règle générale 305 : "sporadique" → Functions · "web app standard" → App Service · "microservices" → AKS / ACA · "control OS / legacy" → VMs.
B. Azure Virtual Machines — design 305 (awareness)
⚠️ Bases VMs (création, OS, NSG, etc.) = AZ-104. Ici juste angle design 305.
B.1 Familles de SKUs (à reconnaître)
| Famille | Use case |
|---|---|
| D-series ⭐ | General purpose équilibré CPU/RAM/IO (default) |
| E-series | Memory-optimized (DB, cache, analytics) |
| F-series | Compute-optimized (web servers, ML inference, batch) |
| M-series | Memory-intensive massif (SAP HANA, in-memory DB jusqu'à TB de RAM) |
| HB / HC / HX | HPC (calcul parallèle, voir fiche 2) |
| N-series (NC/ND/NV) | GPU (ML training, rendu, VDI) |
🎯 Question 305 type : "App standard web tier" → D. "SQL Server gros workload mémoire" → E ou M. "ML training" → N (ND/NC). "HPC simulation" → fiche 2.
B.2 Security features VMs ⭐
| Feature | Quoi |
|---|---|
| Trusted Launch ⭐ | Secure Boot + vTPM (anti-rootkit). Default sur VMs Gen2 2026+ |
| Confidential VMs | RAM chiffrée via AMD SEV-SNP — encryption in-use (workloads ultra-sensibles) |
| Encryption at Host | Encryption disks + caches niveau hyperviseur (recommandé prod 305 vs ADE legacy) |
| Azure Disk Encryption (ADE) | BitLocker/DM-Crypt OS-level (legacy mais audit visible) |
🚨 Détail encryption VMs → fiche 9 Data Protection section G.
B.3 Spot VMs
- Jusqu'à -90% sur prix on-demand.
- Azure peut évincer la VM à tout moment (30s warning).
- Use case : batch tolérants à l'interruption, dev/test, CI/CD runners, calcul scientifique avec checkpoints.
B.4 HA / Distribution
| Option | Scope | SLA |
|---|---|---|
| Availability Set (AS) (legacy) | Même DC, fault/update domains | 99.95% (2+ VMs) |
| Availability Zone (AZ) ⭐ | 3 DCs physiques dans la région | 99.99% (1 VM par AZ) |
| VMSS Flexible ⭐ | N VMs auto-scaled across AZ | 99.99% |
| Proximity Placement Group | VMs très proches physiquement (low latency) | — |
🎯 Au 305 : AZ > AS quasi-systématique en prod. AS = legacy/régions sans AZ.
B.5 Pièges VMs 305
- 🚨 Spot VMs : pas pour prod stateful (Azure évincte sans préavis long).
- 🚨 VM Series H (HPC) → fiche 2 Big Compute.
- 🚨 Détails encryption (CMK, Confidential, ADE vs Encryption at Host) → fiche 9.
C. App Service Web Apps (PaaS)
C.1 C'est quoi
PaaS managé pour apps web HTTP/S (.NET / Java / Node / Python / PHP / Ruby / containers). MS gère OS, runtime, patching, scaling. Tu déploies juste ton code.
C.2 Tiers / Plans ⭐
| Tier | Use case |
|---|---|
| Free / Shared | Dev/test, multi-tenant strict |
| Basic (B1-B3) | Dev/staging, pas d'autoscale |
| Standard (S1-S3) | Prod basique, autoscale, slots, custom domain |
| Premium v3 (P0v3-P5v3) ⭐ | Prod moderne, zone-redundancy, VNet integration, autoscale rapide |
| Isolated v2 (I1v2-I6v2) | ASE v3 : single-tenant, isolation hardware |
🎯 Mémo 305 :
- "Prod standard sans compliance stricte" → Premium v3 ⭐
- "VNet integration + zone-redundant" → Premium v3
- "Compliance PCI/HIPAA + single-tenant" → Isolated v2 (ASE v3)
- "Dev/test" → Basic ou Standard
C.3 Features clés design 305
| Feature | Quoi | Tier requis |
|---|---|---|
| Deployment slots | Blue-green deployment, swap zero downtime, rollback | Standard+ |
| Autoscale | Scale rules CPU/RAM/custom metrics | Standard+ |
| VNet Integration (outbound) | App → ressources VNet privées | Standard+ |
| Private Endpoint (inbound) | App = privée, accès VNet only | Premium v3+ |
| Zone redundancy | 3 AZ, SLA 99.99% | Premium v3+ |
| Easy Auth (Entra) | Auth Entra/OIDC sans coder | Tous |
| App Service Backup | Backup auto vers Storage | Standard+ |
| Custom domain + TLS | Cert KV-managed (rotation auto via MI) | Basic+ (TLS sni : Standard+) |
| Hybrid Connections | Reach 1 endpoint on-prem sans VPN | Premium |
C.4 Multi-tenant Premium v3 vs Single-tenant ASE v3
| Premium v3 + PE + VNet Integration | ASE v3 (Isolated v2) | |
|---|---|---|
| Isolation | Multi-tenant hardware partagé | Single-tenant stamp dédié |
| Coût | ~$70-150/mois/app | ~$1k/mois fixe stamp + $/instance |
| Use case | 99% des cas ⭐ | Compliance PCI/HIPAA strict ou 20+ apps |
| Provisioning | Minutes | 2-4h |
🎯 "Web app prod avec VNet privée + zone-redundant" → Premium v3 + PE + VNet Integration (suffit 99% des cas). 🎯 "PCI-DSS / HIPAA / FedRAMP isolation hardware" → ASE v3.
C.5 Pièges App Service 305
- 🚨 Slots = Standard+ (pas Basic ni Free).
- 🚨 Private Endpoint inbound = Premium v3+.
- 🚨 Zone redundancy = Premium v3+.
- 🚨 ASE v3 = dernière option sauf compliance ou >20 apps : trop cher sinon.
D. App Service Environment (ASE) v3
D.1 C'est quoi
App Service single-tenant déployé dans ton VNet : isolation hardware, compliance stricte, "zero public" via ILB (Internal Load Balancer).
D.2 Architecture rapide
- Subnet dédié dans ton VNet (
/24recommandé). - Internal ASE (ILB) ou External ASE (public isolé).
- Provisioning : 2-4h.
- Multiples plans Isolated v2 dans le même ASE (mutualisation).
D.3 Multi-tenant vs ASE
| Critère | Multi-tenant (Premium v3) | ASE v3 |
|---|---|---|
| Isolation | Partagée | Single-tenant stamp dédié |
| Coût | $/instance | $/h fixe + $/instance (~$1k base) |
| Network | VNet integration | Déployé DANS ton VNet |
| SKU apps | F1/B/S/P | Isolated v2 (I1v2-I6v2) |
| Inbound | Public optionnel | ILB (internal) ou external |
- Max 200 instances Isolated v2 par ASE.
D.4 Quand l'utiliser
| Besoin | ASE v3 ? |
|---|---|
| Compliance stricte (PCI-DSS, HIPAA, FedRAMP) | ✅ |
| Zero public apps VNet-only via ILB | ✅ |
| Forced tunneling outbound (UDR) | ✅ |
| Très gros workloads mutualisés (20+ apps prod) | ✅ |
| Petites apps standards | ❌ → Premium v3 + PE |
D.5 HA / DR
Zone redundancy (intra-region) :
- Option à la création (irréversible), min 3 instances → distribue auto sur 3 AZ.
DR cross-region :
- Pas de réplication native d'ASE.
- Pattern : 2 ASEs + Front Door + données geo-replicated.
D.6 Pièges ASE 305
- 🚨 ASE v3 = dernière option, trop cher sauf compliance ou 20+ apps. Préférer Premium v3 + PE + VNet Integration pour 99% des cas.
- 🚨 HA intra-region = zone redundancy à activer à la création (irréversible).
- 🚨 ASE v1/v2 retirés 31 août 2024. Pas d'upgrade in-place → recréer ASE v3 + ASE Migration Feature.
E. Azure Functions (serverless)
E.1 C'est quoi
Compute serverless event-driven : code exécuté en réponse à un trigger, billing à l'exécution.
E.2 Hosting Plans ⭐⭐
| Plan | Cold start | Scale | Timeout | Slots | Billing |
|---|---|---|---|---|---|
| Flex Consumption ⭐ | Quasi nul | Scale-to-zero, event-driven (jusqu'à 1000) | Configurable | ❌ | Pay-per-use (GB-sec) |
| Premium | ❌ | Pre-warmed dédié (jusqu'à 100) | Illimité possible | ✅ | $/h fixe (payé même idle) |
| Dedicated (App Service Plan) | ❌ | Autoscale du plan | Illimité | ✅ | Inclus dans coût du plan |
| Oui | Event-driven | 10 min max | ❌ | 🚨 Linux sunset 30 sept 2028 |
🎯 Choix 305 :
- "Sporadique, minimize cost" → Flex Consumption ⭐
- "Latence critique, VNet strict, long-running" → Premium
- "Plan App Service existant sous-utilisé" → Dedicated (coût marginal nul)
E.3 Triggers / Bindings (awareness)
| Trigger | Use case |
|---|---|
| HTTP | API REST, webhook |
| Timer | CRON (archive logs nocturne) |
| Blob | Réagir upload (génère thumbnails) |
| Queue / Service Bus | Worker pattern |
| Event Grid | Événement Azure (Blob deleted → notif) |
| Event Hub | Streaming massif IoT |
| Cosmos DB Change Feed | React new doc |
1 trigger par function. Bindings input/output = N (lire Blob + push Queue déclaré dans config, sans coder les SDK).
E.4 Durable Functions — awareness 305
Extension qui rend les Functions stateful : workflows long-running, reprise sur crash, attente d'événements (heures/jours).
| Pattern | Quand |
|---|---|
| Function chaining | Séquence F1 → F2 → F3 |
| Fan-out / Fan-in | N tasks parallèles + agrégation |
| Async HTTP API | Réponse 202 + statusUrl à poll |
| Monitor | Poll périodique d'un état externe |
| Human interaction | Pause pour approbation humaine |
🎯 Au 305 : "Workflow long-running orchestré code-first + reprise crash + parallèle" → Durable Functions. "Workflow low-code SaaS connectors" → Logic Apps (fiche 5).
E.5 Functions vs Logic Apps
| Critère | Functions | Logic Apps |
|---|---|---|
| Approche | Code (.NET/Node/Python/Java) | Designer visuel low-code |
| Audience | Devs | Devs + IT Pros |
| Connecteurs | À coder | 1000+ prêts (SaaS, on-prem) |
| Pricing | Pay-per-exec ou plan | Pay-per-action ou plan |
E.6 Networking (awareness)
| Méthode | Direction | Use case |
|---|---|---|
| VNet Integration | Outbound (Function → VNet) | Function appelle DB privée |
| Hybrid Connections | Outbound (Function → host:port on-prem) | 1 endpoint on-prem TCP sans VPN (Premium/Dedicated only) |
| Private Endpoint | Inbound (VNet → Function) | Function privée, zero public |
E.7 HA / DR
Zone redundancy :
- Flex Consumption : ✅ par défaut sur régions supportées.
- Premium / Dedicated v3 : ✅ option à la création (irréversible, min 3 instances).
Cross-region DR : 2 Function Apps + Front Door + données geo-replicated.
E.8 Pièges Functions 305
- 🚨 Slots = Premium/Dedicated uniquement.
- 🚨 Hybrid Connections = Premium/Dedicated uniquement.
- 🚨 Workflow low-code SaaS → Logic Apps, pas Functions.
- 🚨 Long-running stateful → Durable Functions.
- 🚨 Détail sécurité (keys, authLevel) = AZ-204, hors scope 305.
F. Scénarios 305 → solution ⭐⭐
| Scénario business | Réponse |
|---|---|
| "API REST sporadique event-driven, minimize cost" | Functions Flex Consumption |
| "Workflow long-running parallèle + reprise crash" | Durable Functions (Premium) |
| "Workflow low-code Email → SharePoint + Teams + SAP" | Logic Apps (fiche 5) |
| "Web app prod multi-region + zone-redundant + VNet integration" | App Service Premium v3 + PE + VNet Integration + Front Door (fiche 6) |
| "Web app compliance PCI-DSS isolation hardware" | ASE v3 (Isolated v2) |
| "Web app dev/test pas cher" | App Service Basic ou Standard |
| "Blue-green deployment zero downtime + rollback" | App Service Slots (Standard+) |
| "Migration SAP HANA in-memory massif" | VM M-series |
| "ML training GPU" | VM ND/NC series (N-series) |
| "Web tier prod scale auto across 3 AZ" | VMSS Flexible zone-distributed |
| "Batch tolérant interruption -90% coût" | Spot VMs |
| "Workload ultra-sensible avec RAM chiffrée" | Confidential VMs (fiche 9) |
| "App moderne containerisée microservices" | AKS ou Container Apps (fiche 3) |
| "HPC simulation parallèle MPI" | Azure Batch ou HBv4 (fiche 2) |
| "Legacy app avec drivers custom OS-level" | Azure VMs (IaaS) |
| "Function appelle DB privée Azure SQL" | Functions Premium + VNet Integration |
| "App globale 24/7 multi-region avec failover auto" | App Service x2 régions + Front Door (fiche 6) |
| "Function publique sans coder l'auth" | Easy Auth (Entra) sur la Function |
DEMO
Demo Portail — Function App (Flex Consumption)
Function App > Create > Hosting plan: Flex Consumption- Onglet Basics :
- Subscription / Resource Group :
rg-functions - Function App name :
func-orders(FQDN unique) - Region : East US
- Runtime stack : Node 20 (ou Python / .NET / Java)
- Subscription / Resource Group :
- Onglet Storage : Storage Account
stfuncorders(requis) - Onglet Networking : Toggle Enable VNet integration : On → choisir VNet + subnet délégué
- Onglet Monitoring : Application Insights : On
- Onglet Deployment :
- Always Ready instances : 0 (ou N pour réduire cold start)
- Maximum instance count : 100
- Instance memory : 2048 MB
- Review + Create
CLI équivalent (pour IaC) :
az functionapp create -g rg-functions -n func-orders \
--flexconsumption-location eastus --runtime node --runtime-version 20 \
--storage-account stfuncorders --instance-memory 2048 --maximum-instance-count 100
ASE v3 (Internal)
App Service Environments > Create- Basics : name + region
- Hosting : Virtual IP type: Internal (ILB) ou External
- Networking : VNet existant + subnet dédié vide (
/24recommandé) - Create → 2-4h provisioning
- Puis :
App Service Plans > Create > Pricing: Isolated v2dans l'ASE - Web App / Function App attachée au plan
- Internal ASE → DNS privé à configurer pour résolution