Azure App Service configureren
Zodra je applicatie is gedeployed, is de volgende stap het configureren van verschillende aspecten van je Azure App Service om ervoor te zorgen dat deze optimaal en veilig draait. In deze sectie behandelen we custom domeinen, authenticatie en app-instellingen.
Aangepaste domeinen configureren
Standaard is je App Service bereikbaar via een URL zoals your-app-name.azurewebsites.net. Voor productie-applicaties wil je waarschijnlijk je eigen domeinnaam gebruiken. Zo stel je een aangepast domein in:
- Koop een domein bij een domeinregistrar als je er nog geen hebt
- Ga in je App Service naar "Custom domains" in de linkerzijbalk
- Klik op "Add custom domain"
- Voer je domeinnaam in (bijv.
myapp.example.com) - Volg de instructies om het eigenaarschap van het domein te verifiëren
- Je moet een
TXT- ofCNAME-record toevoegen aan je DNS-instellingen

Voor apex-domeinen (zoals example.com zonder www) moet je een A-record aanmaken dat naar het IP-adres van je App Service wijst. Je vindt dit IP-adres op de configuratiepagina voor custom domeinen.
Je kunt aangepaste domeinen ook beheren met de Azure CLI:
# Add a custom domain
az webapp config hostname add --webapp-name MyWebApp --resource-group MyResourceGroup --hostname www.example.com
SSL-certificaten binden
Voor veilige applicaties, vooral die met gevoelige data werken, is het essentieel om HTTPS in te schakelen. Azure App Service maakt dit eenvoudig met gratis beheerde certificaten of de mogelijkheid om je eigen certificaten te uploaden.
Zo voeg je een SSL-certificaat toe:
- Ga in je App Service naar "TLS/SSL settings"
- Selecteer "Private Key Certificates"
- Kies een van de volgende opties:
- Maak een gratis, door App Service beheerd certificaat aan
- Importeer een App Service-certificaat
- Upload een PFX-certificaat
- Ga nadat het certificaat is toegevoegd naar "Bindings"
- Voeg een SSL-binding toe voor je aangepaste domein
Voor data-applicaties die met gevoelige informatie werken, raad ik aan om HTTPS-only modus in te schakelen zodat al het verkeer versleuteld is:
- Ga in "TLS/SSL settings" naar de sectie "HTTPS Only"
- Zet de schakelaar op "On"
- Klik op "Save"
Authenticatie en autorisatie configureren
Veel data-applicaties vereisen gebruikersauthenticatie om toegang tot gevoelige data of functionaliteiten te beperken. Azure App Service biedt ingebouwde authenticatieopties, zodat je geen authenticatielogica in je eigen code hoeft te implementeren.
Zo stel je authenticatie in:
- Ga in je App Service naar "Authentication" in de linkerzijbalk
- Klik op "Add identity provider"
- Kies je identity provider:
- Microsoft (Azure AD)
- GitHub
- OpenID Connect
- Configureer de providerinstellingen
- Stel redirect-URL's en token store-configuraties in

Voor enterprise data-applicaties is Azure Active Directory vaak de voorkeursoptie, omdat het integreert met bestaande bedrijfsidentiteiten en functies ondersteunt zoals voorwaardelijke toegang en multifactorauthenticatie.
Je kunt ook autorisatiebeperkingen configureren om te bepalen wie toegang heeft tot je applicatie:
- Selecteer in de Authentication-instellingen "Edit" naast je identity provider
- Kies onder "Restrict access" een van de volgende opties:
- Unauthenticated requests toestaan
- Authenticatie vereisen
- Anonieme requests toestaan (no action)
- Configureer indien nodig toegestane externe redirect-URL's
App-instellingen en connection strings
We hebben app-instellingen eerder kort aangestipt, maar laten we dieper ingaan op hoe je ze effectief kunt gebruiken om je data-applicatie te configureren.
App-instellingen in Azure App Service fungeren als omgevingsvariabelen voor je applicatie. Ze zijn met name handig voor:
- Database-connection strings
- API-sleutels
- Feature flags
- Omgevingsspecifieke configuraties
Zo voeg je app-instellingen toe of wijzig je ze:
- Ga in je App Service naar "Configuration" in de linkerzijbalk
- Selecteer het tabblad "Application settings"
- Klik op "New application setting" om een key-value-paar toe te voegen
- Voor gevoelige waarden kun je de optie "deployment slot setting" inschakelen om te voorkomen dat ze worden verwisseld tijdens slot swaps

