Microsoft AZ-204: Azure App Service en Web Apps — Studiegids
Onderdeel van de Microsoft Azure Developer Associate AZ-204 — Studiegids. Oefen met geverifieerde antwoorden in het Microsoft-examencentrum, of doe getimede oefentests op ExamRoll.io.
Overzicht
Azure App Service is een volledig beheerd, op HTTP gebaseerd hostingplatform voor webapps, REST API’s en backend-services, dat code- en containerworkloads op Windows en Linux ondersteunt. Het biedt eersteklas functies voor schalen, implementatieworkflows, authenticatie, netwerkisolatie, achtergrondverwerking en veilige configuratie. Om dit te beheersen, is inzicht nodig in App Service plans en schalen, deployment slots en verkeersbeheer, CI/CD-integratiepaden, Easy Auth, custom domains en TLS, WebJobs, App Service Environment (ASE) en patronen voor veilige configuratie met Key Vault.
Plans, schalen en deployment slots
Een App Service plan definieert de compute-resources die uw apps hosten. Alle apps binnen een plan delen dezelfde VM-pool en schaalconfiguratie.
Prijscategorieën (pricing tiers):
- Free (F1)/Shared (D1): Alleen voor ontwikkeling en testen. Geen SLA. Geen custom TLS. Geen deployment slots.
- Basic (B1–B3): Toegewezen VM’s, handmatig uitschalen. Geen autoscale. Beperkte functies.
- Standard (S1–S3): Voegt autoscale en deployment slots toe. Basislijn voor productie.
- Premium v2/v3 (P1v2/P1v3+): Nieuwere compute, snellere opslag, verbeterde netwerkfuncties, zoneredundantie (op ondersteunde SKU’s) en hogere schaalbaarheid. Beste voor enterprise-productie en hoge doorvoer.
- Isolated (I1v2+) in ASE: Toegewezen aan het virtuele netwerk van een klant met netwerkisolatie en enorme schaalbaarheid.
Opschalen (scale up) vs. uitschalen (scale out):
- Opschalen verplaatst het plan naar een hogere SKU voor meer CPU, geheugen, snellere schijven of geavanceerde mogelijkheden (bijv. Premium v3 voor betere prestaties en functies).
- Uitschalen verhoogt het aantal instances om de belasting horizontaal te verdelen. Standard en hoger ondersteunen autoscale met regels op basis van metrics zoals CPU, geheugen (Linux), HTTP-wachtrijlengte, verzoeken, custom metrics of schema’s. Basic ondersteunt alleen handmatig uitschalen. Schalen is van toepassing op alle apps binnen een plan.
Deployment slots en slot swaps:
- Standard en hogere tiers ondersteunen meerdere slots (bijvoorbeeld staging en productie). Slots draaien op hetzelfde plan, elk met een eigen hostnaam en configuratie.
- Een swap verplaatst de content en runtime-status van een bronslot naar een doelslot met nagenoeg geen downtime door de bestemming op te warmen voordat het verkeer wordt omgeschakeld. Gebruik applicationInitialization (Windows) of health checks om te verzekeren dat de app gereed is vóór de swap. ‘Swap with preview’ maakt validatie mogelijk voordat de wissel definitief wordt.
- Markeer configuratie-items als ‘slot settings’ om ze tijdens swaps aan het slot ‘geplakt’ te houden (bijv. database connection strings, secrets en diagnostische endpoints). Niet-gemarkeerde instellingen verhuizen mee met de code tijdens een swap.
Verkeer routeren met slots:
- Leid een percentage van het live verkeer naar een niet-productieslot voor canary testing (testen in productie). Cookies ‘pinnen’ gebruikers vast aan een slot na toewijzing om sessieconsistentie te behouden.
Implementatie en CI/CD: GitHub, Azure DevOps en container registries
Deployment Center integreert veelvoorkomende CI/CD-flows:
- GitHub Actions:
- App Service kan een workflow opzetten met behulp van een Oryx-build of container-implementatie. Bij een push naar een branch bouwen en implementeren de Actions naar het geselecteerde slot. Ondersteuning voor matrix builds, environments en secrets. Voor Linux-containers kan de workflow een image bouwen en pushen naar ACR of Docker Hub, en vervolgens een webapp-implementatie activeren.
- Azure DevOps:
- Pipelines (YAML of klassiek) leveren build- en release-stages, goedkeuringen, omgevingscontroles en multistage-gating. Gebruik taken: Azure Web App, Azure Web App for Container, of AzureCLI voor implementaties met ARM/Bicep. Variabelengroepen en door Key Vault ondersteunde secrets centraliseren de configuratie.
- Container registries:
- App Service for Containers haalt images op van ACR, Docker Hub of private registries. Configureer continue implementatie via ACR-webhooks naar de app; een push van een nieuwe image activeert een pull en een herstart. Pin op tag of digest. Gebruik voor productieveiligheid image digests en canary slots voordat u promoveert.
- Aanvullende implementatiemechanismen:
- Kudu ondersteunt op Git gebaseerde push, Zip Deploy en Run From Package voor reproduceerbare builds. Het .deployment-bestand en custom scripts kunnen build-stappen coördineren voordat de site verkeer gaat bedienen. Voor release-hygiëne op enterprise-niveau, combineer slots met CI/CD om health checks en warm-up te valideren vóór een swap.
Beveiliging, identiteit, domeinen en TLS
App Service-authenticatie/-autorisatie (Easy Auth) verplaatst de identiteitsafhandeling naar het platform, zonder dat er middleware in uw code nodig is.
- Providers:
- Microsoft Entra ID (Microsoft identity platform), Google, Facebook, GitHub en Twitter, plus elke OpenID Connect-compatibele provider, inclusief Entra ID B2C. Configureer client-ID’s/secrets, issuer en toegestane token audiences/scopes. Kies de inlogactie (anoniem toestaan vs. authenticatie vereisen).
- Token store en headers:
- Schakel de token store in om access/refresh tokens die tijdens de aanmeldingsflow zijn verkregen, in de cache op te slaan. Deze zijn op te halen via
undefined
en te vernieuwen via
undefined
. App Service injecteert gebruikersclaims in request headers (bijvoorbeeld
undefined
in Base64), zodat de app de identiteit kan afleiden zonder SDK-afhankelijkheden. Gebruik het uitlog-endpoint van het platform om sessies te wissen.
- Custom domains:
- Map CNAME- (aanbevolen) of A/ALIAS-records naar de standaard hostnaam van de app. Verifieer het domeineigendom met TXT-records indien nodig. Bind de custom hostnaam in App Service.
- SSL/TLS-certificaten:
- Dwing ‘HTTPS Only’ af en stel de minimale TLS-versie in. Bind certificaten via SNI (meerdere certificaten per IP) of IP-gebaseerde SSL (toegewezen IP). Upload privé-certificaten (PFX) voor certificaatbeheer op productieniveau. App Service Managed Certificate biedt een gratis, automatisch vernieuwend, domein-gevalideerd certificaat voor niet-wildcard hostnamen; het kan niet worden geëxporteerd en vereist een ondersteunde tier. Gebruik Key Vault-integratie om privé-certificaten op grote schaal te beheren en automatisch te rouleren.
- Clientcertificaten (mTLS):
- Vereis optioneel inkomende clientcertificaten en geef deze door aan de app voor validatie. Combineer met Web Application Firewall en reverse proxies (bijvoorbeeld Application Gateway) voor end-to-end TLS.
Achtergrondverwerking en geïsoleerde omgevingen
WebJobs en ASE zijn bedoeld voor scenario’s met achtergrondverwerking en netwerkisolatie.
- WebJobs:
- Continue WebJobs draaien permanent op elke instantie van de web-app, geschikt voor het verwerken van wachtrijen (queue processing) of event loops. Vereist Always On (Standard en hoger) om ze draaiende te houden. Schaalvergroting volgt het aantal instanties van het app plan; pas singleton-gedrag toe in de code als slechts één actieve worker gewenst is.
- Getriggerde WebJobs draaien on-demand of volgens een schema (CRON via settings.job). Ideaal voor batchverwerking, ETL of periodiek onderhoud.
- De WebJobs SDK biedt triggers en bindings voor Azure Storage Queues, Service Bus-wachtrijen/topics, Blobs en Timers met declaratieve functiemethoden en automatische checkpointing. Een door een wachtrij getriggerde WebJob reageert onmiddellijk op nieuwe berichten, schaalt mee met de app-instanties en gebruikt ‘poison queue handling’ voor foutisolatie. Logs en dashboards zijn toegankelijk in Kudu.
- App Service Environment (ASE):
- ASEv3 host App Service-plannen binnen uw VNet met Isolated v2 SKU’s, wat zorgt voor dedicated compute, isolatie van het datavlak en privé-IP’s. Kies voor een External ASE voor publieke ingress of een Internal Load Balancer (ILB) ASE om al het inkomende verkeer privé binnen het VNet te houden. Integreer naar behoefte met private DNS, firewalls en NVA/WAF.
- ASE maakt granulaire controle over uitgaand verkeer (egress), netwerkinspectie en afstemming op compliance-eisen mogelijk. Het ondersteunt grootschalige hosting met voorspelbare netwerkgrenzen en wordt apart van de plan-instanties gefactureerd.
Configuratie, connection strings en Key Vault-referenties
App-configuratie wordt tijdens runtime geïnjecteerd en kan slot-specifiek zijn.
- App settings:
- Sleutel-waardeparen (key-value pairs) die voor de app beschikbaar zijn als omgevingsvariabelen. Markeer als ‘slot settings’ om afzonderlijke waarden per slot te behouden. Gebruik het Health check-pad om ongezonde instanties uit de rotatie te verwijderen tijdens rollouts. Wijzigingen veroorzaken een herstart van de app, tenzij geconfigureerd met dynamische herlaadpatronen in uw framework.
- Connection strings:
- Worden afzonderlijk beheerd en beschikbaar gesteld als omgevingsvariabelen; .NET-apps ontvangen ook provider-specifieke configuratie. Typen zijn onder andere SQLAzure, SQLServer, MySQL, PostgreSQL en Custom. Markeer waar nodig als ‘slot settings’ om te voorkomen dat geheimen (secrets) worden gewisseld.
- Key Vault-referenties:
- Verwijs rechtstreeks naar geheimen in App Settings en Connection Strings met de speciale syntaxis @Microsoft.KeyVault(SecretUri=https://
<vault>.vault.azure.net/secrets/<name>/<version>) of versie-loze URI’s om rotaties automatisch op te pikken. Wijs een door het systeem of door de gebruiker toegewezen beheerde identiteit (managed identity) toe aan de app en geef deze vervolgens ‘Get secret’-permissies (via RBAC of een toegangsbeleid) op de vault. Het platform lost de waarden op en vernieuwt ze zonder de geheimen bloot te stellen in de App Service-configuratie. Om TLS-certificaten uit Key Vault te gebruiken, importeer ze als certificaten of gebruik certificaatreferenties die door het platform worden ondersteund.
- Verwijs rechtstreeks naar geheimen in App Settings en Connection Strings met de speciale syntaxis @Microsoft.KeyVault(SecretUri=https://
Diepgaande analyse van implementatieslots en operational excellence
Gebruik een staging-slot als het doel voor CI/CD. Na de implementatie:
- Voer warm-up pings en health checks uit om JIT, caches en databaseverbindingen voor te bereiden (‘primen’).
- Valideer configuratieverschillen met behulp van slot-instellingen om productiegeheimen en -endpoints te isoleren.
- Voer een ‘swap with preview’ uit om het staging-slot op de productie-hostnaam te testen alvorens te finaliseren. Als er fouten optreden, annuleer de swap om onmiddellijk terug te draaien.
- Voor ‘progressive delivery’, gebruik ’traffic routing’ om een klein percentage naar het canary-slot te leiden en monitor App Insights-statistieken en -logs. Verhoog geleidelijk en voltooi de swap wanneer de SLO’s worden gehaald.
Praktisch Probleemscenario
Starbucks lanceert een nieuw webbestelplatform dat pieken tijdens promoties moet kunnen verwerken, moet integreren met social logins, interne API’s moet beschermen en achtergrondworkflows voor bestellingen betrouwbaar moet verwerken.
- Kies een Premium v3 App Service-plan met twee implementatieslots (staging, productie)
- Waarom: Premium v3 biedt snellere CPU’s en SSD’s voor paginaladingen met lage latentie en hogere doorvoer, plus slots en autoscale. Slots maken zero-downtime swaps en een snelle rollback mogelijk tijdens verkeerspieken door promoties.
- Implementeer CI/CD met GitHub Actions om te implementeren naar het staging-slot
- Waarom: GitHub Actions biedt repository-native automatisering. Implementeren naar staging maakt warm-up en validatie mogelijk voordat het klantverkeer wordt beïnvloed. De workflow gebruikt Oryx om te bouwen en te implementeren bij een push naar ‘main’, wat consistente builds garandeert.
- Schakel Easy Auth in met Microsoft Entra ID en Google als providers; schakel de Token Store in
- Waarom: Easy Auth neemt OAuth/OIDC-flows over, waardoor het oppervlak van aangepaste beveiligingscode wordt verkleind. Meerdere providers ondersteunen de aanmeldvoorkeuren van consumenten. De Token Store maakt downstream API-aanroepen (bijvoorbeeld naar een microservice voor loyaliteitsprofielen) eenvoudig door gebruik te maken van gecachte tokens die via /.auth-endpoints worden aangeboden.
- Configureer aangepaste domeinen en TLS
- Waarom: Koppel order.starbucks.com via CNAME, dwing ‘HTTPS Only’ af en stel een minimum van TLS 1.2 in voor compliance. Gebruik een App Service Managed Certificate voor het staging-slot om het beheer te verminderen, en upload een PFX van de bedrijfs-CA voor productie om te voldoen aan het merk- en certificaatbeleid.
- Gebruik de WebJobs SDK met een Azure Storage Queue-trigger voor de orderafhandeling
- Waarom: Een continue WebJob verwerkt berichten zodra ze binnenkomen, waardoor de checkout wordt losgekoppeld van de afhandeling en pieken worden afgevlakt. Met ‘Always On’ en op het plan gebaseerde scale-out neemt de doorvoer automatisch toe met extra instances. De afhandeling van de ‘poison queue’ isoleert foute berichten zonder de pipeline te verstoren.
- Beveilig uitgaande geheimen met Key Vault-referenties en een door het systeem toegewezen beheerde identiteit
- Waarom: Geheimen staan nooit in de App Service-configuratie. De identiteit heeft ’least-privilege’ toegang tot Key Vault, en versie-loze geheime URI’s maken naadloze rotatie mogelijk.
- Bescherm interne API’s met netwerkmaatregelen
- Waarom: Plaats interne microservices achter een private endpoint; de publieke web-app roept deze aan via VNet Integration (Premium v3) naar een beveiligde backend. Als in de toekomst strengere isolatie nodig is, migreer dan de weblaag naar een ILB ASE om alle inkomende data privé te maken met behoud van de App Service-mogelijkheden.
- Releasestrategie met canarying en swap
- Waarom: Leid 5% van het verkeer naar de staging-omgeving voor live validatie tijdens een promotie. Monitor de latentie, foutbudgetten en checkout-conversie via Application Insights. Als alles in orde is, voer dan een ‘swap with preview’ uit; zo niet, annuleer en onderzoek het probleem, waarbij de klantervaring behouden blijft.
Alle domeinen · Azure Functions en Serverless Computing →
Oefen deze vragen → · Getimede oefening op ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Slaag voor je examen →