1 — Core Compute Services
Les grandes familles compute Azure → VM/VMSS, App Service, ASE, Functions : choisir selon contrôle OS, coût, isolation réseau et scalabilité. (Containers → fiche 3, batch → fiche 2.)
A. Decision tree compute
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
⚠️ 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 nouvelles VMs Gen2 (GA via portail/PowerShell/CLI) |
| 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) |
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 VDI / Desktops distants — AVD & Windows 365 (awareness)
Le scope "Recommend a compute solution per workload requirements" peut inclure le VDI / postes distants. À reconnaître, pas à maîtriser en profondeur.
| Azure Virtual Desktop (AVD) | Windows 365 (Cloud PC) | |
|---|---|---|
| Modèle | VDI managé, Windows 10/11 Enterprise multi-session (ou single-session) | Cloud PC par-utilisateur, dédié/persistant |
| Host pools | Pooled (sessions partagées, FSLogix) vs Personal (1 VM/user) | N/A (1 Cloud PC par user) |
| Gestion infra | Toi : tu gères les session hosts (VMs), images, scaling | Zéro infra : MS provisionne/gère le Cloud PC |
| Facturation | Consommation (compute VMs + licences) | Prix fixe mensuel par user (prévisible) |
| Use case | Postes distants, apps legacy centralisées, BYOD sécurisé, scale/contrôle coût fin | Cloud PC simple par user, prévisibilité budgétaire, faible overhead |
🎯 Mémo design 305 :
- "VDI flexible multi-session, contrôle coût/scale, je gère les session hosts" → AVD
- "Cloud PC simple par utilisateur, prix fixe mensuel prévisible, zéro gestion d'infra" → Windows 365
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.
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
| 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
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
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
| 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 |
🏢 Scénarios d'entreprise (CAF/WAF)
Scénario 1 : Assurance — App web réglementée zone-redundant (least cost vs ASE)
Contexte business : Un assureur santé migre son portail de sinistres vers Azure. Il veut : accès public filtré, lien privé vers la base SQL, et haute dispo dans la région. Le RSSI réclamait un ASE v3 par réflexe « isolation ». Choix architectural : App Service Premium v3 (zone-redundant), exposé via App Gateway + WAF, base SQL jointe en privé via Private Endpoint. → pas besoin d'ASE v3 (trop cher) ici. Architecture / pattern :
- App Service Premium v3 réparti sur 3 zones → SLA 99.99%.
- App Gateway WAF_v2 = seule porte d'entrée publique ; il joint l'app en privé (Private Endpoint).
- L'app joint SQL, Key Vault, Storage en privé (VNet Integration + Private Endpoints). Certif TLS dans Key Vault. Trade-offs assumés :
- Gain : ~10x moins cher qu'un ASE v3, déploiement en minutes (vs 2-4h), même HA 99.99%.
- Perte : hardware partagé (multi-tenant). Insuffisant si la compliance exige une isolation physique (PCI-DSS/FedRAMP strict). Pièges à éviter :
- Private Endpoint entrant + zone redundancy = Premium v3+ seulement.
- Zone redundancy = à activer à la création du plan, irréversible.
- Ne pas laisser l'app aussi accessible en public : n'autoriser que l'IP de l'App Gateway. 📐 Réf. WAF — Baseline highly available zone-redundant web application : architecture de référence WAF qui valide précisément ce pattern (App Service zone-redundant + App Gateway/WAF + Private Link vers PaaS), en privilégiant le multi-tenant zone-redondant avant d'envisager l'isolation ASE. Lien
Scénario 2 : Média — Pipeline de traitement de fichiers serverless (fan-out/fan-in)
Contexte business : Studio média : à chaque livraison, des milliers de fichiers doivent être traités en parallèle puis agrégés en un rapport. Charge sporadique (rien entre deux livraisons), objectif coût minimal, et reprise après crash sans tout relancer. Choix architectural : Azure Functions Flex Consumption + Durable Functions (pattern fan-out/fan-in), déclenché par upload Blob. Architecture / pattern :
- Flex Consumption : scale-to-zero (coût nul à l'idle), montée jusqu'à 1000 instances selon la charge.
- Durable Functions : un orchestrateur lance N tâches en parallèle (1 par fichier) puis agrège les résultats. Checkpoint auto → reprise au point d'arrêt après un crash.
- Accès privé au Storage / base de métadonnées via VNet Integration. Trade-offs assumés :
- Gain : facturé à l'usage (GB-sec), résilient aux redémarrages, pas de file d'attente à gérer à la main.
- Perte : Flex Consumption = Linux only, pas de slots, et un quota régional (cores) qui peut brider le scale avant 1000. Pièges à éviter :
maximum-instance-count< 40 sur du HTTP → throttling sous charge.- Le plafond 1000 est théorique : le quota régional de cores est atteint avant → le surveiller / demander une hausse.
- Ne pas recoder la coordination à la main : c'est tout l'intérêt de Durable Functions. 📐 Réf. Durable Functions — Fan-out/fan-in pattern : pattern officiel de parallélisation + agrégation avec durable execution, alternative au couple file d'attente + 2 functions. Lien
Scénario 3 : Recherche — Calcul batch tolérant aux interruptions (cost optimization Spot)
Contexte business : Labo de génomique : analyses massivement parallèles (jobs de quelques heures, découpés en milliers de tâches indépendantes). Délai flexible, priorité = réduire la facture compute. Choix architectural : VMSS Flexible avec mix Spot/dédié (Spot Priority Mix), tâches courtes et checkpointées. Architecture / pattern :
- VMSS Flexible réparti sur les zones ; Spot Priority Mix = un socle de VMs dédiées (le job avance toujours) + un complément Spot (jusqu'à -90%).
- Avant éviction, Azure prévient (~30s via Scheduled Events) → on sauvegarde l'avancement.
- Spot Placement Score pour choisir région/SKU où le Spot est le plus dispo. Trade-offs assumés :
- Gain : jusqu'à -90% sur le compute interruptible, le socle dédié garantit la progression même sans Spot.
- Perte : aucun SLA/HA sur les nœuds Spot, éviction à tout moment. Inadapté au prod stateful ou aux jobs MPI (1 VM évincée = tout le job à relancer). Pièges à éviter :
- Pas de Spot pour des tâches longues non checkpointées : une éviction = tout reperdu.
- Pas de 100% Spot pour un job critique en délai : garder un socle dédié.
- VMSS Uniform (legacy) → préférer Flexible pour le mix Spot/dédié et le cross-AZ. 📐 Réf. WAF — Architecture best practices for Azure Virtual Machines (Cost Optimization) : recommandation WAF d'utiliser Spot pour les workloads batch interruptibles et de mixer dédié/Spot via Flexible orchestration + Spot Placement Score. Lien
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