
Azure gives you more than a dozen ways to run your code, store your data, and connect your services. Picking the wrong one does not break anything immediately. It just costs more, scales worse, and becomes painful to maintain six months later.
This guide maps the most common Azure services to their actual use cases. No marketing language. Just clear guidance on when to use each one and when to pick something else.
Compute: Where Your Code Runs
| Service | Best For | Skip It When | Pricing Model |
|---|---|---|---|
| Virtual Machines | Full OS control, legacy apps, custom software | You don't need OS access | Per-second billing, from ~$0.008/hr |
| App Service | Web apps, APIs, simple containers | You need GPU or custom networking | Tiered plans from free to premium |
| Azure Functions | Event-driven, short-lived tasks | Tasks run longer than 10 min | Per-execution plus duration |
| Container Apps | Microservices, scale-to-zero containers | You need full Kubernetes control | Per-second vCPU plus memory |
| AKS | Complex container orchestration | Your team can't operate Kubernetes | Node VM costs plus management overhead |
When You Need Full Control: Virtual Machines
VMs give you a complete operating system. You manage updates, security patches, and configuration. This is the right choice when:
- You're running software that requires a specific OS, like Windows Server with IIS, a custom Linux distro, or GPU workloads
- You're migrating a legacy application that can't be containerized without significant rework
- You need persistent background processes that don't fit the serverless execution model
The trade-off: you manage everything. OS patches, disk management, scaling, and availability are all on you.
When You Want Managed Infrastructure: App Service
App Service handles the infrastructure so you focus on code. Deploy a .NET, Node.js, Python, or Java app and Azure manages the OS, scaling, and SSL.
- Best for web applications and REST APIs that need predictable scaling
- Built-in deployment slots for zero-downtime releases
- Custom domain and SSL included at no extra cost on paid tiers
The free tier is genuinely useful for prototyping. The paid tiers start at ~$13/month for production workloads.
When You Want Pay-Per-Use: Azure Functions
Functions run your code only when triggered, whether by an HTTP request, a queue message, a timer, or a database change. You pay per execution (first 1 million per month free) plus compute duration.
- Ideal for event-driven workloads, such as processing uploaded files, responding to webhooks, or running scheduled jobs
- Maximum execution time: 10 minutes (Consumption plan) or 60 minutes (Premium)
- Cold start latency of 1 to 3 seconds on the Consumption plan, so use Premium if latency matters
For a deeper comparison with AWS Lambda, read our serverless API guide.
When You Want Containers Without Kubernetes: Container Apps
Container Apps sits between App Service and AKS. You deploy containers, Azure handles the orchestration. It scales to zero (no cost when idle) and supports Dapr for microservice communication.
- Best for microservices that need independent scaling
- Scale-to-zero saves money for low-traffic services
- KEDA-based autoscaling responds to queue depth, HTTP traffic, or custom metrics
- No Kubernetes knowledge required, because Azure abstracts the cluster
Storage: Where Your Data Lives
| Service | Best For | Skip It When | Pricing |
|---|---|---|---|
| Blob Storage | Files, images, backups, static sites | You need relational queries | ~$0.018/GB/month (Hot) |
| Azure Files | Shared file systems, SMB/NFS | You only need object storage | ~$0.06/GB/month |
| Queue Storage | Simple message queuing | You need advanced routing | ~$0.004/10K operations |
| Table Storage | Key-value data at scale | You need complex queries | ~$0.045/GB/month |
| Cosmos DB | Global distribution, multi-model | Your data fits in a single region | From ~$0.008/RU/hr |
Blob Storage: The Default Choice
If you're not sure which storage service to use, start with Blob Storage. It handles files, images, backups, static website hosting, and data lake storage.
The four access tiers control cost versus retrieval speed:
- Hot (~$0.018/GB): frequently accessed data
- Cool (~$0.01/GB): infrequent access, 30-day minimum
- Cold (~$0.0036/GB): rare access, 90-day minimum
- Archive (~$0.00099/GB): compliance and backup, 180-day minimum, hours to retrieve
Networking: How Services Connect
| Service | Best For | Skip It When |
|---|---|---|
| VNet | Resource isolation, subnets, NSGs | You only use PaaS with public endpoints |
| Load Balancer | L4 traffic distribution | You need URL-based routing (use App Gateway) |
| Application Gateway | L7 routing, WAF, SSL termination | Simple TCP load balancing is enough |
| VPN Gateway | Site-to-site or point-to-site VPN | You need dedicated bandwidth (use ExpressRoute) |
| Azure Bastion | Secure VM access without public IPs | You're comfortable with VPN plus NSG rules |
Start with VNets and NSGs
Even if you don't think you need networking, learn VNets and NSGs early. Every production deployment requires network isolation, and retrofitting networking into an existing architecture is painful.
Security: What Protects Everything
| Service | Purpose |
|---|---|
| Key Vault | Store secrets, keys, and certificates |
| Microsoft Sentinel | SIEM, to detect and investigate threats |
| Defender for Cloud | Security posture management plus recommendations |
| NSGs | Network-level firewall rules |
| Azure Bastion | Secure RDP/SSH without public IPs |
For a full security lab path, read 5 Azure Security Labs Every SC-200 Candidate Should Complete.
How to Pick the Right Service
When you're stuck choosing between two services, ask these three questions:
- Do I need to manage the OS? No, use App Service or Functions. Yes, use VMs.
- Is the workload event-driven or always-on? Event-driven, use Functions. Always-on, use App Service or Container Apps.
- Does my team know Kubernetes? No, use Container Apps. Yes, AKS is an option, but still consider Container Apps first.
The right answer is usually the simplest option that meets your requirements. You can always migrate up the complexity ladder later. Migrating down is harder.
Test Your Knowledge
If you're preparing for AZ-104, service selection questions make up a significant portion of the compute and networking domains. Practice exams with domain-level scoring will show you exactly which service categories need more study:
For a complete study plan, read How to Use Practice Exams to Pass AZ-104 on Your First Try.
Ready to Master Cloud Engineering?
Get access to hands-on labs, expert-led courses, and a supportive community.
Practice it hands-on
Labs where you can apply what this article covers, in a real environment.
Implement Network Security Groups (NSGs) and Application Security Groups (ASGs) in Azure
Secure Azure VMs using Network Security Groups and Application Security Groups. Create rules, control traffic flow, and implement least privilege access.
cloudlearn.ioStart labManaging Azure Blob Storage Operations with Azure CLI
Learn how to perform essential Azure Blob Storage operations using Azure CLI commands. Practice uploading, downloading, listing, and deleting blobs with batch operations.
cloudlearn.ioStart labCreating a Web App on Azure App Service using Azure Portal
Learn how to create, configure, and deploy a web application using Azure App Service through the Azure Portal's interface.
cloudlearn.ioStart lab










