Welcome to the first lesson in our module on Azure Compute Services. In the previous module, we laid the critical networking foundation for your cloud environment. Now, it's time to build upon that foundation by provisioning the workloads themselves. This is where we transition from the "highways" of the cloud to the "destinations" that run your applications.
This lesson focuses on the most fundamental compute building block: the virtual machine. Our goal is to compare Azure VM families and select the appropriate size and type for specific workload requirements. For someone with your background in AWS, this is analogous to choosing the right EC2 instance type. While the core concepts of resource specialization are similar, you'll find that Azure has its own distinct philosophy, naming conventions, and set of trade-offs. We will develop a systematic framework for navigating these options, moving beyond a simple catalog of services to an architectural approach for making informed decisions.
The Core Principle: Sizing by Bottleneck
Before diving into the dizzying array of VM families and sizes, it's essential to establish a guiding principle. As you know from your system design experience, choosing a server is not about maximizing every possible metric; it's about identifying and addressing the most likely performance bottleneck for a given workload. An effective architect doesn't ask "Which VM is fastest?" but rather, "What resource will my application exhaust first under load?"
Is the workload:
- CPU-bound? (e.g., batch processing, application logic)
- Memory-bound? (e.g., in-memory databases, caches)
- IOPS/Throughput-bound? (e.g., transactional databases, data warehouses)
- Network-bound? (e.g., network virtual appliances, high-traffic web servers)
This "bottleneck-first" thinking is the most effective way to navigate the Azure VM portfolio.
To frame this idea, John Savill provides a great analogy in his video "Azure VM Size Overview." He likens VM families to different fits of T-shirts (regular, athletic, relaxed).
Watch the first minute of the video, up to the T-shirt analogy. This will help conceptualize why a one-size-fits-all approach is inefficient and why specialized families exist.
Decoding Azure VM Naming Conventions
Azure's VM names, like Standard_D8s_v5, can seem cryptic, but they are packed with information. Understanding this convention is the first step to quickly assessing a VM's capabilities.
Azure VM Sizes & Pricing: A 2025 Guide for Engineering Teams
The article "Azure VM Sizes & Pricing" offers a clear breakdown of this naming scheme.
First, read the introductory section What Are Azure VM Sizes?. Then, focus on the section The Anatomy of an Azure VM Name. This will equip you to parse any VM name you encounter in the Azure portal or documentation.
As you read, note the key components:
- Family Letter: (e.g., D for General Purpose)
- Number of vCPUs: (e.g., 8)
- Suffixes (Additive Features): (e.g., s for Premium Storage support, a for AMD processor, p for Arm processor)
- Version: (e.g., v5 indicating the 5th hardware generation)
A Tour of the Major VM Families
With the naming convention demystified, let's explore the primary VM families. We'll group them by their optimization focus, comparing their intended use cases and trade-offs. The following Microsoft Mechanics video gives a great, fast-paced official overview.
How to choose the right Virtual Machine on Azure
This video, "How to choose the right Virtual Machine on Azure," efficiently walks through the main families.
Watch the following segments to get a quick tour of each major category: B-series (Burstable): This section covers VMs for spiky workloads. D-series (General Purpose): This part explains the workhorse VMs. E-series (Memory Optimized): Here the focus shifts to memory-intensive apps. F-series (Compute Optimized): This segment is about CPU-bound tasks. L-series (Storage Optimized): Here they discuss I/O-intensive workloads. M-series (Largest Memory): This part introduces VMs for massive in-memory databases. H-series (HPC): This section touches on specialized scientific computing. N-series (GPU): Finally, this covers VMs for AI and visualization.
Now, let's deepen that understanding with more detail on the architectural considerations for each family. The article "Azure VM Tiers" provides an excellent, bottleneck-centric perspective.
Azure VM Tiers | Best Sizes for Cost and Performance - Go Cloud
This article shifts the focus from a catalog of features to a decision-making process based on workload patterns.
Read the section How To Choose by Workload Pattern to see how specific application types map to VM families. Then, review the summary Azure VM Sizes And Families That Matter Most. Finally, pay close attention to the section Burstable Vs. Sustained Performance, as understanding the B-series trade-offs is crucial for cost optimization.
Conceptual Mapping from AWS to Azure
To help bridge your existing knowledge, the table below provides a high-level mapping between common AWS and Azure instance types. This is not a direct 1:1 translation, as CPU/memory ratios and features differ, but it serves as a useful conceptual starting point.

