WIKI Retour au Portfolio

Dernière mise à jour : 12 juin 2026

14 — Annexe : Pièges & Commandes AZ-305

Spécifique AZ-305 (design solutions). Pour les commandes AZ-104 de base (RG, VM, Storage, etc.), voir fiche 14 - Pieges & Commandes AZ-104.


PARTIE 1 — Pièges classiques AZ-305 par domaine

🟢 Compute

  • Azure Functions Consumption (Linux) : legacy → migrer vers Flex Consumption pour nouveaux apps. Linux Consumption sunset 30 sept 2028.
  • Functions Premium timeout : default 30 min, configurable illimité via host.json.
  • Functions Consumption timeout : 10 min max non configurable.
  • ASE v3 : facturé même vide (~$1k/mois). À éviter sauf compliance forte.
  • ASE v3 provisioning : 2-4h, pas un bouton magique.
  • Batch Spot nodes : eviction possible → workloads doivent être idempotents.
  • CycleCloud : pour migrer Slurm/PBS sans refactor. Pas pour greenfield workload.

🟢 Containers (AKS)

  • Kubenet : legacy, en décommissioning → Azure CNI Overlay recommandé.
  • Private cluster AKS : API server en PE → besoin VPN/Bastion pour kubectl.
  • System node pool obligatoire : Linux uniquement, pas de spot.
  • HPA seul ne fait pas scale-to-zero → KEDA pour ça.
  • Cluster Autoscaler ne supprime jamais les system pool nodes en dessous de la min.
  • AGIC vs NGINX : AGIC = managé Azure, NGINX = standard K8s mais à mettre à jour soi-même.

🟢 App Security

  • Application permissions : admin consent OBLIGATOIRE (sans → 403 sur client_credentials flow).
  • User Delegated : peut requérir admin consent selon la perm (User.Read.All par ex).
  • Federated Credentials (OIDC) = recommandé moderne (zero secret stored CI/CD).
  • Implicit flow : déprécié, ne jamais utiliser → Auth Code + PKCE pour SPA.
  • MI vs Service Principal : MI = pas de secret. SP = secret/cert à gérer (KV).
  • App Roles vs Groups : roles = data dans le token. Groups = data limitée à 200 (sinon overage claim).

🟢 App Integration

  • Queue Storage 64 KB vs Service Bus 256 KB (Premium 100 MB) : pour gros payloads → Service Bus Premium.
  • Service Bus Premium Geo-DR : structure répliquée (queues, subs), pas les messages en attente.
  • Event Grid = small discrete events (1 MB max). Event Hub = streaming massif.
  • Event Hub partitions : choix immutable (Standard 32 max, Premium 1024). Choisir bien dès le départ.
  • APIM Premium v1 : à migrer vers Premium v2 (provisioning rapide, VNet simplifié).
  • APIM Consumption : pas de VNet integration ni custom domains avec wildcard.
  • Logic Apps Standard vs Consumption : Standard = single-tenant + VNet, Consumption = multi-tenant.

🟢 Data (Cosmos & SQL)

Cosmos DB

  • Partition key : choix critique, modifier = recréer container. Cardinalité élevée + distribution équitable.
  • Logical partition max 20 GB : si dépassé → erreur, repartitionner.
  • Strong consistency = coûteuse en multi-region (writes synchrones).
  • Multi-region writes : Last-Write-Wins par défaut → conflict resolution custom possible.
  • Continuous backup (PITR) : recommandé prod, mais pricing différent (toujours-on).
  • Serverless Cosmos : max 5000 RU/s + 1 TB, pas de multi-region writes, pas de PITR continuous.

Azure SQL

  • Hyperscale Fsv2-series : 🚨 retraite 1er oct 2026 → migrer vers Premium-series ou Standard-series.
  • Hyperscale : pas d'Auto-failover Group avant 2024 (maintenant supporté).
  • Read replicas Hyperscale : ApplicationIntent=ReadOnly connection string.
  • Business Critical : in-cluster replicas inclus (read scale-out gratuit).
  • Auto-failover Group RPO : <5s mais PAS zéro (replication async).
  • Always Encrypted Randomized : pas de queries sur la colonne (sauf Secure Enclaves).
  • DDM ≠ chiffrement : juste affichage masqué, DBAs voient tout.