Voor data-applicaties zijn veelvoorkomende instellingen onder meer:
- Database-connection strings
- Toegangssleutels voor storage-accounts
- Endpoints voor machinelearningmodellen
- Feature flags voor A/B-testen
Je kunt ook connection strings afzonderlijk configureren, wat handig is voor databaseverbindingen:
- Selecteer op de Configuration-pagina het tabblad "Connection strings"
- Klik op "New connection string"
- Geef een naam, waarde en type op (SQL Server, MySQL, PostgreSQL, enz.)
Connection strings zijn ook beschikbaar voor je applicatie als omgevingsvariabelen, maar met een andere naamgevingsconventie, afhankelijk van je taal/framework.
Zo haal je instellingen op in je Python-applicatie:
import os
# Retrieve an application setting
api_key = os.environ.get('API_KEY')
# Retrieve a connection string (Python)
connection_string = os.environ.get('SQLCONNSTR_MyDatabase')
Key Vault-referenties gebruiken
Voor zeer gevoelige informatie zoals databasegegevens of API-sleutels biedt Azure Key Vault een extra beveiligingslaag. Je kunt Key Vault-secrets rechtstreeks refereren in je app-instellingen:
- Maak een Azure Key Vault en voeg je secrets toe
- Zorg dat je App Service een managed identity heeft
- Geef die identity toegang tot de Key Vault
- Verwijs in je app-instellingen naar de secret met het formaat: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)
Deze aanpak scheidt gevoelige informatie van je applicatieconfiguratie en zorgt voor centrale secret-beheer.
Schalen en beheren van Azure App Service
Nu je applicatie is gedeployed en geconfigureerd, richten we ons op prestaties, betrouwbaarheid en het inspelen op wisselende workloads.
Goed schalen en beheren van je Azure App Service is vooral belangrijk voor data-applicaties, die vaak variabele resourcebehoeften hebben en mogelijk gevoelige informatie verwerken.
App Service-plannen schalen
Een van de grote voordelen van cloudplatformen zoals Azure is de mogelijkheid om resources op of af te schalen op basis van de vraag. Voor data-applicaties is dit extra waardevol, omdat workloads vaak sterk variëren: van perioden met intensieve dataverwerking tot rustigere tijden met minimale traffic.
Azure App Service biedt twee primaire schaalmethoden:
Verticaal schalen (Scale up/down)
Verticaal schalen houdt in dat je de grootte van je App Service-plan wijzigt om meer of minder CPU, geheugen en opslagruimte te bieden. Dit is nuttig wanneer de prestaties van je applicatie beperkt worden door de resources van één instantie.
Zo schaal je verticaal:
- Selecteer in je App Service-plan "Scale up (App Service plan)" in de linkerzijbalk
- Kies een andere prijscategorie of instantiegrootte op basis van je behoeften
- Klik op "Apply"

Voor data-applicaties is verticaal schalen zinvol wanneer:
- Je applicatie geheugenstress ervaart door grote dataverwerkingsoperaties
- Je CPU-limieten raakt tijdens modelinference
- Je extra opslag nodig hebt voor datacaching of tijdelijke bestanden
Horizontaal schalen (Scale out/in)
Horizontaal schalen verandert het aantal virtual machine-instanties waarop je applicatie draait. Deze aanpak is ideaal om load te verdelen en de beschikbaarheid te verbeteren.
Zo schaal je horizontaal:
- Selecteer in je App Service-plan "Scale out (App Service plan)" in de linkerzijbalk
- Stel het aantal instanties handmatig in of configureer autoscaling-regels
- Klik op "Save"
Voor handmatig schalen pas je simpelweg het aantal instanties aan naar de gewenste waarde. Autoscaling biedt echter meer flexibiliteit door resources automatisch aan te passen op basis van metrics.
Autoscaling-regels instellen
Autoscaling is vooral waardevol voor data-applicaties met variabele workloads. Een API voor het serven van machinelearningmodellen kan bijvoorbeeld overdag meer verkeer hebben en ’s nachts minder.
Zo configureer je autoscaling:
- Selecteer in de sectie "Scale out" "Enable autoscale"
- Definieer een schaalconditie met de volgende onderdelen:
- Een standaard aantal instanties
- Scale-outregels (wanneer instanties toe te voegen)
- Scale-inregels (wanneer instanties te verwijderen)
- Optionele, op schema gebaseerde regels

Hier is een voorbeeld van een veelgebruikte autoscaling-regel:
- Scale out: Voeg één instantie toe wanneer CPU-percentage > 70% gedurende 10 minuten
- Scale in: Verwijder één instantie wanneer CPU-percentage < 30% gedurende 10 minuten
Je kunt ook geavanceerdere regels maken op basis van:
- Geheugengebruik
- Lengte van datawachtrijen
- Aangepaste metrics uit Application Insights
Voor data science-workloads kun je deze autoscaling-strategieën overwegen:
- Als je applicatie machinelearningmodellen serveert, schaal op basis van de lengte van de request-wachtrij om de voorspellinglatentie laag te houden
- Plan voor ETL-processen extra capaciteit in tijdens bekende verwerkingsvensters
- Gebruik schema-gebaseerde scaling voor applicaties met wereldwijde gebruikers om voldoende capaciteit over tijdzones heen te garanderen
Je kunt autoscaling ook configureren met Azure CLI:
# Create an autoscale setting with a rule to scale out when CPU > 70%
az monitor autoscale create --resource-group MyResourceGroup --resource MyAppServicePlan --resource-type "Microsoft.Web/serverfarms" --name MyAutoScaleConfig --min-count 2 --max-count 5 --count 2
# Add a scale out rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale out 1 --condition "Percentage CPU > 70 avg 10m"
# Add a scale in rule
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale in 1 --condition "Percentage CPU < 30 avg 10m"
Monitoring en diagnostiek
Effectieve monitoring is cruciaal om betrouwbare data-applicaties te onderhouden. Azure biedt uitgebreide monitoringtools die inzicht geven in de prestaties van je applicatie, gebruikspatronen en mogelijke problemen.
Azure Monitor en Application Insights
Azure Monitor vormt de basis voor het monitoren van Azure-services, terwijl Application Insights diepgaandere, applicatiespecifieke inzichten biedt.
Zo schakel je Application Insights in voor je App Service:
- Selecteer in je App Service "Application Insights" in de linkerzijbalk
- Klik op "Turn on Application Insights"
- Configureer een nieuwe of bestaande Application Insights-resource
- Klik op "Apply"

