Advantages of virtualization

3 minute read

Diff Photo by Den Harrson

In my previous post I introduced the types for software virtualization, in this one I’ll list some of the advantages that brings.

Reduce IT expenses

Non-virtualized environment can be inefficient because when you are not consuming the applications or services on the server, the compute is idle and can’t be used for other applications. By virtualizing an environment, that single physical server transforms into many virtual machines or containers (depending on the type of virtualization chosen).

The consolidation of the applications onto virtualized environments is a more cost-effective approach because you’ll be able to consume fewer physical resources, helping on spending significantly less money on servers and bring cost savings.

Public cloud ready

Virtualizing your environments is the first step to put your applications on a public cloud as GCP, AWS or Azure and transforming the CapEx investment in equipments and people to run it to a subscription model in which you pay as you go and increase or decrease that subscription according to your needs. Many companies, when starting a new project or product, use the flexibility and scalability of the public cloud to decrease the CapEx needed at the beginning to avoid buying the hardware upfront to see how that project/product evolves, but be careful, sometimes it is difficult to control that OpEx :) [1].

Reduce downtime and enhance availability in disaster recovery situations

When a disaster affects a physical server, someone is responsible for replacing or fixing it—this could take hours or even days. With a virtualized environment, it’s easy to provision and deploy, allowing you to replicate or clone the virtual machine that’s been affected. The recovery process would take mere minutes—as opposed to the hours it would take to provision and set up a new physical server—significantly enhancing the resiliency of the environment and improving business continuity. In the case of containers, the migration, cloning or replication can be even automated and orchestrated by platforms as Kubernetes.

Increase efficiency and productivity

With fewer servers, the teams in charge of maintenance will be able to spend less time maintaining the physical hardware. You’ll be able to install, update, and maintain the environment across all the VMs in the virtual environment on the server instead of going through the laborious and tedious process of applying the updates server-by-server. Less time dedicated to maintaining the environment increases team’s efficiency and productivity. Modern virtualization platforms allows to maintain big farms of servers automatically and managed with little intervention from a centralized console.

Infrastructure as Code (IaC)

IaC is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools. The IT infrastructure managed by this process comprises both physical equipment, such as bare-metal servers, as well as virtual machines, containers, clusters, and associated configuration resources. The definitions may be in a version control system, like Git. It can use either scripts or declarative definitions, rather than manual processes, but the term is more often used to promote declarative approaches.

Ease Development and Operations (DevOps)

Since the virtualized environment is segmented into virtual machines, developers can quickly spin up a virtual machine or a container without impacting production environments. This is ideal for developing and testing, as each developer can quickly clone the virtual environment and run a test on it. IaC plays a paramount role in the DevOps discipline, since it allows automating the creation and configuration of the infrastructure itself, speeding up all the processes that runs on top of that infrastructure.

Scalability

As mentioned in former paragraphs, virtualized infrastructure allows great flexibility since we can allocate more resources as we need them by just using the console provided by the typical cloud computing provider. We can scale up, by upgrading the characteristics of the virtual hardware (CPU, RAM, HD, etc), scale out by creating more instances to support our applications and services. Of course, we can scale down when we do not need those resources.

More green-friendly (organizational and environmental)

When you are able to cut down on the number of physical servers you’re using, it’ll lead to a reduction in the amount of power being consumed. This has two green benefits: it reduces expenses for the business, and that money can be reinvested elsewhere, it reduces the carbon footprint of the data center.