🟢 Analytics

  • HNS (ADLS Gen2) : à activer à la création seulement, irréversible.
  • Synapse Dedicated SQL pool : pause/resume = économies massives, fais-le quand pas utilisé.
  • Distribution Hash : 60 distributions, mauvais choix de hash key = data skew.
  • Distribution Replicate : <2 GB sinon copies coûteuses.
  • Self-hosted IR : tunnel sortant uniquement (443) → pas besoin d'inbound firewall on-prem.
  • Synapse Link : near-real-time mais pas synchrone, latence quelques minutes.
  • Microsoft Fabric : direction future (mais ADF/Synapse pas dépréciés en 2026).

🟢 Availability & Recovery (SQL)

  • Active Geo-Replication : DNS endpoint change lors failover.
  • Auto-failover Group : DNS endpoint STABLE (<group>.database.windows.net).
  • Grace period Auto-failover : 1-24h, évite bascule sur incidents transients.
  • Multi-region writes CosmosAuto-failover Group SQL : Cosmos = active-active multi-master, SQL = active-passive auto-failover.
  • Zone-redundant SQL : disponible Business Critical + Hyperscale (pas General Purpose Gen5).
  • PITR retention : 7 jours default, 35 max (plus → LTR).
  • LTR : weekly/monthly/yearly, jusqu'à 10 ans.

🟢 Migrations

  • Azure Migrate appliance : nécessite credentials avec read-only sur vCenter / Hyper-V.
  • Discovery : 24-48h minimum pour avoir des perf counters fiables.
  • Performance-based assessment ⭐ : sizing optimisé. As-on-prem = oversized.
  • DMS Online mode : RPO ~minutes, RTO = cutover (5-15 min).
  • Cross-region move : pas natif → Resource Mover ou ASR.
  • 5 R : Rehost (lift-shift) / Refactor / Rearchitect / Rebuild / Replace (SaaS).

🟢 Monitoring

  • App Insights Classic : legacy → Workspace-based recommandé.
  • App Insights URL ping tests : déprécié → Standard tests.
  • Sampling adaptive : recommandé prod (sinon LAW peut exploser).
  • SQL Audit Server-level : couvre toutes les DBs. Préféré à DB-level.
  • Defender for SQL : Vulnerability Assessment + ATP. Coût par DB.
  • Distributed tracing W3C : passe automatiquement entre services si tous sont instrumentés App Insights / OpenTelemetry.

