Choosing an Azure Virtual Machine

DZone 's Guide to

Choosing an Azure Virtual Machine

Want to make sure you pick the right Azure VM for the right Azure job? Check out this guide that walks through types, pricing, and making your decision.

· Cloud Zone ·
Free Resource

Microsoft provides a massive range of Azure Virtual Machines for you to choose from, giving you the ability to develop, test, run applications and extend your data center fast.

But which one is right for you? Migrating to the cloud can be daunting, especially with hundreds of VM options to choose from. Virtual machines on Azure are categorized into types, families, and sizes – the options can feel overwhelming.

Virtual Machine Types

Every VM type is built to run a specific workload. The GPU type VM is designed for heavy graphics rendering and video editing workloads, whereas the High Performance Compute VM has the fastest, most powerful CPU, making it ideal to run intensive Big Data applications.

Microsoft currently offers six virtual machine types:

  • General Purpose – Balanced CPU-to-memory ratio
  • Compute Optimized – High CPU-to-memory ratio
  • Memory Optimized – High memory-to-CPU ratio
  • Storage Optimized – High disk throughput and IO
  • GPU – Specialised virtual machines for heavy graphics rendering and video editing
  • High Performance Compute – Fastest, most powerful CPU with optional high-throughput network interfaces (RDMA)

When choosing the right type of VM, match your current workload against the type of VM designed to run it. If you’re in a testing or development phase, run low traffic web servers or host a small database, you might consider choosing the General Purpose VM type.

Alternatively, if you’re deploying a memory-intensive relational database or in-memory analytics, the Memory Optimized VM type is your best option.

If you can’t find a VM to suit your workload, browse the Azure Marketplace. This Microsoft-supported marketplace hosts a number of niche virtual machine images which have been produced by approved third-parties.

Images sold on the Azure Marketplace are put through a vetting process — every VM Is still running Azure, but these images have been created by a third party to fulfill a need not provided by the stock Azure VMs.

Virtual Machine Sizes and Families

Every VM type is available in a varying number of families and sizes, identified by a letter and number, e.g. A0, D2s_v3 or B1.

Every size has a varying number of CPUs, memory and each support different numbers of disks. Plus, some will use HDD disks, others SSD disks.

There’s a large range of VM sizes and families to choose from once you’ve set your eye on the right type for your needs. If you’re not sure what to go for, there are a number of calculators available to give you an idea of what you might need.

Moving a SQL DB to Azure? Use the Azure SQL Database DTU Calculator to give you an idea of the size of the Azure SQL DB you’ll need in the cloud.

Microsoft has created an Azure (Iaas) Cost Estimator Tool designed to run on-premise against your existing machines. With the tool, you’ll get an idea of what you’ll need when you do migrate to Azure.

Your best bet for accuracy is the Azure Pricing calculator. Enter your figures to find out how many VMs – and what sizes – you’ll need to run your current workloads in Azure.

Here’s a tip: look at ACU numbers. Microsoft has introduced the concept of Azure Compute Units (ACUs) to give you an at-a-glance view of the compute performance across VMs. More on ACUs can be found here.

Microsoft has also introduced VM sizes for specialized workloads: NC and NV sizes. These sizes are GPU-enabled instances that use NVIDIA’s GPU cards. This is ideal if your workload requires remote virtualization, streaming, gaming, encoding and VDI scenarios.

The most recent introduction is the B-Series Burstable, which is currently available to preview. This B series VM family gives a base level of performance with the ability to burst CPU performance up to 100%.

This series is ideal for workloads that don’t require the full performance of the CPU all the time. They’re ideal if you run a web server that is often idle but very busy for part of the day. During idle periods, B series VMs build up ‘credit’ – this credit is then used during busy periods when you need to provide more compute power. The VM is designed to be cost-effective while also giving performance when it’s required.

For a closer look at every VM size, take a look at Microsoft’s documentation.

Choosing your VM Size and family

When choosing your VM size and family, it’s economical to start small and grow big. It’s possible to start off with a small and inexpensive VM and then change the size and type to something more powerful as your needs increase.

Start small and use only what you need. You’ll save money without limiting your performance in the future. Upgrading or downgrading your VM can be done entirely through the Azure console.

Virtual Machine Pricing

Prices can range from £11.09-per-month for an A0 VM (used mainly to trial or experiment with Azure) to £3330.39-per-month for an NV24 VM (the most-powerful available, used for Big Data and advanced graphics rendering). Azure prices can vary across regions and the prices listed above are estimates based on the UK South region.

Azure VMs are priced for usage by the hour or minute, so you’ll be able to save money by bringing them online only when and then taking them offline when they’re not in use.

Where to More About Azure VMs

Microsoft’s host a wide range of Azure certifications, and for many IT pros these are an excellent way to build and prove knowledge of Virtual Machines on Azure. Consider studying for the Implementing Microsoft Azure Infrastructure Solutions certification.

For online learning, take a look at the Microsoft Virtual Academy. You’ll find tonnes of high quality, free video courses on cloud development and a good number of courses built specifically around deploying VMs into the cloud.

cloud, microsoft azure, virtual machines

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}