5 — App Integration Services (AZ-305)
A. Messaging vs Eventing
| Messaging | Eventing | |
|---|---|---|
| Nature | "Action à accomplir" (commande) | "Notification : qqch s'est passé" |
| Producer attend ? | Souvent (réponse) | Non (fire-and-forget) |
| Récepteur | 1 (compete) ou N (pub/sub) | N (broadcast) |
| Services Azure | Queue Storage, Service Bus | Event Grid, Event Hub, IoT Hub |
Règle : "data flowing TO an action" → Messaging. "Notification OF an action" → Eventing.
B. Vocabulaire messaging — base
- Producer : envoie messages. Consumer : lit/traite.
- Compete consumer (queue) : 1 message = 1 consumer (N workers se partagent). Use case : load balancing tasks.
- Pub/Sub (topic) : 1 message = N consumers (chacun reçoit une copie). Use case : notifier plusieurs systèmes du même event.
- Topic = channel. Subscription = abonnement avec filtre. Chaque sub reçoit une copie filtrée.
- FIFO : ordre exact d'envoi. Sessions = FIFO par clé (
orderId) → ordre strict par entité, parallèle entre entités. - DLQ (Dead Letter Queue) : messages qui échouent N fois → atterrissent en DLQ pour inspection/replay.
- Transactions : envoyer/recevoir plusieurs messages atomiquement (tout ou rien).
- At-least-once : message arrive au moins 1 fois (peut arriver 2-3× en cas de retry). → Idempotence côté consumer obligatoire.
- Duplicate detection (Service Bus) : broker rejette doublons via
MessageIddans une fenêtre. - Load leveling : queue absorbe pics (5k/s in → 100/s out → 0 crash).
- Décorrélation : producer/consumer pas besoin d'être up en même temps.
- Buffer async : tier web rend la main <200ms, queue + worker fait le job long en background.
C. Azure Queue Storage
🎯 Présentation
Messaging simple intégré au Storage Account, compete consumer pattern. Solution low-cost pour découpler producer/consumer sans features enterprise.
🏗️ Architecture
- Queue hébergée dans un Storage Account (pas de namespace séparé)
- Compete consumer : 1 message = 1 consumer (N workers se partagent la charge)
- Accès via REST API ou SDK Azure Storage
- Pas de topics/subscriptions — file unique
🎚️ Tiers / SKU
| Critère | Détail |
|---|---|
| Message size | 64 KB max |
| Capacité | 500 TB / SA |
| TTL | 7 jours default (configurable ∞) |
| Delivery | At-least-once |
| Ordering / Transactions / Sessions / DLQ | ❌ |
✅ Quand l'utiliser
- Buffer simple (resize images, archive logs)
- Load leveling pour pic (Black Friday checkout)
- Notifications email différées
- Queue jobs longue durée (rapports CSV)
🚨 Pièges
- Pas de FIFO strict garanti → si requis, basculer Service Bus + sessions
- Pas de DLQ native → gestion erreurs côté code consumer
- Pas de pub/sub ni de filtres broker-side → topic = Service Bus
- Pas de duplicate detection → consumer doit être idempotent (at-least-once)
- Limite message 64 KB : payload plus gros → stocker en Blob + envoyer référence
D. Azure Service Bus
🎯 Présentation
Enterprise messaging broker avec FIFO, sessions, transactions, pub/sub, DLQ natif. Cœur des architectures messaging fiables Azure.
🏗️ Architecture
- Namespace : container régional (Basic / Standard / Premium)
- Queue : FIFO compete consumer
- Topic : pub/sub vers N subscriptions
- Subscription : filtre (SQL/Correlation/Boolean) + endpoint
- DLQ : messages morts (auto par sub/queue)
🎚️ Tiers / SKU
| Tier | Features |
|---|---|
| Basic | Queues only, pas de topics |
| Standard | Queues + Topics + Subs + Sessions, partagé |
| Premium ⭐ | Dedicated capacity (MU), VNet, JMS 2.0, Geo-DR, CMK, messages 100 MB |
✅ Quand l'utiliser
- Besoin de FIFO strict (sessions par clé :
orderId) - Transactions atomiques (pop + push multi-queues)
- DLQ native + replay admin
- Pub/Sub avec filtres broker-side (SQL/Correlation)
- Scheduled messages, auto-forwarding, duplicate detection
Features clés (cas concret)
| Feature | Use case |
|---|---|
| Sessions (FIFO par clé) | Order events ordonnés : OrderCreated → Paid → Shipped. Session = orderId. Plusieurs orders en parallèle. |
| Transactions | Pop "OrderCreated" + push "InventoryDecrement" + push "BillingCharge" en 1 commit. Rollback si fail. |
| DLQ native | Worker plante 5× → message va en DLQ avec raison auto. Admin inspecte/fix/replay. |
| Scheduled messages | "Panier expire dans 1h" à T précis, sans cron app. |
| Auto-forwarding | Chaîner queues/topics sans code. |
| Duplicate detection | Retry producer → broker rejette doublons via MessageId. |
| Topic filters | Sub eventType='OrderShipped' AND region='EU' (SQL/Correlation/Boolean). |
🚨 Pièges
- Basic = pas de topics → migration douloureuse si besoin pub/sub plus tard
- Geo-DR Premium : réplique structure (queues/subs/filters) mais PAS les messages en attente
- Throughput limité pour streaming massif → Event Hub si > ~1M msg/s
- Sessions = FIFO par clé, pas global → bien choisir la session key
- Transactions limitées à un namespace (pas cross-namespace)
- 🚨 Sessions vs Partitioning (Premium) : Sessions = FIFO strict par
sessionId(ex:OrderCreated > Paid > Shippedordonné parorderId). Partitioning = juste sharding pour throughput, AUCUNE garantie FIFO. "Ordre garanti par entité" → Sessions (pas Partitioning). Les 2 peuvent coexister mais le FIFO vient uniquement de Sessions.
E. Azure Event Grid
🎯 Présentation
Service eventing pub/sub pour events discrets (state changes) avec latence ms. Réagir aux changements (Azure resources, apps custom, partenaires SaaS) sans poller.
🏗️ Architecture
- Event source : Storage, Resource Mgr, IoT Hub, custom, partner SaaS
- Topic : channel
- Event : payload <1 MB
- Event handler : Functions, Logic Apps, Webhook, Event Hub, Queue, Service Bus
- Event filter : subject, type, advanced filter
- At-least-once (retries exponentiels 24h), DLQ sur Storage Account
- Push (default) ou Pull (Namespace mode)
🎚️ Tiers / SKU (Modes)
| Mode | Use case |
|---|---|
| System Topics | Events services Azure (Blob created, RG deleted) |
| Custom Topics | Tes apps émettent leurs events |
| Domains ⭐ | Multi-tenant SaaS : 1 ressource Azure = milliers de sub-topics logiques (jusqu'à 100k) |
| Partner Topics | SaaS partners (Auth0, MongoDB Atlas) |
| Event Grid Namespaces ⭐ | Pull delivery + MQTT broker IoT |
✅ Quand l'utiliser
- Réagir à un changement Azure (blob uploaded, RG deleted) → System Topics
- App émet ses propres events vers N consommateurs → Custom Topics
- SaaS multi-tenant avec ~10k+ clients à notifier → Domains ⭐
- IoT MQTT broker managé / pull delivery → Namespaces
🚨 Pièges
- Payload limit 1 MB → gros volumes data = Event Hub, pas Event Grid
- Pas de filter SQL avancé broker-side (subject/type only, ou advanced filter) — pour SQL filter complet → Service Bus Topic
- At-least-once → handler doit être idempotent
- DLQ doit être configuré explicitement (Storage Account) sinon events perdus après 24h retries
- Push delivery → endpoint cible doit être public OU dans VNet (Premium)
F. Azure Event Hubs
🎯 Présentation
Plateforme de streaming massif (millions events/sec) pour telemetry, logs, IoT, click-stream. Équivalent Kafka managé sur Azure.
🏗️ Architecture
- Namespace : container régional
- Event Hub : équivalent Kafka topic
- Partitions : 1-32 Standard, 1024 Premium (parallel consumption)
- Consumer group : vue indépendante du stream (1 = 1 reader avec curseur)
- TU/PU/CU : capacity units (Standard/Premium/Dedicated)
- Capture auto-archive vers Blob/ADLS (Avro/Parquet)
- Schema Registry, Kafka protocol compat, Geo-DR async
🎚️ Tiers / SKU
| Tier | Capacité | Cons. groups | Retention | Capture | Kafka | VNet/CMK |
|---|---|---|---|---|---|---|
| Basic | 1 TU partagé | 1 ($Default) |
1j | ❌ | ❌ | ❌ |
| Standard ⭐ | 1-20 TU auto-inflate | 20 | 1-7j | ✅ | ✅ | Geo-DR oui |
| Premium | 1-16 PU | 100+ | 1-90j | ✅ | ✅ | ✅ + isolation |
| Dedicated | Cluster CU | ~illimité | 1-90j | ✅ | ✅ | Single-tenant complet |
✅ Quand l'utiliser
- Streaming big data : telemetry IoT, logs apps, click-stream
- Kafka workloads sur Azure sans gérer cluster (Standard min)
- Ingest pour Stream Analytics / Synapse / Databricks
- VNet integration → Premium min
10 GB/s soutenu ou HSM-grade isolation → Dedicated
🚨 Pièges
- Basic : 1 consumer group seulement → impossible d'avoir plusieurs apps consommatrices
- Partition count immuable après création (Standard) → choisir large dès le début
- Pas de pub/sub broker-side filter → filtering côté consumer
- Retention Standard max 7j → archivage long terme = Capture vers Blob/ADLS
- Sur-dimensionné pour faible volume (100 msg/j) → préférer Service Bus
G. Azure IoT Hub
G.1 C'est quoi
Service managé pour devices IoT avec communication bidirectionnelle (devices ↔ cloud). C'est l'équivalent IoT-spécifique d'Event Hub mais avec des features devices natives.
G.2 IoT Hub vs Event Hub ⭐⭐ (le seul piège 305)
| IoT Hub | Event Hub | |
|---|---|---|
| Direction | Bidirectionnel (cloud → device aussi) | Unidirectionnel (device → cloud only) |
| Per-device identity | ✅ | ❌ (SAS partagée) |
| Use case | Devices avec commandes / config / management | Streaming pur (telemetry, logs, click-stream) |
🎯 "Devices doivent recevoir des commandes / updates de config" → IoT Hub. 🎯 "Telemetry massive unidirectionnelle → analytics" → Event Hub.
H. SignalR Service + Notification Hubs (light awareness)
H.1 Azure SignalR Service
Service managé pour real-time bidirectional (WebSocket / Server-Sent Events / Long Polling) sans gérer scale ni connection management.
Use cases AZ-305 :
- Chat temps-réel multi-utilisateurs
- Live dashboards (Power BI live tile)
- Notifications push web (push-to-browser)
- Collaborative apps (Google Docs-like)
- Live sports / trading scoreboard
H.2 Azure Notification Hubs
Service push notifications mobiles cross-platform : iOS (APNS), Android (FCM), Windows, Amazon Kindle, Baidu (China).
Use cases AZ-305 :
- Push notifs mobile à des millions d'users
- Targeting par tags (geo, user segment, language)
- Schedule notifs
- Multi-platform unified API
H.3 Decision rapide
- "Real-time browser, chat, dashboard" → SignalR Service
- "Push notifs mobile iOS+Android" → Notification Hubs
- "Devices IoT bidirectionnels" → IoT Hub
I. Decision Messaging/Eventing/Streaming AZ-305 ⭐⭐
Comparaison rapide
| Queue Storage | Service Bus | Event Grid | Event Hub | IoT Hub | |
|---|---|---|---|---|---|
| Type | Messaging simple | Messaging enterprise | Eventing pub/sub | Streaming big data | Devices IoT bidirectionnel |
| Volume | Moyen | Moyen | Moyen-élevé | MASSIF | Massif |
| Direction | 1-way | 1-way | 1-way | 1-way (D2C) | 2-way (D2C + C2D) |
| Message size | 64 KB | 256 KB (P 100 MB) | 1 MB | 1 MB | 256 KB |
| Ordering | ❌ | ✅ sessions | ❌ | ✅ par partition | ✅ par device |
| Pub/Sub | ❌ | ✅ topics | ✅ | ✅ consumer groups | ❌ |
| Filter broker-side | ❌ | ✅ SQL/correl | ✅ subject/type | ❌ | ✅ message routing |
| Pricing | $ | $$ | $ | $$$ | $$ |
Anti-patterns
| ❌ Mauvais | Pourquoi | ✅ Bon |
|---|---|---|
| Event Hub pour 100 orders/j | Sur-dimensionné | Service Bus Queue |
| Service Bus pour 1M events/s telemetry | Throughput insuffisant | Event Hub |
| Queue Storage pour FIFO strict | Pas garanti | Service Bus + sessions |
| Event Hub pour envoyer commandes aux devices | Unidirectionnel | IoT Hub |
| Logic App pour temps-réel haute charge | Latence + coût | Function + Service Bus |
J. Azure API Management (APIM)
🎯 Présentation
Gateway façade managée centralisant security, throttling, transformation, analytics, doc OpenAPI sur N backends. Évite la duplication auth/rate-limit dans chaque microservice.
🏗️ Architecture
- API : interface logique (REST/SOAP/GraphQL/WebSocket)
- Backend : où tape l'API (App Service, Function, AKS, FQDN)
- Product : bundle d'APIs avec subscription key
- Policies ⭐ : XML transformations in/out flow (validate-jwt, rate-limit, cache, transform, circuit-breaker)
- Developer portal : self-service devs (OpenAPI auto)
[Clients] → [APIM Gateway] (auth/throttle/cache/log) → [Microservices privés via PE]
🎚️ Tiers / SKU (v2, 2026)
| Tier | Use case |
|---|---|
| Consumption | Serverless, pay-per-call, scale-to-zero |
| Developer | Dev/test, pas de SLA |
| Basic v2 ⭐ | Prod, simple, VNet integration |
| Standard v2 ⭐ | Prod + VNet integration + Private Endpoint inbound |
| Premium v2 ⭐ | Standard v2 + VNet injection complète, AZ, multi-region, workspaces |
✅ Quand l'utiliser
- ≥ 2 backends exposés + besoin auth/rate-limit/monitoring centralisé
- 1 DNS/cert SSL pour N microservices, versioning d'APIs
- Mock-response (frontend dev avant backend ready)
- Backends privés via Private Endpoint + zero-trust
- Compliance VNet/AZ multi-region → Premium v2
Policies clés
- Auth :
validate-jwt,validate-azure-ad-token, OAuth2, mTLS - Rate limit / quota :
rate-limit-by-key,quota-by-key - CORS / IP filter, Mock response
- Caching :
cache-lookup/cache-store - Transform :
set-header,set-body,xml-to-json - Backend :
set-backend-service,circuit-breaker
K. Azure Logic Apps
🎯 Présentation
Workflow orchestration low-code visual avec 1000+ connectors (M365, SAP, Salesforce). Automatise les processus métier sans écrire de code.
🏗️ Architecture
- Trigger : HTTP, Schedule, Event Grid, Service Bus, connector SaaS
- Actions : call API, transform, send mail, Function, conditional, loop
- Connectors : built-in (HTTP) ou Managed (1000+ : M365, SAP, Salesforce, ServiceNow)
- Designer visuel + JSON workflow (code-behind)
- Run history pour debug
🎚️ Tiers / SKU
| Version | Use case |
|---|---|
| Consumption | Pay-per-execution, scale-auto, multi-tenant |
| Standard ⭐ | Single-tenant (App Service Plan), VNet, perf max, stateful + stateless workflows |
✅ Quand l'utiliser
- Workflow low-code, intégrations SaaS (M365, SAP, Salesforce)
- Collab business owner ↔ IT (designer visuel)
- Schedule-based jobs avec connectors prêts à l'emploi
- Standard si VNet integration / perf max / multi-workflow par plan
- Pour orchestration code-first complexe haute perf → Durable Functions plutôt
Logic Apps vs Durable Functions
| Besoin | Choix |
|---|---|
| Low-code, connectors SaaS (M365, SAP, Salesforce) | Logic Apps |
| Code complexe, contrôle fin, perf max | Durable Functions |
| Workflow business owner ↔ IT collab | Logic Apps |
| Orchestration intégrée codebase | Durable Functions |
| Très haut volume / latence critique | Durable Functions Premium |
🎯 On-premises Data Gateway (piège MeasureUp) : permet à Logic Apps / Power Platform d'accéder à une ressource on-prem (DB, fichiers) sans l'exposer à Internet (agent on-prem = connection broker, outbound only). → "Logic App doit lire une DB on-prem sans accès Internet" = on-prem data gateway. (utiliser Azure Relay quand on expose une API plutot qu'un workflow)
L. Patterns AZ-305
Producer-Consumer (Buffer)
[Producer] → [Queue/Service Bus] → [Worker (Function/VMSS)]
Pub/Sub (Fan-out)
[Event source] → [Service Bus Topic OR Event Grid] → [N Subscribers]
Streaming Analytics
[Devices] → [Event Hub] → [Stream Analytics / Databricks] → [Power BI / SQL]
IoT bidirectionnel
[Devices IoT] ←→ [IoT Hub Standard] ←→ [Backend + Device Twin sync]
↓ message routing
[Event Hub / Service Bus / Storage]
API Façade
[Clients] → [APIM] → [Microservices (App Service / AKS / Functions)]
Workflow Orchestration
[Trigger] → [Logic App] → actions (parallel/sequential, branches, loops)
M. Azure Cache for Redis & Azure Managed Redis (caching)
🎯 Présentation
Cache distribué in-memory managé pour sessions multi-instance, accélération DB, rate limiting, distributed lock. Objectif AZ-305 "Recommend a caching solution for applications".
🏗️ Architecture
- Cache key-value in-memory (sub-ms latency)
- Patterns : session store, output cache, data cache, pub/sub léger, rate limiting, distributed lock
- Accès via Redis protocol (SDK StackExchange.Redis, lettuce, etc.)
- Azure Managed Redis = remplaçant moderne (zone redundancy + persistence + modules + active geo-rep par défaut, 1 DB seulement, TLS XOR non-TLS)
⚠️ Retrait Cache for Redis 2026-2028 (annonce oct 2025)
Azure Cache for Redis retire tous SKUs. Remplaçant : Azure Managed Redis.
- 1 avril 2026 : new caches bloquées (Enterprise/Flash all, Basic/Std/Prem new customers)
- 31 mars 2027 : Enterprise/Flash migrés
- 1 oct 2028 : Basic/Std/Prem éteints
Nouveaux projets 2026+ → Azure Managed Redis ⭐
🎚️ Tiers / SKU
Cache for Redis (legacy) — 5 tiers :
| Tier | Note |
|---|---|
| Basic | 1 VM, pas de SLA. Dev/test only |
| Standard | 2 VMs (primary+replica), SLA 99.9% |
| Premium ⭐ | Clustering, persistence (RDB/AOF), VNet, geo-rep passive |
| Enterprise | Modules (RediSearch/JSON/Bloom/TimeSeries), geo-rep active, 99.99% |
| Enterprise Flash | Très gros caches (TB) cost-optimized |
🚨 Pièges
- Basic en prod → pas de SLA, data perdue si panne
- Geo-rep passive (Premium classique) = read-only secondary → app gère failover manuel. Active = Enterprise / Managed Redis only.
🌐 Caching DONNÉES (Redis) vs caching CONTENU (CDN/Front Door)
💡 Le caching AZ-305 a 2 familles : Redis = cache de DONNÉES (sessions, résultats DB, in-memory) ; CDN/Front Door = cache de CONTENU (fichiers statiques, images, JS/CSS) au bord du réseau (edge), proche des users.
| Solution | Cache quoi | Pour |
|---|---|---|
| Redis / Managed Redis | Données (sessions, DB results, in-memory) | Accélérer l'app côté backend |
| Azure CDN / Front Door | Contenu statique (images, vidéos, JS/CSS) en edge (POP mondiaux) | Réduire latence users mondiaux + décharger l'origine |
| Azure Front Door ⭐ | CDN edge caching + LB global L7 + WAF + SSL offload | Front porte mondiale d'une app web (le choix moderne) |
🎯 Réflexes : "sessions/données backend" → Redis · "contenu statique users mondiaux" → Front Door / CDN · "front global app + WAF + cache" → Front Door (fiche 6).
N. Azure App Configuration (centralized config + feature flags)
🎯 Présentation
Service managé pour centraliser config (key-values), feature flags, et références Key Vault. Élimine la config éparpillée multi-services/multi-env qui force des redéploiements. Objectif AZ-305 "Recommend an application configuration management solution".
🏗️ Architecture
- Key-value pairs avec labels env (
dev/prod), hiérarchie via préfixes - Feature flags (UI Feature Manager : % rollout, targeting groups, time windows)
- Key Vault references : secrets dans KV, référencés depuis App Config — app code lit 1 endpoint unique
- Snapshots & point-in-time (replay 7j), soft-delete (Standard+), refresh dynamique (default 30s TTL)
- Auth recommandée : Managed Identity + rôle
App Configuration Data Reader
✅ Quand l'utiliser
- Microservices K8s : 1 App Config partagé, pas de config baker dans image
- Multi-env : labels
dev/staging/prod, 1 store N envs - A/B testing & canary : feature flag avec % filter
- Compliance kill-switch : disable feature instantanément sans redéploiement
- Combo recommandé : secrets → KV, config + feature flags → App Config (référence KV)
App Config vs Key Vault
| Key Vault | App Configuration | |
|---|---|---|
| Stocke | Secrets (passwords, conn strings, certs) | Config non-secret (URLs, feature flags, paramètres) |
| Encryption | Hardware-level (HSM) | Standard + CMK optional |
| Combo recommandé | Stocke les secrets | Référence KV via KeyVaultReference |
Règle d'or : Secrets → KV. Config + feature flags → App Config. KV référencé depuis App Config (1 endpoint côté app).
O. Scénarios 305 → solution ⭐⭐
| Scénario business | Réponse |
|---|---|
| "Buffer simple resize images uploadées" | Queue Storage |
| "Order processing FIFO strict par customer" | Service Bus Queue + sessions (sessionId = customerId) |
| "Order placé → fan-out vers inventory + billing + shipping" | Service Bus Topic (3 subscriptions) |
| "Réagir quand un blob CSV est uploadé" | Event Grid System Topic (Blob Created) → Function |
| "SaaS multi-tenant 10k clients à notifier" | Event Grid Domain (1 sub-topic / client) |
| "Telemetry IoT 50k capteurs, 1M events/s" | Event Hub Standard + Capture vers ADLS |
| "Migration Kafka cluster on-prem vers Azure" | Event Hub Standard Kafka API |
| "Thermostats smart home, envoyer config + recevoir telemetry" | IoT Hub Standard (bidirectionnel + device twins) |
| "Provisionner 1M devices auto au premier démarrage" | IoT Hub + DPS (zero-touch) |
| "Chat web real-time, dashboard live" | Azure SignalR Service |
| "Push notifs mobile iOS + Android" | Notification Hubs |
| "Centraliser auth + rate limit + monitoring sur 20 APIs" | APIM Standard v2 (ou Premium si multi-region) |
| "Workflow visuel : email → extract → SharePoint + Teams" | Logic App Consumption (low-code) |
| "Sessions web distribuées multi-instances App Service" | Azure Managed Redis (nouveau projet) ou Cache for Redis (existant) |
| "Centraliser config app multi-env (dev/staging/prod) + feature flags" | Azure App Configuration (Standard) + KV references |
| "Logic App accède DB on-prem sans exposer à Internet" | On-premises Data Gateway |
| "Réagir à un blob upload, à grande échelle, payload < 1 MB" | Event Grid (System Topic Blob) |
| "Cache global content static images / vidéos" | Azure Front Door (CDN edge, fiche 6) |
DEMO
Demo Portail — Service Bus Topic + Subs (e-commerce)
Service Bus > Create→ RGrg-shop, Namespacesb-shop-prod, Tier Standard → Review + Createsb-shop-prod > Topics > + Topic:- Name :
orders-events - Enable duplicate detection : ON
- Duplicate detection history : 10 min
- Create
- Name :
- Pour chaque sub (
inventory,billing,shipping) :orders-events > Subscriptions > + Subscription→ Max delivery count 5 - Filter SQL sur
inventory: sélectionner sub → Default rule → Filter type SQL → expressioneventType = 'OrderPlaced'→ Save
CLI équivalent (pour IaC) :
az servicebus topic create -g rg-shop --namespace-name sb-shop-prod -n orders-events \
--enable-duplicate-detection true --duplicate-detection-history-time-window PT10M
az servicebus topic subscription rule create -g rg-shop --namespace-name sb-shop-prod \
--topic-name orders-events --subscription-name inventory \
--name OrderPlacedFilter --filter-sql-expression "eventType = 'OrderPlaced'"
Demo Portail — Event Grid Storage Blob → Function
Storage accounts > sashoploads > Events > + Event Subscription- Name :
csv-uploaded-trigger, Event Schema : Event Grid Schema - Event Types : cocher uniquement Blob Created
- Endpoint Type : Azure Function → sélectionner
func-csv-parser > ParseCsv - Onglet Filters :
- Subject Begins With :
/blobServices/default/containers/uploads/ - Subject Ends With :
.csv
- Subject Begins With :
- Onglet Additional Features : Max delivery attempts 30, Dead-letter Storage (optionnel)
- Create
CLI équivalent (pour IaC) :
az eventgrid event-subscription create --name csv-uploaded-trigger \
--source-resource-id $(az storage account show -g myrg -n sashoploads --query id -o tsv) \
--endpoint-type azurefunction --endpoint $FUNC_ID \
--included-event-types Microsoft.Storage.BlobCreated \
--subject-begins-with "/blobServices/default/containers/uploads/" --subject-ends-with ".csv"
Demo Portail — Event Hub + Capture
Event Hubs > Create namespace→ RGmyrg, Namespacemyns, Tier Standard, TU 1 → Review + Createmyns > + Event Hub:- Name :
myhub - Partition Count : 4, Message Retention : 7j
- Section Capture : ON → Time 300s, Size 300 MB, Storage
mystorage, containermycontainer, format Avro - Create
- Name :
CLI équivalent (pour IaC) :
az eventhubs eventhub update -g myrg --namespace-name myns -n myhub \
--enable-capture true --capture-interval 300 --capture-size-limit 314572800 \
--destination-name EventHubArchive.AzureBlockBlob \
--storage-account /subscriptions/.../mystorage --blob-container mycontainer
📚 DEMO IoT Hub + DPS détaillée = AZ-220 (IoT Specialty), pas AZ-305.
APIM Premium v2 — policy validate-jwt + rate-limit
<inbound>
<validate-jwt header-name="Authorization" failed-validation-httpcode="401">
<openid-config url="https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration" />
</validate-jwt>
<rate-limit-by-key calls="100" renewal-period="60" counter-key="@(context.Subscription.Id)" />
</inbound>
Logic App Standard
Logic Apps > Create > Plan = Standard(single-tenant, VNet) ou Consumption (pay-per-exec)- Storage Account requis (Standard), Plan WS1/WS2/WS3, VNet injection optionnelle
- Workflows > + Add : Stateful (durable, history) ou Stateless (latence basse)
- Designer : Trigger + Actions
- Run history pour debug
Demo Portal — Azure Managed Redis + Private Endpoint
Create resource > Azure Managed Redis- Basics : Name, region, Cache type (Balanced/Memory Optimized/Compute Optimized/Flash Optimized)
- Cache size selon besoin
- Networking : Private Endpoint + Private DNS zone
privatelink.redis.azure.net - Advanced : TLS port (TLS XOR non-TLS), Clustering policy OSS ou Enterprise, Modules optionnels
- High availability : Enabled (zone-redundant par défaut si région supporte AZ)
- Review + Create → Auth via Entra ID (recommandé) ou Access keys
Demo Portal — App Config + KV reference
Create resource > App Configuration- Basics : Name, region, Pricing tier : Standard
- Networking : Private Endpoint si compliance
- Encryption : Microsoft-managed (default) ou CMK
- Review + Create
- Configuration explorer > + Create > Key-value pour ajouter clés
- Feature manager > + Create > Feature flag :
EnableNewCheckout, Enable ON/OFF, ajouter Feature filter (Targeting/Percentage/Time) - Key Vault reference :
Configuration explorer > + Create > Key vault reference→ Key + Subscription/KV/Secret - Access control (IAM) : rôle
App Configuration Data Readerà la MI de l'app