Microsoft Azure: virtual machines for the confused
Virtualization is a pillar of cloud computing, but one that can leave many business owners scratching their heads.
If the idea that a computer isn’t real (but sort of is) sounds a bit space age to you, you’re not alone. But virtual machines (VMs) aren’t just for the techies among us—they’re a massively useful tool for businesses looking for a cost-effective way to boost their computing power.
Let’s break down what virtual machines are, what they do, and what kind of virtual machines are available on the world’s most popular commercial cloud: Microsoft Azure.
What is a virtual machine?
A virtual machine is a computer file that runs on a server and replicates a computer environment. A virtual machine isn’t tangible but can be used to run software and processes just like a real machine.
You can run multiple virtual machines on the same physical server without them affecting one another or the real computer they’re running on; a virtual machine is isolated from the rest of the system, so that anything you do there doesn’t leave that environment.
Their sequestered nature makes them an ideal sandbox environment to safely test things like beta releases, access virus-infected data, build system backups, and run applications on operating systems they may not be naturally compatible with, without the risk of damage to the wider system.
Every VM has its own virtual hardware, like CPUs, memory, hard drives, and network interfaces. You don’t need any particular hardware to run virtual machines, but you do need to have more bandwidth and processing power than if you were running a standard computer.
That’s why most people who use virtual machines do so via a cloud service provider like Microsoft Azure, Amazon Web Services, or Google Cloud. Using virtual machines as a service means that you get all the computing clout of these providers, as your virtual machines will be based on their powerful servers and the physical environment managed at their end.
Virtual machine glossary
Virtualization is simply the act of creating a virtual version of something that’s usually physical. This usually refers to hardware platforms, storage, and networks.
The host is the physical computing environment that powers a virtual machine: the real-world server that provides the resource which allows the virtual instance to operate.
System virtual machine
This type of virtual machine apes a complete computer, including all its components and processes. You can run multiple virtual machines, with multiple operating systems, on a single server.
Process virtual machine
This type is used to run a single application or process. A process virtual machine only exists when the application is running. PVMs are primarily used to operate a piece of software that’s not compatible with the underlying operating system, so must be isolated within a virtual machine.
Also known as a virtual machine manager, the hypervisor is the operating system that a virtual machine runs on. It is the middleman between the physical computer (the host) and any virtual machines (or guests) that operate on it. The hypervisor provides a barrier, preventing the virtual machines from affecting the host, or any other guest machines.
While operating systems are usually designed to have a one-on-one relationship with the hardware they’re running on, a hypervisor allows multiple “computers” to share the same physical platform. Hypervisors manage all virtual hardware—such as the CPU, memory, hard drive, and network interface—enabling them to support multiple virtual machines simultaneously.
There are two types of hypervisors. Type 1, often called a native or bare-metal hypervisor, runs directly on top of the physical host. Virtual machines then sit on top of the hypervisor.
Type 2, sometimes referred to as a hosted hypervisor, sits on an operating system, adding another layer between the hypervisor and the physical hardware.
Containers are a different kind of virtualization that are often touted as alternatives to using virtual machines.
A container is a lightweight, standardized digital vessel in which you can store everything you need to run a piece of software. Placing code, configurations, and dependencies into a container means that you can run that software anywhere, and because it’s “boxed up,” the software is easy to move between environments.
Often, when you transfer software from one place to another, you can’t be sure it’ll run reliably. It can be like trying to put a puzzle piece into a hole that it wasn’t designed to fit into. But by putting a program into a container and running it from there, you can be sure that your application is going to “fit” anywhere you put it, making deployments quick, reliable, and consistent no matter what environment you’re using.
Think of it like zipping up files, except a container zips up code and settings into a uniform box that fits anywhere. If you’re moving a program from your developer’s computer to a sandbox, from a staging environment to a live production, or from a physical machine to a private or public cloud, using a container will make sure that that program will work the same way wherever you put it.
The main difference between a container and a virtual machine is that a virtual machine packages up the operating system along with the code. Containers tend to be smaller, so you can fit more containers than virtual machines onto a single server.
More Microsoft talent than anyone else
Take a look at our database of pre-screened Azure professionals and take the first step toward landing the best administrators, developers, and consultants in the market.
What can you do with a virtual machine?
So, you know what virtual machines are, but the question remains: what do they do? Why would you want or need a virtual computer?
Virtual machines have a range of practical uses; here are just a few.
Run incompatible software
If you want to use software that isn’t compatible with your operating system, you can run it on a virtual machine instead. Say you have a Linux OS, but you want to use a program that doesn’t have a Linux version. You can deploy that software within a virtual machine that’s “running” the necessary OS.
Execute “controlled explosions”
Since a virtual machine is isolated from the hardware it runs on and other virtual machines on the same server, you can (to a degree) throw caution to the wind when it comes to security and do things that may otherwise threaten the safety of your system.
This makes a virtual machine an ideal environment to test out potentially malicious files or software. If you want to open suspicious attachments or run viruses to see what effect they have, for example, you can do that within the virtual machine without it “leaking” into your wider system. A word of warning, though: some new malware can detect that it’s running within a virtualized environment, and may attempt to infect the host operating system, so always take care when executing potentially infected files.
Test out new operating systems
If you want to switch up your operating system, you can dip a toe in by using a virtual machine, without having to implement the system on actual hardware.
With a virtual machine, you can run a number of operating systems on a single computer. The virtual machine acts as a sandbox, so you can see exactly how the operating system would work in practice. And if anything goes haywire, it won’t affect the host computer, which can maintain its original operating system and be totally untouched by the one running on the virtual machine.
Many people use virtual machines to capture and collect system backups, which can be restored instantly should something go wrong with your “actual” system.
If you want to unleash a new piece of software into your environment, or perhaps test out some configuration changes, you’ll want to have a backup in place in case you need to undo what you’ve done.
Virtual machine snapshots pack more in than standard system restores, and since virtual machines exist as single files, they can be saved and transferred from one place to another. This is a super useful thing to be able to do if you want to restore your system on another computer, or even create cloned copies of the same environment for testing purposes.
Virtual machine files can be dragged, dropped, and loaded anywhere without issue, providing you’re using the same virtualization software on the hardware you’re running it on.
Using virtual machines can also help make software development more efficient. Virtualization puts a range of devices, operating systems, and browsers at a user’s fingertips, giving them easy access to multiple, different environments where software can be run and tested quickly and without risk.
Cutting down on hardware costs
Virtual machines help cut overheads by making better use of the hardware you have. If you use virtual machines to emulate additional computers, you can consolidate your workloads onto fewer physical machines. Fewer machines mean less is spent on buying new hardware, maintaining the devices you have, and running costs like electricity.
That said, running several virtual machines on a single computer obviously requires a lot of processing power; even virtual computers need juice. Trying to run several VMs on hardware that’s not up to the task can cause your VMs to become slow and unstable. If you want to make the most of what VMs offer, you need some horsepower behind you. This is where Microsoft Azure comes in.
Virtual machines on Azure
Microsoft Azure, the tech giant’s expansive cloud service, offers a range of options when it comes to virtualization.
With options for Linux, Windows Server, SQL Server, Oracle, IBM, and SAP users, Azure Virtual Machines are available on a pay as you go basis, with sizes and performances levels to suit varying business needs. Customers can build their own VMs or choose from a selection of pre-configured templates.
What types of virtual machines are offered on Azure?
Azure has hundreds of virtual machine options to choose from, with VMs tailored for particular geographical regions, core, RAM, and storage requirements, on both Windows and Linux operating systems. There are far too many options to list here, but let’s take a look at the categories these VMs fall into, and what each type is typically used for.
Azure’s general-purpose VMs are a good option for businesses who are making their first forays into virtualization before they’ve mapped out exactly what they’ll be used for. These VMs have a balanced CPU-to-memory ratio and are best suited to testing and development, hosting and managing small to medium databases, and for low traffic web servers.
Available types: B-series, Av2 Standard, D2-64 v3, D2s-64s v3, D1-5 v2, DS1-S5 v2, DC-series
These VMs have a high CPU-to-memory ratio, and are intended to manage compute-intensive workloads. Compute-optimized VMs are ideal for medium traffic web servers, batch processing, web servers, analytics, and gaming.
Available types: Fsv2-series, F-series, Fs-Series
With a high memory-to-core ratio, Azure’s memory optimized VMs are designed to run relational database servers, medium to large caches, in-memory analytics, and are the best option for memory-intensive enterprise applications. The G-series, in particular, is built to provide high-performance computing for large database workloads like those found in SAP HANA, SQL Server, Hadoop, DataZen, and Hortonworks.
Available types: E2-64 v3, E2s-64s v3, D11-15 v2, DS11-S15 v2, G-series
These high disk throughput and input/output VMs are perfect for Big Data, SQL, and NoSQL databases.
Available types: Lsv2-series, L-series
Azure’s GPU VMs are highly specialized to support heavy graphics rendering and video editing. These VMs are your best bet if you need to run graphics-intensive workloads, remote visualization, deep learning, or predictive analytics.
Available types: NC-series, NCv2 series, NCv3 series, NV-series, NVv2-series, ND-series, NDv2 Series
High performance compute
These VMs are the fastest and most powerful available on Azure, built to handle intense predictive scenarios like financial risk modeling and scientific simulations like weather and molecular modeling.
Available types: H-series, Hb-series, Hc-series
Azure virtual machine pricing
Virtual machine pricing on Azure isn’t exactly straightforward. With hundreds of virtual machines available, all with different price points, it’s impossible to say how much it might cost offhand.
Azure virtual machines are priced per second, and can be used in one of two ways: either on a pay as you go basis, or on a reserved basis. Prices start from around $0.0165 per hour, and the rate you pay for each virtual machine depends on a number of factors:
- Which VM instance you choose—the more powerful they are, the more they cost
- Whether you pay as you go or reserve an instance in advance, and how long for
- Where in the world you’re based (prices vary slightly by region)
Pay as you go
With the pay as you go option, you pay for the virtual machine capacity you’re using by the second. There’s no long term commitment or upfront costs involved, and you can stop, start, increase or decrease the capacity you’re using whenever you need to. This option is best for users for whom low cost and flexibility is a priority.
Reserved Virtual Machine Instances
For those able to spend a little more upfront, Azure virtual machines can be reserved in advance. If users financially commit to an Azure Reserved Virtual Machine Instance for one or three years, they can save up to 72 percent on pay as you go pricing. Despite the commitment, Reserved Virtual Machine Instances are still pretty flexible, and can be exchanged or returned if they turn out to be unsuitable.
Looking for top Azure talent? We make it easy.
Tell us what you’re looking for and we’ll put together a job spec that’ll attract professionals with the skills and experience you need.