Virtual Machines

There were many challenges with bear metal computing, and these challenges prompted Engineers to come up with the concept of virtualization in order to eliminate some of those challenges. In a virtual machine the outer boundary is that of a the host (the physical system or the server). We may or may not use an operating system running on that Hardware. On the operating system layer we have hypervisor. And then we have virtual machines.

Note :- A Hypervisor is some combination of software and Hardware that allows us to carve up the physical resources.

Hypervisor allows us to carve up pool of resources into isolated smaller parts that we can then install our our systems onto. Hypervisor gives us a virtual hardware layer upon which we can then install an operating system, binaries and libraries and also install our applications. In bare metal computing we had both applications on the single physical host, while in virtual machines we have application #1 and application #2 each with their own isolated virtual machine running on top of the hypervisor.

Evolution of Virtualization in Cloud Computing

The applications of this day and age are running on cloud, but do you wonder how these applications used to be deployed before the advent of cloud technologies? Containers are the new norm for various companies irrespective of their domain and the work they do, but there has been an evolution from deploying applications in just the hardware itself towards containers and container technologies. Evolution of virtualization brought us from running applications directly in simple hardware systems to the world of virtual machines and containers.

In this article we will discuss the evolution of virtualization, what were the issues with bare metal computing? Why virtual machines and containers were introduced? and what problems they scored?

Similar Reads

What is Virtualization?

Virtualization is the process of creating a software-based or virtual version or representation of an application, storage, networking, or servers. This simply means virtualization enables us to manage any hardware such as servers like a piece of software. This helps us bypass the issues with physical interactions. For example, using physical servers has its limitations so rather than physically going to the servers and interacting with them, we can manage them using applications....

Evolution of Virtualization

Evolution of virtualization happened from bare metal computing to Virtual machines and then to Containers, let us start with bare metal computing which was the only way of running applications until the 1960s....

Bare metal computing

Before the advent of containers and even virtual machines, we used to run our applications directly on the hardware system and this was called bare metal computing. These days it is popularly known as bare metal computing, back then it was simply called Computing....

Features and Challenges

Following are the features and challenges on bare metal computing:...

Virtual Machines

There were many challenges with bear metal computing, and these challenges prompted Engineers to come up with the concept of virtualization in order to eliminate some of those challenges. In a virtual machine the outer boundary is that of a the host (the physical system or the server). We may or may not use an operating system running on that Hardware. On the operating system layer we have hypervisor. And then we have virtual machines....

Types of Hypervisors

There are two types of hypervisors:...

Features of Virtual Machines

Dependency hell can be eliminated in virtual machines. Therefore, now each virtual machine has an isolated set of dependencies binaries and libraries such that our application can specify whatever dependencies it needs and not have to worry about the needs of other applications. Because of Virtual machines we can carve up a big server CPU into many different smaller chunks and each of those chunks can have its own virtual machine and then we can install our applications accordingly. This is what enables a cloud provider to offer your to choose between all the different machine types they don’t actually have. Cloud providers don’t have all those different machine types installed in their data center rather, they have much larger machine types and you are given some part of that installed as a virtual machine. Virtual Machines also significantly reduces the blast radius. If something goes wrong with one application on a virtual machine since the applications are running on isolated environments, other applications on a different virtual machines is not impacted. Because on this developers can make changes to any application without worrying about its impact on any other application. Virtual Machines also enables faster speed of starting and stopping applications unlike bare metal computing where the startup and shutdown speed of a physical system is on the order of minutes. The speed of starting and stopping applications in virtual machines is faster than shutting down and starting speed of a physical server. One very important feature of virtual machines is that we can provision and decommission them much much faster. Because of virtual machines we can go on to our favorite cloud provider, click a button or issue a command and have a new virtual server ready within minutes. if we are done with it we can decommission it and we can stop paying for it within minutes as well....

Containers

In case of Containers, at the bottom we have either a virtual or physical Hardware with an operating system and then on that we have a container runtime....

Features of containers

In case of containers, we don’t have the issues of dependency conflicts. Because each application in containers have their own underlying binaries and libraries. Through Containerization, we can improved our utilization efficiency even further because in case of virtual machines, we had to have a an entire copy of the operating system so each of those virtual machine images are going to be on the order of gigabytes. Whereas in case of containers, container images can be much more smaller because they leverage the underlying Operating System rather than having the copy of it. And so they are generally on the order of megabytes. Because of this we are able to utilize the resources of the system much more effectively. Therefore, the capability of the hardware can be optimally utilized. With Containers, we have a small blast radius. Since we have some level of isolation even if it is not as strong isolation as offered by virtual machine. We are able to start and stop containers even more quickly than virtual machines. So in the order of seconds we are able to starting and stopping a container (which is equivalent to provisioning and decommissioning in bare metal computing). On the order of seconds we can bring up a new container from scratch and clear it out as well. The key feature of containers is that they’re small and light enough that we use them within our development environment. On the other hand, creating a virtual machine that tries to replicate the production environment is slow and clunky. Using containers within our development environment gives us high confidence that our production environment is as similar as possible to that development environment. And that decreases the chances that we are going to hit some bug because of the differences between production and deployment environment....

Bare metal computing vs Virtual machines vs Containers

Bare Metal Virtual Machine Container Dependency Management poor good good Utilization poor fine good Isolation good good fine Start up Speed poor fine good Dev/Prod Parity poor fine good Control good fine fine Operational Overhead poor fine good...

FAQs On Virtualization in Cloud Computing

1. Which problems does containers solve?...