Na inschakeling verzamelt Application Insights een schat aan gegevens over je applicatie, waaronder:
- Request-snelheden, responstijden en faalpercentages
- Dependency-calls (databases, externe API's)
- Paginaweergaveprestaties
- Exceptielogs
- Aangepaste events die je in code definieert
Voor Python-applicaties moet je de Application Insights-SDK installeren:
pip install opencensus-ext-azure
En vervolgens instrumentatie toevoegen aan je applicatie:
from opencensus.ext.azure.trace_exporter import AzureExporter
from opencensus.trace.samplers import ProbabilitySampler
from opencensus.trace.tracer import Tracer
# Configure the Azure exporter
azure_exporter = AzureExporter(
connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000'
)
# Create a tracer
tracer = Tracer(exporter=azure_exporter, sampler=ProbabilitySampler(1.0))
# Use the tracer in your application
with tracer.span(name="main_function"):
# Your code here
pass
Logs bekijken en alerts instellen
Azure App Service verzamelt automatisch logs die je helpen bij het diagnosticeren van problemen:
- Selecteer in je App Service "Log stream" om realtime logs te bekijken
- Ga voor meer gedetailleerde analyse naar "Diagnostic logs" en schakel application logging in
- Configureer het logniveau (Error, Warning, Information, Verbose)

Let bij data-applicaties in het bijzonder op:
- Out-of-memory-excepties, die vaak voorkomen bij het verwerken van grote datasets
- Time-outs bij verbinding met databronnen
- Prestatieknelpunten tijdens datatransformatie
Met alerts zorg je dat je van problemen op de hoogte bent voordat ze gebruikers raken:
- Selecteer in Azure Monitor "Alerts"
- Klik op "New alert rule"
- Selecteer je App Service als resource
- Definieer de conditie die de alert moet triggeren
- Configureer action groups om te bepalen wie en hoe er wordt gewaarschuwd
- Geef je alert een naam en sla op
Veelvoorkomende alerts voor data-applicaties zijn onder andere:
- Hoog geheugengebruik (>80%)
- Serverfouten (5xx-responses)
- Lange verwerkingstijden voor kernoperaties
- Mislukte pogingen tot dataverbinding
Aangepaste monitoring voor data-applicaties
Voor dataspecifieke monitoringbehoeften kun je deze aangepaste metrics bijhouden:
- Dataverwerkingsthroughput (records per minuut verwerkt)
- Modelinference-latentie
- Tijd voor feature-berekening
- Cache hit/miss-ratio's
Je kunt aangepaste metrics naar Application Insights sturen met de SDK:
from opencensus.ext.azure import metrics_exporter
from opencensus.stats import aggregation, measure, stats, view
# Create a metrics exporter
exporter = metrics_exporter.new_metrics_exporter(
connection_string='InstrumentationKey=00000000-0000-0000-0000-000000000000')
# Create and record custom metrics
prediction_time = measure.MeasureFloat(
"prediction_time", "Time taken for model inference", "ms")
prediction_time_view = view.View(
"prediction_time_view", "Model inference time", [], prediction_time, aggregation.LastValueAggregation())
# Register the view
stats.stats.view_manager.register_view(prediction_time_view)
# Record metrics
mmap = stats.stats.stats_recorder.new_measurement_map()
mmap.measure_float_put(prediction_time, 175.5) # Record 175.5ms inference time
mmap.record()
# Force metrics to be sent immediately
exporter.export_metrics([])
Back-up en herstel
Data-applicaties beheren vaak waardevolle informatie, waardoor back-up- en herstelmogelijkheden essentieel zijn. Azure App Service biedt ingebouwde back-upfunctionaliteit die de bestanden, configuratie en gekoppelde databases van je applicatie kan vastleggen.
Automatische back-ups instellen
Zo configureer je back-ups:
- Selecteer in je App Service "Backups" in de linkerzijbalk
- Klik op "Configure"
- Stel het back-upschema in (dagelijks, wekelijks of aangepast)
- Specificeer een storage-account voor de back-upbestanden
- Neem eventueel databases op in de back-up
- Klik op "Save"

Voor data-applicaties zijn dit goede back-upraktijken:
- Plan back-ups tijdens periodes met weinig activiteit
- Zorg dat je storage-account zich in dezelfde regio bevindt als je App Service voor snellere back-ups
- Configureer voor applicaties met frequente datawijzigingen vaker back-ups
- Houd er rekening mee dat grote databases de back-uplimieten kunnen overschrijden; overweeg in dat geval databasespecifieke back-upstrategieën
Herstellen vanuit een back-up
Als je je applicatie moet herstellen:
- Selecteer in de sectie Backups het back-uppunt waarvan je wilt herstellen
- Klik op "Restore"
- Kies of je de app-content, configuratie en gekoppelde databases wilt herstellen
- Specificeer de doel-App Service (dit kan dezelfde of een andere app zijn)
- Klik op "OK" om het herstelproces te starten
Voor kritieke data-applicaties raad ik aan om het herstelproces periodiek te testen om te verzekeren dat je herstelstrategie werkt zoals verwacht.
Databasespecifieke back-upstrategieën
Hoewel App Service-back-ups gekoppelde databases kunnen omvatten, profiteren data-intensieve applicaties vaak van databasespecifieke back-upstrategieën:
- Configureer voor Azure SQL-databases automatische back-ups met point-in-time restore
- Gebruik voor Cosmos DB de continue back-upmodus
- Overweeg voor grote datasets die in Azure Storage zijn opgeslagen accountreplicatie en versiebeheer
Beveiliging en compliance in Azure App Service
Beveiliging is cruciaal voor data-applicaties, vooral als je te maken hebt met gevoelige of gereguleerde informatie. Azure App Service biedt verschillende beveiligingsfuncties om je applicaties te beschermen.
Role-based access control (RBAC)
Met RBAC bepaal je wie je App Service-resources kan beheren:
- Navigeer in de Azure Portal naar je App Service
- Selecteer "Access control (IAM)" in de linkerzijbalk
- Klik op "Add" en vervolgens op "Add role assignment"
- Kies de juiste rol:
- Contributor: Kan App Service beheren maar geen toegang verlenen aan anderen
- Reader: Kan bekijken maar niets wijzigen
- Website Contributor: Kan websites beheren maar niet het App Service-plan
- Selecteer de gebruikers, groepen of service-principals aan wie je de rol wilt toewijzen
- Klik op "Save"

Voor datateams is het de moeite waard om aangepaste rollen te maken die de toegang beperken tot specifieke handelingen op basis van verantwoordelijkheden.
IP-beperkingen en netwerken
Met IP-beperkingen bepaal je welke IP-adressen toegang hebben tot je App Service:
- Selecteer in je App Service "Networking" in de linkerzijbalk
- Ga naar "Access Restrictions"
- Klik op "Add rule"
- Geef het IP-adresbereik, de actie (Allow/Deny), prioriteit en naam op
- Klik op "Add rule"
Voor data-applicaties die verbinding maken met interne resources, overweeg:
- VNet-integratie: Verbind je App Service met je virtuele netwerk
- Service Endpoints: Beveilig verbindingen met Azure-services zoals SQL en Storage
- Private Endpoints: Maak een private link naar je App Service vanuit je virtuele netwerk
Zo stel je VNet-integratie in:
- Selecteer in de sectie Networking "VNet Integration"
- Klik op "Add VNet"
- Selecteer of maak een virtueel netwerk en subnet
- Klik op "OK"
Deze integratie is vooral handig om veilig verbinding te maken met databases of andere databronnen binnen je netwerk.
Veelvoorkomende problemen met Azure App Service oplossen
Zelfs met zorgvuldige planning kunnen er problemen optreden met je App Service. Hier zijn enkele veelvoorkomende issues en hun oplossingen, met de focus op data-applicaties.
App-crashes diagnosticeren
Als je app crasht of niet reageert:
- Controleer de App Service-logs:
- Ga naar "Log stream" voor realtime logs
- Check "Diagnostic logs" voor historische data
- Gebruik Application Insights om exceptions te identificeren
- Voer Kudu-diagnosetools uit:
- Navigeer naar
https://<your-app-name>.scm.azurewebsites.net/DebugConsole - Gebruik de console om bestanden en processen te inspecteren
Veelvoorkomende oorzaken van crashes in data-applicaties zijn:
- Geheugenlimieten: Het verwerken van grote datasets kan het beschikbare geheugen overschrijden
- Afhankelijkheidsproblemen: Ontbrekende of incompatibele packages
- Configuratiefouten: Onjuiste connection strings of omgevingsvariabelen
Voor geheugenintensieve operaties, overweeg:
- Opschalen naar een hoger tier met meer geheugen
- Data opsplitsen in chunks om kleinere batches te verwerken
- Efficiëntere algoritmen of datastructuren gebruiken
Performanceproblemen debuggen
Als je applicatie traag draait:
- Gebruik Application Insights performance monitoring:
- Check de Performance-blade om trage requests te identificeren
- Zoek naar dependency-calls die bottlenecks kunnen veroorzaken
- Bekijk servermetrics in Azure Monitor:
- CPU- en geheugengebruik
- HTTP-queuelengte
- Controleer databasequery-prestaties voor data-intensieve operaties
Om de performance te verbeteren:
- Implementeer caching voor frequente queries
- Optimaliseer database-indexen
- Overweeg opschalen of uit te schalen
- Gebruik async-operaties voor langlopende processen
Logs en foutmeldingen bekijken
Azure App Service biedt verschillende loggingopties:
- Applicatielogs: De eigen logs van je applicatie
- Webserverlogs: HTTP-request- en foutlogs
- Deployment-logs: Informatie over je deploymentproces
- Gedetailleerde foutlogging: Meer informatie over HTTP-fouten
Zo configureer je meer gedetailleerde logging:
- Ga in je App Service naar "Diagnostic logs"
- Schakel de juiste logtypen in
- Stel het juiste niveau in (Error, Warning, Information, Verbose)
- Kies of je logs opslaat in het bestandssysteem of in blob storage
Voor Python-applicaties kun je logging uitbreiden met:
import logging
import sys
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler(sys.stdout)
]
)
# Use logging in your application
logger = logging.getLogger(__name__)
logger.info("Processing data batch")
logger.error("Failed to connect to database", exc_info=True)
Kostenbeheer met Azure App Service
Data-applicaties verbruiken vaak veel resources, waardoor inzicht in en optimalisatie van kosten extra belangrijk is. In dit laatste deel bespreken we prijsmodellen van Azure App Service en strategieën om kosten effectief te beheren.
Inzicht in Azure App Service-prijzen
De prijs van Azure App Service is vooral gebaseerd op het gekozen App Service-plan. Laten we de kostenfactoren uiteenzetten waarmee je rekening moet houden:
App Service-plan tiers
Zoals eerder besproken, biedt Azure meerdere prijstiers met elk verschillende mogelijkheden en kosten:
|
Tier |
Maandelijkse kosten (USD) |
Functies |
Beste keuze voor |
|
Free |
$0 |
1GB opslag, gedeelde infrastructuur, 60 minuten/dag compute |
Ontwikkeling, leren |
|
Shared (D1) |
$10-15 |
1GB opslag, 240 minuten/dag compute |
Sites met weinig verkeer, testen |
|
Basic (B1-B3) |
$55-220 |
Dedicated VM's, handmatig schalen, aangepaste domeinen |
Productieworkloads, laag tot gemiddeld verkeer |
|
Standard (S1-S3) |
$70-400 |
Autoscaling, staging-slots, dagelijkse back-ups |
Productie-apps met variabel verkeer |
|
Premium (P1V2-P3V2) |
$80-500 |
Verbeterde performance, meer schaalopties |
Hoge prestatie-eisen, grote applicaties |
|
Isolated |
$300-1000+ |
Dedicated netwerk-/compute-isolatie |
Applicaties met strikte compliance-eisen |
Opmerking: Prijzen zijn bij benadering en kunnen per regio variëren of veranderen met Azure-prijswijzigingen. Voor de laatste information, bekijk de officiële prijspagina.
Aanvullende kostenfactoren
Naast het basis App Service-plan, houd rekening met deze extra kosten:
- Uitgaand dataverkeer: Na de eerste 5GB per maand (gratis) worden kosten in rekening gebracht voor uitgaand dataverkeer. Voor data-applicaties die grote datasets aan gebruikers leveren kan dit aanzienlijk worden.
- SSL-certificaten: Hoewel Azure gratis certificaten levert, zijn er kosten verbonden aan aangepaste certificaten.
- Aangepaste domeinen: Het eerste aangepaste domein is gratis, maar extra domeinen kunnen kosten met zich meebrengen.
- Opslag: Extra opslag bovenop wat in je tier is inbegrepen kost extra.
- Add-ons en gekoppelde services: Databases, cachingservices en andere Azure-resources die aan je App Service zijn gekoppeld, hebben hun eigen kosten.
Kosten monitoren
Azure biedt tools om je uitgaven te monitoren en te voorspellen:
- Azure cost management: Open dit in de Azure Portal om kosten per resource te bekijken, budgetten in te stellen en alerts te maken.
- Pricing calculator: Gebruik de Azure Pricing Calculator om kosten vooraf in te schatten.
- Advisor-aanbevelingen: Azure Advisor biedt suggesties voor kostenoptimalisatie op basis van je gebruikspatronen.
> Om kosten, beveiliging en performance effectief te beheren over Azure-services heen, is deze cursus over Azure Management and Governance sterk aan te raden.
Kostenoptimalisatiestrategieën
Nu we het prijsmodel begrijpen, bekijken we strategieën om kosten te optimaliseren voor data-applicaties op Azure App Service.
Je App Service-plan juist dimensioneren
Een van de meest effectieve manieren om kosten te beheersen is zorgen dat je het juiste App Service-plan gebruikt:
- Begin met een passend startpunt: In plaats van standaard voor een hoog tier te kiezen, start je met een middelgroot plan en schaal je alleen op wanneer nodig.
- Monitor resourcegebruik: Gebruik Azure Monitor om CPU-, geheugen- en schijfgebruik te volgen. Zit je consequent onder 50% gebruik, overweeg dan te verkleinen.
- Koppel de tier aan je workload: Voor data-applicaties met voorspelbare, stabiele workloads kan een Basic- of Standard-tier volstaan. Reserveer Premium-tiers voor applicaties met veeleisende prestatie-eisen.
Voor data science-applicaties, overweeg deze specifieke aanbevelingen:
- Model serving-API's met lage latency-eisen maar matig verkeer werken vaak goed op Standard-plannen met autoscaling.
- Dataverwerkingspipelines die op schema draaien kunnen vaak Basic-plannen gebruiken als de verwerkingstijd niet kritisch is.
- Interactieve dashboards met veel gelijktijdige gebruikers vereisen doorgaans Standard- of Premium-plannen om responsiviteit te behouden.
Autoscaling effectief gebruiken
Autoscaling is niet alleen voor verkeerspieken—het is ook een krachtig hulpmiddel voor kostenoptimalisatie:
- Schaal naar nul waar mogelijk: Voor niet-kritieke applicaties of ontwikkelomgevingen kun je overwegen om tijdens daluren terug te schalen naar nul instanties.
- Stel passende schaaldrempels in: Schaal niet te agressief uit. Begin met conservatieve drempels (zoals 70% CPU) en pas aan op basis van performance-observaties.
- Implementeer gepland schalen: Gebruik voor voorspelbare workloads geplande schaalregels in plaats van metric-based autoscaling. Schaal bijvoorbeeld op tijdens kantooruren en af tijdens avonden en weekenden.
# Example: Create a scheduled autoscale rule to scale down at night
az monitor autoscale rule create --resource-group MyResourceGroup --autoscale-name MyAutoScaleConfig --scale to 1 --condition "Current time is between 22:00 and 06:00 recurring"
Ontwikkel- en testomgevingen optimaliseren
Ontwikkel- en testomgevingen bieden grote mogelijkheden voor kostenbesparing:
- Gebruik de Free- of Shared-tier voor ontwikkelomgevingen wanneer mogelijk.
- Implementeer automatisch uitschakelen voor niet-productieomgevingen tijdens daluren. Hoewel App Service geen ingebouwde shutdown-functie heeft, kun je Azure Automation of Logic Apps gebruiken om apps volgens een schema te stoppen en te starten.
- Zet deployment-slots efficiënt in: In plaats van aparte omgevingen voor staging te onderhouden, gebruik je deployment-slots in één production App Service. Zo kun je omgevingen wisselen zonder kosten te verdubbelen.
# Create a staging slot
az webapp deployment slot create --name MyWebApp --resource-group MyResourceGroup --slot staging
# Swap staging to production
az webapp deployment slot swap --name MyWebApp --resource-group MyResourceGroup --slot staging --target-slot production
Data-specifieke kostenoptimalisaties
Voor data-applicaties kun je deze gespecialiseerde kostenbesparende aanpakken overwegen:
- Zware verwerking offloaden: In plaats van intensieve dataverwerking in je App Service uit te voeren, kun je dedicated services gebruiken zoals Azure Functions (voor serverless processing) of Azure Data Factory (voor ETL-workflows).
- Caching implementeren: Voor data die niet vaak verandert, implementeer caching om database-calls en rekenwerk te beperken. Azure Cache for Redis integreert goed met App Service.
- Databasekosten optimaliseren: Vaak kost de database die aan je App Service is gekoppeld meer dan de App Service zelf. Overweeg:
- Elastic pools gebruiken voor SQL-databases
- Passende indexering implementeren
- Gelaagde opslag gebruiken voor minder vaak geraadpleegde data
- Responses comprimeren: Voor applicaties die grote datasets aan gebruikers leveren, schakel compressie in om kosten voor uitgaand dataverkeer te verlagen:
# Example for Flask applications
from flask import Flask
from flask_compress import Compress
app = Flask(__name__)
Compress(app)
Geavanceerde technieken voor data-applicaties
Naast kostenoptimalisatie zijn er meerdere geavanceerde technieken om de performance en mogelijkheden van je data-applicaties op Azure App Service te verbeteren.
Data-applicaties containerizen
Containers zorgen voor consistentie tussen omgevingen en kunnen afhankelijkheden eenvoudiger maken—een veelvoorkomende uitdaging bij data-applicaties met complexe vereisten:
- Maak in de Azure Portal een nieuwe Web App
- Selecteer "Docker Container" in plaats van "Code" voor de publicatieoptie
- Kies Single Container en geef je Docker-image op
Voor data science-applicaties kan het nuttig zijn een basiscontainerimage te onderhouden met veelgebruikte libraries zoals NumPy, pandas en scikit-learn om deployments te versnellen.
CI/CD implementeren voor dataworkflows
Ga verder dan basis CI/CD en implementeer geautomatiseerd testen specifiek voor data-applicaties:
- Datavalidatietests: Verifieer dat dataverwerking de verwachte resultaten oplevert
- Modelperformancetests: Zorg dat ML-modellen aan nauwkeurigheids- en prestatiedrempels voldoen
- Loadtesten: Valideer dat de applicatie de verwachte datavolumes aankan
Voorbeeld van een GitHub Actions-workflow voor een data-applicatie:
name: Data App CI/CD
on:
push:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pytest pytest-cov
- name: Test with pytest
run: |
pytest tests/data_validation_tests.py
pytest tests/model_performance_tests.py
deploy:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Deploy to Azure
uses: azure/webapps-deploy@v2
with:
app-name: 'my-data-app'
publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
WebJobs gebruiken voor achtergrondverwerking
Voor data-applicaties die achtergrondverwerking nodig hebben, bieden Azure WebJobs een manier om scripts of programma's uit te voeren in dezelfde context als je App Service:
- Ga in je App Service naar "WebJobs" in de linkerzijbalk
- Klik op "Add"
- Upload je scriptbestand (bijv. een Python-script voor dataverwerking)
- Kies het triggertype (handmatig, gepland of continu)
- Klik op "OK"
WebJobs zijn vooral handig voor:
- Geplande opschoning van data
- Regelmatige rapportagegeneratie
- Periodieke modelretraining
- Datasynchronisatie tussen systemen
Hybride connectiviteit voor on-premises data
Veel organisaties hebben data die on-premises blijft. Azure App Service kan verbinding maken met deze data via:
- VNet-integratie: Verbind je App Service met een virtueel netwerk dat via ExpressRoute of VPN met je on-premises netwerk is verbonden.
- Hybrid connections: Een eenvoudiger alternatief zonder VPN, waarmee je App Service specifieke on-premises servers op hostnaam en poort kan bereiken.
Zo stel je Hybrid Connections in:
- Selecteer in je App Service "Networking" in de linkerzijbalk
- Ga naar "Hybrid Connections"
- Klik op "Add hybrid connection"
- Maak een nieuwe of gebruik een bestaande verbinding
- Geef de endpoint-hostnaam en -poort op
- Installeer de Hybrid Connection Manager op je on-premises server
Feature flags implementeren voor data-applicaties
Met feature flags kun je functionaliteit selectief inschakelen, wat waardevol is voor A/B-testen van datafeatures of het geleidelijk uitrollen van nieuwe modellen:
{
"FeatureFlags": {
"NewRecommendationModel": false,
"AdvancedDataFiltering": true
}
}
Lees deze flags in je code:
import os
import json
feature_flags = json.loads(os.environ.get('FeatureFlags', '{}'))
use_new_model = feature_flags.get('NewRecommendationModel', False)
if use_new_model:
# Use new recommendation model
else:
# Use existing model
Met deze aanpak kun je nieuwe features testen met een subset van gebruikers of snel problematische features uitschakelen zonder opnieuw te deployen.
> Wil je dieper duiken in het automatiseren van de uitrol van ML-modellen, bekijk dan deze cursus over CI/CD voor Machine Learning.
Conclusie
In deze tutorial hebben we behandeld hoe je Azure App Service voor data-applicaties instelt, deployt, configureert, schaalt en optimaliseert. Van je eerste App Service maken tot geavanceerde features zoals autoscaling en hybride connectiviteit implementeren: je hebt nu de kennis om het Azure-platform voor je dataworkloads te benutten.
Belangrijkste punten
- Azure App Service biedt een volledig beheerd platform waarmee dataprofessionals zich kunnen focussen op applicatielogica in plaats van infrastructuurbeheer.
- Meerdere deploymentopties maken naadloze integratie mogelijk met je bestaande ontwikkelworkflow, of je nu GitHub, Azure DevOps of lokale Git-repo's gebruikt.
- Schaalopties zorgen dat je applicatie uiteenlopende workloads aankan, van ontwikkeltesten tot productiepiekverkeer.
- Ingebouwde monitoring- en diagnosetools helpen betrouwbaarheid en performance te behouden, met specifieke metrics voor data-applicaties.
- Kostenoptimalisatiestrategieën stellen je in staat maximale waarde te halen met minimale uitgaven, vooral belangrijk voor resource-intensieve dataworkloads.
Volgende stappen
Wil je verder met Azure App Service, verken dan:
- Integratie met Azure ML: Deploy modellen die in Azure Machine Learning zijn getraind naar je App Service voor inference.
- Azure Functions: Voor event-driven, serverless compute die je App Service-applicaties aanvult.
- Azure API Management: Voor het beveiligen en beheren van API's die je dataservices ontsluiten.
- Azure Logic Apps: Voor workflow-automatisering tussen je App Service en andere databronnen.
- De Microsoft Azure Fundamentals-track is ook een geweldige bron als je je voorbereidt op certificering of gestructureerd wilt leren.
Onthoud dat het cloudlandschap snel evolueert, dus houd de Azure-updatespagina in de gaten voor nieuwe features en services die je data-applicaties kunnen verbeteren!

