Cloud Basics: Virtualization and Containerization

Shalvi Desai
The Unconventional Techie
5 min readMar 27, 2020

Cloud Computing is the most bodacious technology that has been adopted the most amongst all the technological innovation in the 21st century. The most significant behind it is, the number of access to all the applications, portals, websites, services hosted on the internet. In fact, it is so inherently involved in our lives that we are not able to individualize its usage. Let us study some key advantages that made us move to this inevitable technology:

· Accessibility and Increased Collaboration: Access of an application and data can be obtained from any machine situated anywhere in the world. Also, developers can collaborate in their project without necessarily having to meet each other.

· Availability and Security: One of the crucial factors while managing IT resources are availability and security. Once you host an application it becomes essential that it provides its services 24/7 and data stored within it is secure and safe.

· Cost-Efficient and Scalable: Cloud doesn’t have any upfront cost, it charges you as per usage, you can manually configure what kind of services in what time zone and location you want thus making it cost effective. You can grow your resources as your business grows and can also reduce them if they are not required without making any investments in the hardware.

· Disaster recovery and Control choices: Cloud provides most efficient means of backup and restoring data and application in as fast and reliable way. It also provides varied choices regarding its services like Software as a service, Platform as a service and Infrastructure as a service.

· Competitiveness and Cloud options: Cloud provides different options like public cloud, private cloud and hybrid cloud feeding to the requirement of the organization. Here complete maintenance and security is provided by the cloud so the organization can focus on its sole motive rather managing its IT resources.

So, there are mainly two concepts one needs to understand before deploying an application on cloud, using a vm-instance or a container.

Virtualization

Virtualization is a technology which makes multiple small virtual servers on a single physical hardware. Operating system of physical server is known as host OS. A firmware called hypervisor runs on the host OS. It distributes the system resources among the virtual servers. It forms a virtual layer between the host OS and the guest OS. There are two types of hypervisors:

1. Bare-Metal hypervisor- These hypervisors runs directly on the system hardware. It is preferred mostly in server architecture. For instance, VMware ESX and ESXi, Microsoft Hyper-V, Citrix XenServer, and Oracle VM.

2. Hosted hypervisor- These hypervisors runs on host’s OS. These are the ones that we generally use in our PC’s. For instance, VMware workstation/Fusion/player, Microsoft Virtual PC, Oracle VM VirtualBox, RedHat Enterprise Virtualization and KVM.

Each virtual server has its own OS configured known as guest OS. The main advantage of virtualization is that you can run multiple application in different environments on single server i.e. App1 may be running in Linux in VM1, App2 may be running in windows on VM2, App3 may be running in CentOS on VM3 without disturbing other application running on the server. The applications created using virtual machine are very heavy weight because each virtual machine has it’s on OS, drivers, libraries, binaries and application.

Virtualization

Each of them is allocated fixed resources by the hypervisor regardless of whether they are actively using it or not. Virtualization provides utmost security due to the complete isolation of the virtual machine instances. A particular virtual machine has no knowledge of malware or any sort of malicious activity going on in any other virtual machine running on the same server. There is increase in overhead as the instructions are passed through the hypervisor to the host kernel. Hence a lot of CPU cycles and memory is wasted.

Containerization

Containerization is technology which encapsulates the application with its library and dependency in its own environment and then deployed. Here all the containers share the host OS. The container forms an image or a template and then they are ran using container engine. All the containers share the system resources and they are managed by the container engine. Here application are very light weight because

App1 , App2, App3 hosted on different containers

they only have their libraries and binaries and no further overhead, thus they can easily be managed and deployed. All the applications comprising of environment supported by the kernel can only be hosted on a single physical hardware. A lot of resources are saved when all the containers share the same kernel, if a particular container is idle for a given period of time, then its resources can be allotted to other containers. The only setback of this concept is security i.e. if the host OS is corrupted then all the applications running on it will stop. Though the security scanners try to protect the OS, but not the containers leaving the latter one vulnerable. The different containers that can be used are Docker, Kubernetes, Cloud Foundry and Rocket.

To all the cloud enthusiasts out there explore, innovate and accelerate.

Guys if you liked the article feel free to clap comment and connect!

This something from my previous work if you interested then do give a read.

https://medium.com/the-unconventional-techie/quantum-computer-not-a-science-fiction-anymore-79e580286523

--

--