One of the key services offered by large cloud service providers such as Amazon Web Services is access to virtual machines (VMs), also called images, that behave similar to a physical computer. VMs offer a great way to automate repetitive tasks, test new software, host web applications, and reduce overall hardware ownership costs.
What is a VM?
Most simply put, a virtual machine is a computer within a computer that can be accessed through a window just like any other application. They contain the same components that you would find in a physical machine: a hard drive for storage, CPUs and memory for compute, and networking to connect to the internet.
Accessing a virtual machine, once it’s created, is a lot like connecting to any other website or application. In the figure below, our user remotely connects to the virtual machine (guest image) through his or her local machine. This can be done through any of a number of native or open source applications, and the connection method depends on the operating system of the VM.
A quick note on connecting—because virtual machines are accessed via the Internet, ensure you have an internet connection as well as the proper credentials to access the image.
What’s a VM look like?
To illustrate this using a real-world example, the screenshot below shows my local desktop connecting to a virtual machine in a Remote Desktop session. The virtual machine I’m connected to is a Windows image hosted by AWS, and has 16GB of RAM, which is more than enough to run my set of data loading scripts. I connect directly to the IP of the instance and am able to maneuver within the window just like my normal desktop.
What are some of the key benefits of using VMs?
There is a lot of upside when using virtual machines in your environment, but I want to highlight a few of the ones I think are the most beneficial:
Only pay for what you use
Most cloud service providers offer two models: on-demand and reserved pricing. On-demand pricing is consumption based, so you only pay for the time that you use the machine. For example, the Windows VM in the screenshot above costs roughly $0.04 per hour, or less than $1 per day if I were to run it nonstop. But because I only need it for an hour a day, my total cost of running the machine is $1.20 per month.
Reserved pricing on the other hand is intended for virtual machines that you know will be on 24/7, or close to it. By reserving an instance for 12 months, you can typically lock in a significant discount. Most providers offer a handy calculator to help you determine which pricing model is best for you.
Easily customize features
Components of VMs (e.g. GB of RAM) can be viewed as modular—they easily scale up and down depending on your needs. Let’s say you want to run a server software program like QlikView Server or Tableau Server in virtual instance and you start with 100GB of storage. As your organization grows, and your need for more storage grows along with it, you can add more with a few simple clicks. No new hardware or complex technical architecture changes required.
Remove the need for maintaining on-premise servers
You may have passed that restricted access room in your hallway that puts off a significant amount of heat and emanates that constant hum from underneath the door. That’s your on-premise server room, and it houses physical servers much like the ones services like AWS use to run VMs. In an environment where you are leveraging VMs however, those servers can effectively go away, ensuring that your applications and computers are running on updated and secure hardware, and reducing the cost to maintain on-premise machines.
Using virtual machines allows your IT team a level of centralized control and standardization that is more challenging to manage on a network of local machines. They can define the security protocols for the environment (e.g. which security software to use) and apply changes across all VMs all at once. Individual VMs or applications can be isolated, so in the instance of a security event, your team can address the issue directly so the vulnerability doesn’t affect other workloads in the network.