🚨 Pièges nouveaux (exam analyses)

  • 🚨 MySQL/PG Flex Server : Burstable = pas de HA. Pour DR régional → backup GRS (pas ZRS qui ne protège qu'intra-region). Single Server = legacy, pas de maintenance window custom.
  • 🚨 SQL MI : pas de Hyperscale (GP/BC only, cap ~16 TB). Scenario >16 TB → forcément SQL DB Hyperscale, jamais MI.
  • 🚨 Cosmos DB auth : SAS = storage only, PAS Cosmos. Entra RBAC ⭐ prod, ou resource token (per-user/resource TTL, broker server-side). Primary key = full admin, ne pas distribuer.
  • 🚨 Activity Log vs Resource Graph : Activity Log = timeline "qui a fait quoi quand" (90j default, audit history). Resource Graph = inventaire current state (KQL Resource Graph Explorer), PAS de timeline. Advisor = reco, pas audit.
  • 🚨 Network Watcher — choisir l'outil VPN : VPN Troubleshoot = le seul outil VPN-aware. Packet Capture = trafic VM (≠ VPN). NSG diagnostics = règles NSG (≠ VPN). Connection Monitor = synthetic probing E2E (≠ diag gateway).
  • 🚨 ExpressRoute Global Reach multi-site → BGP obligatoire pour failover auto. Static = manuel. Path-based = AGW L7. Priority routing = Traffic Manager DNS.
  • 🚨 Remote workers → P2S (VPN client par device), jamais S2S. S2S = LAN-to-VNet (router-to-router) pour un datacenter entier.
  • 🚨 Azure Blueprints : Definition = scope MG ou subscription | Assignment = subscription only. Restent connectés aux ressources post-deploy (track + audit) vs ARM templates = one-shot stateless. Déprécation 11 juil 2026 mais encore en exam.
  • 🚨 Azure Policy remediation workflow : mnémo D-A-R = Definition → Assignment (+ managed identity + role) → Remediation task. Effets audit / deny n'ont PAS besoin de remediation task. Oublier la MI/role = remediation fail silencieux.
  • 🚨 Stored Access Policy (storage) : grouper les SAS au container level → permet de révoquer / changer permissions sans régénérer la storage key. SAS ad-hoc = révocable seulement par rotation de storage key (impact massif).

🚨 Pièges nouveaux 2026 (exam analyses MU + TD 01-03)

  • 🚨 Azure Files tiers (≠ Blob tiers) : Premium (SSD low latency) / Transaction Optimized (transaction-heavy, latence > Premium) / Hot (général) / Cool (infrequent, lowest cost). Question "infrequent + lowest storage cost" → Cool Files (PAS Transaction Optimized).
  • 🚨 VNet CIDR overlap : VNet Azure ≠ on-prem (sinon routing cassé silencieusement). GatewaySubnet = nom exact obligatoire (case-sensitive), /27 mini (VpnGw1+), /29 seulement Basic SKU. Jamais d'autres VMs dedans.
  • 🚨 CAE (Continuous Access Evaluation) : Entra invalide les tokens en quasi temps-réel sur événement critique (user disabled, password change, IP change, MFA fail, risk elevated) via le CAEP protocol. PAS Conditional Access (évaluation initiale uniquement), PAS MFA.
  • 🚨 Azure Arc-enabled Kubernetes : projeter clusters K8s hors Azure (EKS, GKE, on-prem, edge) comme ressources ARM → RBAC, GitOps Flux, Policy, Defender, Monitor uniformes via portail Azure. Pour multi-location K8s. Distractors : Azure Stack Hub (full stamp lourd), AKS (Azure-only).
  • 🚨 VM Backup RPO : Standard policy = 1×/jour, RPO 24h min. Enhanced policy = jusqu'à 4×/jour, RPO 4h min (jusqu'à 6 snapshots/jour). Yearly retention max = 99 ans.
  • 🚨 Stored Access Policy vs alternatives : Container-level → révoquer/changer SAS perms sans rotation storage key. Distractors : RBAC = users Entra (pas apps long-terme), ReadOnly lock = bloque modif resource storage (pas contenu), SAS direct sans policy = révocation impossible sans rotation key.
  • 🚨 DB migration tool : "SQL Server → Azure SQL DB/MI" = Azure Data Studio + extension Azure SQL Migration (ou SSMS 22+). Azure Migrate = serveur entier IaaS. DMS = orchestrateur backend (utilisé via ADS).
  • 🚨 Function authLevel Anonymous : OK pour API publique read-only customer-facing (ex: status commande). Couplé Easy Auth / APIM en amont pour sécu. Function key = API privée partenaire. Sur-précaution = piège.
  • 🚨 AKS vs VM réflexe : "control infrastructure + customization hosting + scale + gros data + high compute" → AKS (control via K8s configs + scale natif). VM = control OS uniquement, PAS scale natif (sauf VMSS). Custom OS deps lourdes uniquement → VM.
  • 🚨 Oracle WebLogic on Azure = AKS via WebLogic Kubernetes Operator (partenariat Oracle-MS). PAS App Service (Tomcat/Jetty seulement). PAS ACI (pas d'orchestration enterprise).
  • 🚨 Combo SSO Entra + device restriction : App Registration (SSO Entra-based, pas reprompt) + Conditional Access (filter "Require Entra-joined device"). App Proxy = piège (app on-prem only, PAS cloud). Identity Governance = lifecycle accès, PAS auth.
  • 🚨 Service Bus Sessions vs Partitioning : Sessions = FIFO garanti par session key (ordre par clé, parallèle entre clés). Partitioning = distribuer messages sur N stores pour throughput (perd l'ordre global). Question "FIFO order" → Sessions jamais Partitioning.
  • 🚨 ExpressRoute "Premium Direct" = combo SKU Premium (global geo) + modèle Direct (10/100 Gbps sans provider). Distractors : Standard with Provider (limité geo), Standard Direct (limité geo), vWAN S2S (latence variable internet).
  • 🚨 Multi-tenant Entra RBAC : 1 user/group Entra = scope d'1 seul tenant. Org avec N tenants Entra = N role assignments minimum (1 par tenant), peu importe MGs/subs. Pas d'héritage cross-tenant.
  • 🚨 Azure Batch parallel task execution : config explicite via taskSlotsPerNode + max tasks per node. Default = 1 task/node. Rendering / Monte Carlo : config N tasks parallèles → speedup ~N×. Distractor : job schedules = planification temporelle, PAS parallélisme.
  • 🚨 GZRS = option Storage Account (PAS option backup MySQL/PG Flex Server qui supporte LRS/ZRS/GRS only). Confondre = piège exam fréquent.
  • 🚨 BC read scale-out gratuit (4 replicas Always On AG inclus, secondary readable). GP n'a PAS de read replica utilisable. Question "AZ-fail tolerance + read scale-out + min cost" → BC zone-redundant (pas GP malgré "cost").
  • 🚨 Cosmos DB Strong + multi-write = IMPOSSIBLE (Strong = single-write region only). En multi-write : seulement Eventual, Consistent Prefix, Session, Bounded Staleness (le plus fort dispo).
  • 🚨 Hyperscale = 128 TB single DB en 2026 (100 TB = elastic pool Hyperscale limit). Pas 100 TB pour single DB.
  • 🚨 Data Box family 2026 : Heavy RETIRÉ, 80 TB phasé out. SKUs actuels = Data Box 525 (525 TB usable) et Data Box 120 (120 TB usable). Pour 500 TB → 1 Data Box 525 suffit. Data Box Disk (35 TB), Import/Export = cross-géo only.
  • 🚨 User Delegation SAS scope étendu (2026) : Blob (incl. ADLS), Queue, Table, Files — élargi MS Learn 2026 (avant Blob only).
  • 🚨 Always Encrypted Secure Enclaves = vrai in-use computation server-side (VBS/Intel SGX, computations sur données chiffrées dans enclave isolée + attestation). AE base = chiffrement client-side, serveur ne voit jamais le clair.
  • 🚨 Kubenet retraite 31 mars 2028 → Azure CNI Overlay recommandé.
  • 🚨 PITR SQL RPO10 min (log backups 5-10 min, approximatif selon activité). Pas "<10 min" garanti.
  • 🚨 HCX migration AVS : Bulk = parallèle (gros parcs ≥50 VMs), vMotion = série (1 à 1, < 30 VMs critiques), RAV = combo bulk+cutover (zéro downtime gros volumes). Cold = VM éteinte (hors-prod).
  • 🚨 SQL VM tempdb : placer sur disque éphémère D:\ (perf I/O µs, data recréée au reboot, économise Premium SSD persistent). Distractor = tempdb sur Premium SSD persistant.
  • 🚨 SAS + Storage Firewall = defense-in-depth (token + IP whitelist / VNet rules). SAS seul = vulnérable si vol token. Combo = compliance recommandée.
  • 🚨 Diagnostic Settings cross-subscription OK : LAW dans Sub B, ressources dans Sub A. Même tenant Entra obligatoire, même région recommandée (coûts egress). Pattern ALZ central.
  • 🚨 ADF Schema Drift : option "Allow schema drift" en Source + Sink (Mapping Data Flow) → colonnes nouvelles auto-propagées. Use case = CSV partenaire évolutif. Pas dispo aussi développée dans Synapse pipelines.
  • 🚨 SQL DB in-memory OLTP : full sur Premium DTU = BC vCore (memory-optimized tables persistantes). NONE sur GP. SUBSET sur Hyperscale (PAS de memory-optimized tables persistantes complètes).

PARTIE 2 — Commandes essentielles AZ-305

A. Cosmos DB

# Account multi-region writes
az cosmosdb create -g myrg -n mycosmos \
  --kind GlobalDocumentDB \
  --default-consistency-level Session \
  --locations regionName=eastus failoverPriority=0 \
  --locations regionName=westeurope failoverPriority=1 \
  --enable-multiple-write-locations true

# Database + container
az cosmosdb sql database create -g myrg -a mycosmos -n mydb
az cosmosdb sql container create -g myrg -a mycosmos -d mydb -n mycontainer \
  --partition-key-path "/customerId" --throughput 400

# Autoscale throughput
az cosmosdb sql container update -g myrg -a mycosmos -d mydb -n mycontainer \
  --max-throughput 4000

# Failover priority
az cosmosdb failover-priority-change -g myrg -n mycosmos \
  --failover-policies eastus=0 westeurope=1

# Continuous backup (PITR)
az cosmosdb update -g myrg -n mycosmos --backup-policy-type Continuous

# Restore PITR
az cosmosdb restore --account-name mycosmosrestored \
  --target-database-account-name mycosmos \
  --restore-timestamp "2026-05-01T12:30:00Z" \
  --location eastus --resource-group myrg

B. Azure SQL

# Server + DB Hyperscale
az sql server create -g myrg -n mysrv \
  --location eastus --admin-user sqladmin --admin-password "P@ss123!"

az sql db create -g myrg --server mysrv -n mydb \
  --service-objective HS_Gen5_2 --backup-storage-redundancy Geo

# Zone-redundant
az sql db update -g myrg --server mysrv -n mydb --zone-redundant true

# Entra Admin + Entra-only
az sql server ad-admin create -g myrg --server mysrv \
  --display-name "DB Admins" --object-id <group-object-id>

az sql server update -g myrg -n mysrv --enable-ad-only-auth true

# Active Geo-Replication
az sql db replica create -g myrg --server mysrv -n mydb \
  --partner-server mysrv-secondary --partner-resource-group myrg-secondary

# Auto-failover Group
az sql failover-group create -g myrg --server mysrv -n myfg \
  --partner-server mysrv-secondary --failover-policy Automatic --grace-period 1 \
  --add-db mydb

# Trigger manual failover
az sql failover-group set-primary -g myrg-secondary --server mysrv-secondary -n myfg

# Auditing → Log Analytics
az sql server audit-policy update -g myrg --name mysrv --state Enabled \
  --log-analytics-target-state Enabled \
  --log-analytics-workspace-resource-id /subscriptions/.../mylaw

# Defender for SQL
az sql server ms-support advanced-threat-protection-setting update \
  -g myrg --server mysrv --state Enabled

# Long-term retention
az sql db ltr-policy set -g myrg --server mysrv --database mydb \
  --weekly-retention P12W --monthly-retention P12M --yearly-retention P10Y --week-of-year 1

C. Azure Functions

# Flex Consumption (recommandé moderne)
az functionapp create -g myrg -n myfunc \
  --flexconsumption-location eastus \
  --runtime node --runtime-version 20 \
  --storage-account mystorage \
  --instance-memory 2048 \
  --maximum-instance-count 100

# Premium plan
az functionapp plan create -g myrg -n myplan \
  --location eastus --sku EP1 --is-linux

az functionapp create -g myrg -n myfunc \
  --plan myplan --runtime python --runtime-version 3.11 \
  --storage-account mystorage

# Activer MI
az functionapp identity assign -g myrg -n myfunc

# App settings
az functionapp config appsettings set -g myrg -n myfunc --settings \
  "[email protected](SecretUri=https://myvault.vault.azure.net/secrets/MyKey/)"

D. App Service Environment v3

# Créer ASE v3
az appservice ase create -g myrg -n myase \
  --vnet-name myvnet --subnet myasev3subnet \
  --kind ASEv3 --virtual-ip-type Internal

# Plan Isolated v2 dans l'ASE
az appservice plan create -g myrg -n myplan \
  --app-service-environment myase --is-linux --sku I1V2

E. APIM v2

# Standard v2
az apim create -g myrg -n myapim --location eastus \
  --publisher-email [email protected] --publisher-name Contoso \
  --sku-name StandardV2 --sku-capacity 1

# Premium v2 avec VNet injection
az apim create -g myrg -n myapim --location eastus \
  --publisher-email [email protected] --publisher-name Contoso \
  --sku-name PremiumV2 --sku-capacity 1 \
  --virtual-network External \
  --vnet-resource-id /subscriptions/.../myvnet/subnets/apimsubnet

F. Service Bus & Event Grid & Event Hub

# Service Bus Premium + Geo-DR
az servicebus namespace create -g myrg -n myns --sku Premium --capacity 1
az servicebus georecovery-alias set -g myrg --namespace-name myns \
  --alias mygeoalias --partner-namespace /subscriptions/.../mysecondaryns

# Event Grid System Topic (Storage)
az eventgrid system-topic create -g myrg -n mytopic \
  --location eastus --topic-type Microsoft.Storage.StorageAccounts \
  --source /subscriptions/.../mystorage

# Event Hub Premium + Capture
az eventhubs namespace create -g myrg -n myns --sku Premium --capacity 1
az eventhubs eventhub create -g myrg --namespace-name myns -n myhub \
  --partition-count 4 --enable-capture true \
  --capture-interval 300 --capture-size-limit 314572800 \
  --destination-name EventHubArchive.AzureBlockBlob \
  --storage-account /subscriptions/.../mystorage \
  --blob-container archive

G. Synapse + Databricks + ADF

# Synapse Workspace
az synapse workspace create -g myrg -n mysynapse \
  --storage-account mydatalake --file-system raw \
  --sql-admin-login-user sqladmin --sql-admin-login-password "P@ss123!"

# Synapse Dedicated SQL pool
az synapse sql pool create -g myrg --workspace-name mysynapse \
  -n mydw --performance-level DW100c

az synapse sql pool pause -g myrg --workspace-name mysynapse -n mydw
az synapse sql pool resume -g myrg --workspace-name mysynapse -n mydw

# Synapse Spark pool
az synapse spark pool create -g myrg --workspace-name mysynapse \
  -n myspark --node-count 3 --spark-version 3.4 --node-size Medium

# Databricks
az databricks workspace create -g myrg -n mydatabricks \
  --location eastus --sku premium

# Data Factory
az datafactory create -g myrg -n myadf -l eastus

# ADF Self-hosted IR
az datafactory integration-runtime self-hosted create \
  -g myrg --factory-name myadf -n mySHIR
# Output : auth keys → installer agent on-prem

H. Application Insights

# Workspace-based App Insights
az monitor app-insights component create \
  -g myrg --app myappinsights -l eastus \
  --workspace /subscriptions/.../mylaw \
  --kind web --application-type web

# Lier à Web App
CONN_STR=$(az monitor app-insights component show -g myrg --app myappinsights --query connectionString -o tsv)
az webapp config appsettings set -g myrg -n mywebapp --settings \
  "APPLICATIONINSIGHTS_CONNECTION_STRING=$CONN_STR" \
  "ApplicationInsightsAgent_EXTENSION_VERSION=~3"

# Availability test (Standard)
az monitor app-insights web-test create \
  -g myrg -n myhealthcheck --app myappinsights \
  --location eastus --frequency 300 --timeout 30 \
  --kind standard --request-url "https://myapp.com/health" \
  --locations '[{"Id":"us-il-ch1-azr"}, {"Id":"emea-fr-pra-edge"}]'

I. Azure Migrate + DMS

# Azure Migrate project
az migrate project create -g myrg -n myproject -l eastus

# Database Migration Service (DMS)
az dms create -g myrg -n mydms -l eastus \
  --sku-name Premium_4vCores \
  --subnet /subscriptions/.../myvnet/subnets/dmssubnet

J. Bicep — exemple Cosmos + SQL

// Cosmos DB account avec multi-region
resource cosmos 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
  name: 'mycosmos${uniqueString(resourceGroup().id)}'
  location: 'eastus'
  kind: 'GlobalDocumentDB'
  properties: {
    consistencyPolicy: { defaultConsistencyLevel: 'Session' }
    locations: [
      { locationName: 'eastus', failoverPriority: 0 }
      { locationName: 'westeurope', failoverPriority: 1 }
    ]
    enableMultipleWriteLocations: true
    backupPolicy: { type: 'Continuous', continuousModeProperties: { tier: 'Continuous30Days' } }
  }
}

// Azure SQL DB Hyperscale
resource sqlServer 'Microsoft.Sql/servers@2024-05-01-preview' = {
  name: 'mysrv'
  location: 'eastus'
  properties: {
    administratorLogin: 'sqladmin'
    administratorLoginPassword: keyVault.getSecret('SqlAdminPassword')
    publicNetworkAccess: 'Disabled'
    minimalTlsVersion: '1.2'
  }
}

resource sqlDb 'Microsoft.Sql/servers/databases@2024-05-01-preview' = {
  parent: sqlServer
  name: 'mydb'
  location: 'eastus'
  sku: { name: 'HS_Gen5', tier: 'Hyperscale', capacity: 2 }
  properties: {
    zoneRedundant: true
    requestedBackupStorageRedundancy: 'Geo'
  }
}

PARTIE 3 — Decision Trees synthèse AZ-305

Choix DB

Modèle relationnel + ACID + complex joins ?
├─ Mission-critical low-latency → Azure SQL Business Critical
├─ Volume énorme (TB-PB), scaling lectures → Azure SQL Hyperscale
├─ Compat 100% SQL Server → Azure SQL Managed Instance
├─ Cloud-first standard → Azure SQL Database (GP)
└─ Compat 100% + control OS → SQL Server on Azure VM

NoSQL low-latency global ?
├─ Documents JSON → Cosmos DB NoSQL API
├─ Migrer MongoDB → Cosmos DB MongoDB API
├─ Graph (relations) → Cosmos DB Gremlin API
├─ Cassandra → Cosmos DB Cassandra API
└─ Multi-tenant scale horizontal → Cosmos for PostgreSQL

Choix Compute

Web app HTTP ?
├─ Simple → App Service Plan Premium v3
├─ Compliance / 100% isolation → ASE v3 + Isolated v2
└─ Statique + APIs → Static Web Apps

Container ?
├─ Single container ad-hoc → ACI
├─ Microservices serverless → Container Apps
└─ Workload K8s complexe → AKS

Serverless event-driven ?
├─ Functions Flex Consumption (default moderne)
└─ Logic Apps (low-code workflow)

Batch / HPC ?
├─ Greenfield batch → Azure Batch
└─ Lift-and-shift Slurm/PBS → CycleCloud

Choix Storage

Blob ?
├─ Big data analytics → ADLS Gen2 (HNS)
└─ Storage générique → Storage Account v2

File shares ?
├─ Standard SMB/NFS → Azure Files
└─ High-perf HPC/SAP → Azure NetApp Files

Cache ?
└─ Azure Cache for Redis

Choix DR / HA SQL

RTO < 60s + auto failover + DNS stable ?
└─ Auto-failover Group ⭐⭐

Manual failover, plus de control, multi read replicas ?
└─ Active Geo-Replication

DR budget restreint, OK perdre 7j ?
└─ PITR backups (default)

HA intra-region ?
└─ Built-in Zone-redundant

Choix Messaging / Eventing

Action à accomplir (commande) ?
├─ Simple, gros volume → Queue Storage
└─ Enterprise (FIFO, transactions, sessions) → Service Bus
   (Premium si VNet, geo-DR, gros payload, JMS)

Notification de changement ?
├─ Discrete events Azure → Event Grid System Topics
├─ Custom events workflow → Event Grid Custom Topics
└─ Streaming massif (telemetry, IoT) → Event Hub
   (Kafka compat → Event Hub, sinon plus simple)

Choix Analytics

Data lake big data ?
└─ ADLS Gen2 + Databricks/Synapse Spark

Data warehouse SQL ?
├─ Migration on-prem DW → Synapse Dedicated SQL pool
└─ Greenfield → Synapse ou Microsoft Fabric (futur)

Query files sans provisioning ?
└─ Synapse Serverless SQL pool

ETL low-code ?
└─ Azure Data Factory (Mapping Data Flow)

ML / Data Science ?
└─ Databricks ⭐ (préféré) + Azure ML

Choix Encryption SQL

Compliance avec ta key ?
└─ TDE with CMK (KV)

Données invisibles aux DBAs + queries riches ?
└─ Always Encrypted with Secure Enclaves ⭐

Données invisibles aux DBAs + simple lookup ?
└─ Always Encrypted Deterministic

Juste affichage masqué selon user (cosmétique) ?
└─ Dynamic Data Masking

PARTIE 4 — Mots-clés AZ-305 (radar exam)

Mot-clé scenario Pense à
"minimum administrative effort" PaaS, MI, built-in features
"lift and shift" SQL Server SQL Managed Instance
"globally distributed multi-master writes" Cosmos DB multi-region writes
"100% SQL Server compat" Managed Instance
"very large database 100 TB" Azure SQL Hyperscale
"must encrypt with own keys" TDE CMK + KV
"data invisible to DBAs" Always Encrypted (Secure Enclaves si queries)
"minimum downtime DR" Auto-failover Group SQL / Cosmos multi-region writes
"near real-time analytics on OLTP" Synapse Link (HTAP)
"global L7 + WAF + CDN" Front Door Premium
"regional L7 + WAF + path routing" App Gateway v2 + WAF v2
"non-HTTP global LB" Traffic Manager
"users without VPN" App Proxy / Front Door + Private Link / Bastion
"real-time streaming millions/sec" Event Hub + Stream Analytics/Databricks
"event-driven workflow custom" Event Grid + Functions/Logic Apps
"shared file system Linux + Windows" Azure Files (SMB+NFS) ou NetApp Files dual-protocol
"K8s without managing nodes" Container Apps
"K8s full control" AKS
"Hadoop on-prem migration" ADLS Gen2 + Databricks/Synapse Spark
"lift-and-shift HPC Slurm/PBS" CycleCloud
"100M docs NoSQL multi-tenant SaaS" Cosmos DB NoSQL with hierarchical partition keys
"compliance HIPAA / PCI / régulé" Defender + Policy initiatives + Audit + CMK + PE
"geo-replication active-active" Cosmos multi-region writes / Auto-failover SQL
"warm standby DR" Active Geo-Replication / ASR
"cold DR backup-restore" PITR + LTR

PARTIE 5 — Limites & quotas spécifiques AZ-305

Service Limite
Cosmos DB partition logique 20 GB max
Cosmos DB serverless 5000 RU/s + 1 TB
Service Bus Standard 256 KB / message
Service Bus Premium 100 MB / message
Event Grid event 1 MB max
Event Hub message 1 MB max
Event Hub partitions 32 Standard / 1024 Premium
Function Consumption timeout 10 min max
Function Premium timeout 30 min default (illimité config)
App Service slots Std 5 / Pv3 20 / Iv2 20
APIM Standard v2 capacity 10 units max
APIM Premium v2 capacity 30 units max
SQL DB Hyperscale max size 100 TB
SQL DB BC read replicas Inclus (3)
SQL DB Hyperscale read replicas Jusqu'à 30 named replicas
Auto-failover Group secondaries 1 (4 en preview)
PITR retention SQL 7-35 jours
LTR retention SQL Jusqu'à 10 ans
Synapse Dedicated SQL pool DW100c → DW30000c
Synapse SQL pool max size 240 TB compressé
Azure Files Premium 100 TB / share
NetApp Files Capacity Pool 4 TiB min / 500 TiB max

Conseils derniers pour AZ-305

  • Toujours lire les contraintes : cost, RTO/RPO, compliance, hybrid, multi-region. Ces contraintes déterminent le service.
  • Pas un seul "bon" choix : justifier selon le contexte (la même question avec "minimum cost" vs "minimum downtime" → 2 services différents).
  • Préférer PaaS sur IaaS sauf si compat 100% requise.
  • Préférer managé sur self-hosted (KV, MI, ASR, Backup, Defender).
  • Multi-region si possible : Front Door + Cosmos multi-region / SQL Auto-failover Group.
  • Zero-trust : Private Endpoints + Entra-only auth + RBAC + KV CMK.
  • Cost optimization : Autoscale, Spot, Reserved Instances, Hybrid Benefit, pause/resume Synapse.