A Decision Framework for VM Selection
Choosing a VM family is only the first step. Selecting the right size within that family requires a more structured process. For a Principal Engineer, having a defensible methodology is more important than memorizing every SKU.
The following framework combines the insights from our resources into a repeatable process:
Step 1: Define the Workload Profile and Identify the Primary Bottleneck
Is it a steady-state database (likely memory or I/O), a spiky web front-end (candidate for B-series), or a CPU-intensive data processing job (F-series)?
Step 2: Make an Initial Family and Size Selection
Based on the profile, choose a family. Start with a reasonable size (e.g., a Dsv5 for a general-purpose app) as a baseline. Check that your chosen family and size are available in your target Azure region.
Step 3: Size the Entire Performance Path
This is a critical step often missed. A VM has independent performance caps for its CPU, memory, storage, and networking. For example, attaching an Ultra Disk capable of 160,000 IOPS to a VM capped at 80,000 IOPS results in wasted spending. You must size the VM, its managed disks, and its network configuration as a single, cohesive unit. The article "Azure VM Tiers" highlights this well in its discussion on VM-level storage caps.
Step 4: Evaluate Cost vs. Performance Levers
Consider these factors:
- Hardware Generation (v3, v4, v5, etc.): Newer generations often provide better performance at a lower or similar cost.
- Processor Choice (Intel, AMD, Arm): AMD-based VMs (suffix 'a') can sometimes offer better price-performance for certain workloads.
- Constrained vCPUs: For software licensed per core (like some databases), you can choose a VM size with a large memory footprint but a reduced vCPU count to save on licensing costs. The Microsoft Mechanics video touched on this at
this point .
Step 5: Measure, Adjust, and Continuously Right-Size
Initial sizing is a hypothesis. After deployment, use Azure Monitor and Application Insights to gather real-world telemetry on CPU, memory, and I/O utilization. Use tools like Azure Advisor for recommendations, but validate them against your application's performance needs and business cycles.
Azure VM Sizes & Pricing: A 2025 Guide for Engineering Teams
The "Azure VM Sizes & Pricing" guide provides an excellent summary of this framework and common recommendations.
Read the section A Decision Framework to see these steps in action. Then, review the quick reference table under Azure VM Family Recommendations by Workload to solidify the mappings.
Conclusion
In this lesson, we established a robust methodology for navigating Azure's extensive compute portfolio. You are now equipped to move beyond simple "lift-and-shift" choices and make architecturally sound decisions when selecting virtual machines.
Here are the key takeaways:
- Adopt a Bottleneck-First Approach: Frame your selection around what resource your workload will stress the most: CPU, memory, storage I/O, or network.
- Master the Naming Convention: The VM name is a dense code that reveals its family, vCPU count, special features (like Premium Storage), and hardware generation.
- Know the Core Families:
- General Purpose (D, B): D-series is the default; B-series is for burstable, non-critical workloads.
- Compute Optimized (F): For high CPU-to-memory needs.
- Memory Optimized (E, M): For large databases, caches, and in-memory analytics.
- Storage Optimized (L): For high-throughput, low-latency local disk access (NVMe).
- Specialized (N, H): For GPU-accelerated AI/visualization and high-performance computing.
- Think Holistically: A VM's performance is capped by its own limits on storage and networking, not just by the attached resources. Size the entire path together.
You've now learned how to select an individual VM. The next logical question is: how do you manage a group of them to handle variable demand? In our next lesson, we will explore exactly that, covering Virtual Machine Scale Sets and designing autoscaling strategies for your applications.