Virtualization

What is a Virtual Machine?

Virtualization of a physical computer as a complete hardware platform. Virtual machine is a hardware abstraction. You can build a virtual machine by specifying the CPU, Memory and Hard Disk that is needed for your machine. You can also choose your operating system for your virtual machine. You can easily create a virtual machine on any of the cloud providers; AWS, GCP, Azure etc..

Before VM concept was introduced, one server (computer) had one operating system be it Windows, Linux, MacOS etc. Through virtualization, one server still has one operating system but can also host multiple 'guest' operating systems, each one of the guest operating systems can be of a different type compared to the host and each one operating as an independent computing power called the Virtual Machine (VM).

What is a Container?

A container is a virtual runtime environment that runs on top of a single operating system (OS) kernel and emulates an operating system. Containers do not virtualize the hardware aspects like a virtual machine. A container is not a virtual machine. A container is a software abstraction. You can create a container with a set of software packages that run on the container runtime.

Advantages of using a container:

  • To create consistency across development, test and production environments
  • Loose coupling between application and operating system
  • Workload migration is simplified between on premises and cloud environments

The most popular container in the market today is Docker.

Hypervisor:

A hypervisor is a process that separates a computer’s operating system and applications from the underlying physical hardware

Hypervisor and Container based Virtualization

Although virtual machines and containers are separate concepts and one can live without the other, frequently you see them together.

Popular hypervisors include VMware ESX, Microsoft Windows Server, Citrix Xen, Red Hat Enterprise Virtualization and Linux KVMs. Cloud vendors typically have their own virtualization software.

Container Management

While manually anyone can start and stop containers, it is best to automate this process so that your application can scale with multiple container spawned or destroyed based on the load. This is where open source container management software Kubernetes comes into picture. Also known as K8s automates deployment, scaling, and management of containerized applications. The other popular container management software comes from Docker - Docker Swarm

Container management software automatically create, deploy and scale containers based on load. They can also monitor application health, load balancing, hardware resource allocation etc., which are all collectively called as 'Container Orchestration'

Pods

Pods are groups of one or more containers (that typically work together) and are deployed together. Let us take an example; let us say you want to deploy a JEE solution with a Web server (Tomcat) and a Database server (MySQL or Oracle etc.), although you can deploy both on the same container, it would be more apt to deploy them on separate containers that can talk to each other. This is when you would create a pod of the two containers, that represent your complete application and deploy them together and K8s will ensure they can communicate with each other without any issues. K8s also helps you start/stop and automatically scale your pod.

Image

Setting up your computer with all the necessary software is a tedious process in any enterprise development environment that typically uses multiple softwares and platforms. Instead of hand installing each software separately and making them work together, a more efficient way is to take a snapshot of a working software environment and create an image out of it. Then any developer who wishes to install all the necessary software can just download and use the image to get the exact same software stack and environment without a whole ton of hassle.

An image is a snapshot of a container with all its software and data at any instant of time. When you have an image, you can create as many identical containers using the image and there by ensure the same content is served across all of them.

Google Cloud Solutions

results matching ""

    No results matching ""