Brede technische achtergrond, waaronder machine learning, data science, kwantitatieve modellering, software engineering, DevOps en cloud computing.

Applicaties efficiënt deployen is inmiddels net zo belangrijk als ze ontwikkelen. Als dataprofessional merk ik vaak dat we veel tijd steken in het perfectioneren van onze modellen en applicaties, terwijl het deploymentproces soms als een bijzaak voelt. Daar komt Azure App Service om de hoek kijken—een platform dat het deployen vereenvoudigt en tegelijk robuuste functies biedt voor schaalbaarheid, beveiliging en monitoring.
In deze uitgebreide tutorial leid ik je door het opzetten, deployen en schalen van applicaties op Azure App Service.
Of je nu een junior dataprofessional bent die z'n eerste applicatie wil deployen of een doorgewinterde expert die je cloudinfrastructuur wil optimaliseren, deze gids biedt praktische stappen en best practices.
Wat is Azure App Service?
Azure App Service is Microsofts Platform as a Service (PaaS) waarmee je webapplicaties kunt bouwen en hosten zonder de onderliggende infrastructuur te beheren. Het is ontworpen om meerdere programmeertalen en frameworks te ondersteunen, waaronder Python, Java, Node.js, .NET en meer.
Voordat we in het installatieproces duiken, kijken we eerst wat Azure App Service extra waardevol maakt voor dataprofessionals:
Als data scientist of -engineer vraag je je misschien af hoe App Service verschilt van andere Azure-diensten zoals Azure Functions of Azure Kubernetes Service. Het belangrijkste onderscheid is dat App Service precies het midden houdt—meer flexibiliteit dan serverless-opties, maar minder complex dan containerorkestratieplatforms.
> Voor een basisoverzicht van Azure’s ecosysteem en services, bekijk deze introductiecursus over Microsoft Azure.
Azure App Service instellen
Nu we weten wat Azure App Service is, gaan we aan de slag met het opzetten van onze eerste App Service. Dit bestaat uit twee stappen: een App Service-plan maken en vervolgens een web-app binnen dat plan aanmaken.
Een Azure App Service-plan maken
Een App Service-plan definieert de compute-resources, regio en prijscategorie voor je applicaties. Zie het als de serverfarm waarop je applicaties draaien. Meerdere apps kunnen één App Service-plan delen, wat kostenbesparend is als je meerdere kleinere applicaties runt.
Zo maak je een App Service-plan:
Over die prijscategorieën gesproken, Azure App Service biedt verschillende opties:
Categorie
Functies
Beste keuze voor
Free
1GB opslag, gedeelde infrastructuur, 60 minuten/dag compute
Ontwikkeling en testen
Shared
1GB opslag, 240 minuten/dag compute
Apps met weinig verkeer, ontwikkeling
Basic
10GB opslag, dedicated VM’s, aangepaste domeinen
Productieworkloads met gemiddeld verkeer
Standard
50GB opslag, autoscaling, staging-slots
Productie-apps met hoger verkeer
Premium
250GB opslag, betere performance, meer schaalopties
Enterprise-applicaties, hoge performance-eisen
Voor data-applicaties raad ik meestal aan om in productie ten minste met Basic te starten, omdat dataverwerking vaak meer resources vraagt dan simpel webserving. Als je machinelearningmodellen serveert die veel compute nodig hebben, overweeg dan de Standard-categorie vanwege de autoscaling-mogelijkheden.
Je kunt ook een App Service-plan maken met de Azure CLI:
Een App Service-webapp maken
Zodra je een App Service-plan hebt, kun je daarbinnen een web-app aanmaken. De web-app is de daadwerkelijke applicatie-instantie die je code draait.
Volg deze stappen om een web-app te maken:
myapp.azurewebsites.net)Als je de Azure CLI gebruikt, kun je met één opdracht een web-app maken:
Na het aanmaken van je web-app zal Azure de benodigde resources inrichten. Als dat klaar is, kun je naar je nieuwe web-app gaan via "Go to resource" of door deze op te zoeken in je resource group.
Op dit moment zie je een standaardpagina wanneer je de URL van je app bezoekt (
https://your-app-name.azurewebsites.net). Dat bevestigt dat je app draait, al bevat die nog niet je eigen code—deployment behandelen we in de volgende sectie.Basisinstellingen van de app configureren
Voordat we doorgaan met deployen, stellen we eerst wat basisconfiguratie in voor onze app. Voor data-applicaties heb je vaak specifieke omgevingsvariabelen nodig voor databaseconnecties of API-sleutels.
Zo configureer je app-instellingen:
Je kunt dit ook instellen met de Azure CLI:
Deze instellingen zijn beschikbaar als omgevingsvariabelen voor je applicatie. Dat is een veilige manier om configuratie op te slaan zonder deze hard te coderen in je broncode.
Je eerste applicatie deployen
Nu onze Azure App Service-infrastructuur staat, is het tijd om onze applicatie te deployen. Azure App Service biedt meerdere deploymentmethoden, zodat je flexibiliteit hebt afhankelijk van je workflow en voorkeuren. In deze sectie behandelen we deployment via broncontrole (GitHub of Azure Repos), FTP en lokale Git-repositories.
Voor dataprofessionals is deze stap cruciaal, omdat dit de brug slaat tussen je lokale ontwikkelomgeving en een productieklare applicatie die je modellen of dataverwerkingspipelines kan serveren.
> Ben je nieuw met deploymentprincipes? Deze DevOps-cursus geeft een heldere introductie in de kernconcepten en tools.
Deployen vanuit GitHub of Azure Repos
Een van de krachtigste functies van Azure App Service is de ingebouwde continuous deployment (CD). Door je App Service te koppelen aan een GitHub- of Azure DevOps-repository kun je automatisch wijzigingen deployen zodra er code naar een specifieke branch wordt gepusht.
Deze aanpak is vooral waardevol voor datateams die samenwerken, omdat het:
> Als versiebeheer nieuw voor je is, helpt de GitHub Foundations-track je snel op weg met de basis. Je kunt ook Azure DevOps verkennen als een robuust alternatief voor het beheren van je deploymentpijplijnen en versiebeheer.
Zo stel je continuous deployment vanuit GitHub in:
Azure maakt een GitHub-workflowbestand aan in je repository dat je applicatie automatisch buildt en deployt zodra er wijzigingen naar de geselecteerde branch worden gepusht. Deze workflow gebruikt GitHub Actions om het CI/CD-proces af te handelen.
> Wil je deployments verder automatiseren? Overweeg Makefiles te combineren met GitHub Actions voor gestroomlijnde CI/CD-workflows.
Voor Python-applicaties bevat de workflow doorgaans stappen om:
requirements.txtte installerenJe kunt continuous deployment ook instellen met de Azure CLI:
Deploymentinstellingen configureren
Om je deployment te fine-tunen kun je extra instellingen configureren in het GitHub-workflowbestand of in het Azure Portal:
Voor data science-applicaties moet je mogelijk aangepaste buildstappen toevoegen die wetenschappelijke packages installeren of modeltrainingsscripts draaien. Deze kun je direct toevoegen aan het workflowbestand in je repository.
Deployen met FTP of lokale Git
Hoewel continuous deployment via GitHub of Azure Repos wordt aanbevolen voor teams, heb je soms directere deploymentmethoden nodig. Azure App Service ondersteunt in die gevallen zowel FTP als lokale Git.
FTP-deployment
FTP-deployment is een eenvoudige manier om je applicatiebestanden rechtstreeks naar Azure App Service te uploaden. Deze methode is handig voor snelle updates of wanneer je werkt met applicaties die geen complex buildproces vereisen.
Zo deploy je via FTP:
/site/wwwroot/Zorg er bij Python-applicaties voor dat je
requirements.txt-bestand is meegeüpload. Azure App Service installeert de vereiste packages automatisch.Lokale Git-deployment
Met lokale Git-deployment kun je code vanuit je lokale Git-repository direct naar Azure pushen. Deze methode geeft je meer controle over het deploymentproces, terwijl je toch de versiebeheermogelijkheden van Git benut.
Zo stel je lokale Git-deployment in:
Wanneer je code naar de Azure-remote pusht, zal het platform je applicatie automatisch builden en deployen.
Deploymentstatus monitoren
Ongeacht de gekozen deploymentmethode is het belangrijk om het deploymentproces te monitoren om problemen vroegtijdig te signaleren. Azure biedt verschillende manieren om de deploymentstatus te volgen:
Als een deployment faalt, geven de logs informatie over wat er misging. Veelvoorkomende oorzaken zijn:
requirements.txtZo los je deploymentproblemen op:
requirements.txtstaanBij data science-applicaties ontstaan deploymentfouten vaak door grote package-installaties of geheugenintensieve operaties tijdens het opstarten. Als je hiermee te maken krijgt, overweeg dan om: