In this blog, Rockborne Consultant Mohammed Eldosoky talks us through everything you need to know about Virtual Machines.
An area of the Rockborne training program that really caught my attention was the introduction and explanation of Virtual Machines (VMs). The topic captured my interest through hearing about it previously, additionally, I wanted to know more about the inner workings and how it is applied within the industry. Furthermore, I was also intrigued as to how VMs are spun up and then programmes can be run on them, as I am very interested in Machine Learning and its applications within Data and Analytics. Therefore, I have written a brief overview of my understanding thus far, with the hope of developing my knowledge within this area further.
What is a Virtual Machine?
A virtual machine, or more commonly known as a VM is no different to any other physical computer, laptop, smartphone, or server. They have a CPU, RAM and hard disks in which files can be stored, they can also be connected to the internet if needed. While parts of your computer – called hardware – are physical and tangible, VMs are often thought of as virtual computers or software-defined computers within physical servers, existing only as code. A more detailed breakdown of the components that make up a virtual machine are displayed in the visualisation HERE
The process of creating a software-based or “virtual” version of a computer is what is known as virtualisation. These virtual computers have dedicated amounts of CPU, Memory and storage that are “borrowed” from a physical host computer, such as my individual work laptop and/or a remote server – a sever within cloud providers’ remote data centre. A virtual machine can run in a separate computing environment, more often to run on a different operating system such as Linux. The virtual machine is partitioned from the rest of the system, which means that the software within the VM cannot interfere with the host’s computer’s primary operating system. This independent environment is one of the alluring aspects of virtual machines, as this allows you to run models and simulations out with the operating system on your host computer, especially if the model is hardware intensive, it can free up memory and storage for other imminent use.
There are three main providers of cloud-based platforms on which these virtual machines can be created:
- Amazon Web Services (AWS)
- Microsoft Azure (MS Azure)
- Google Cloud Platform (GCP)
These cloud-based platforms allow users to essentially borrow virtual hardware from their remote servers to perform hardware intensive tasks. Below are some of the ways virtual machines are used:
- Building and deploying apps to the cloud
- Testing out a new operating system (OS), which can include beta releases.
- Spinning up new environments to make it simpler and quicker for developers to run dev-testing.
- Running intensive ML algorithms
- Running multiple environments independently for further analysis later
- Can be stored in different remote data centres to avoid loss of information due to potential data centre damage.
What are the benefits of utilising VMs?
Although they run like traditional individual computers with individual operating systems and applications, they have a distinct advantage of remaining completely independent of one another and the physical host machine. Software such as PuTTy and GitBash allows you to run different operating systems on virtual machines simultaneously. This makes it possible to run Linux VMs, which is the way I was introduced to the concept and trained in at Rockborne. Furthermore, VMs are independent of each other which makes them very portable and can be accessed anywhere. As your virtual hardware requirements increase (RAM, CPUs, and Disk Space) the monthly subscription price will also increase, therefore the requirements for a project you want to run must be clearly defined beforehand, such that you are not wasting time and money in the wrong area.
The main advantage of these VMs is:
Cost Savings: Running multiple virtual environments from one piece of infrastructure means that you can drastically reduce your physical infrastructure footprint, in turn reducing your bottom line.
Agility and Speed: Spinning up a VM is relatively easy and quick and is much simpler than provisioning an entire new environment for developers to get used to and work on.
Scalability: VMs allow you to scale up apps and work easily by adding more physical or virtual servers to distribute the workload across.
Security Benefits: As VMs run multiple operating systems, using a guest operating system on a VM allows you to run security, which can help protect your host operating system.
After having this training, I am very excited about the prospect of using VMs and running more complex computations on them, and I am also glad I got the opportunity to do so through Rockborne’s data engineering training programme as it has provided me with the knowledge, and the confidence to go and research the subject in more depth.