chris - Fotolia
DevOps methodologies have found natural allies in application technologies such as containerization, microservices and serverless computing. This leaves many to believe that server virtualization no longer has a role in modern application delivery. However, server virtualization in DevOps provides many benefits, including the ability to support multiple environments.
Not only do virtual servers continue to host many applications and environments; they also add an extra layer of security, support quality assurance (QA) and provide an environment for DevOps tools.
Containers, server virtualization and DevOps
The majority of workloads run in VMs, which abstract the underlying hardware and provide improved security, simplified management and better resource utilization. Virtualization in DevOps has become an integral part of the software stack, and is fully entrenched in most data centers with advanced tooling for monitoring systems, backing up VMs and centrally managing virtual environments. This includes the ability to automate and orchestrate operations.
Most public and private cloud infrastructures rely on virtualization to deliver services that can support varied and fluctuating workloads driven by containerized applications. Virtualization in DevOps offers the flexibility necessary to accommodate different workload requirements, while providing on-demand resource allocation and secure environments that are independent of each other. For example, the OpenStack cloud OS uses KVM as its default hypervisor to abstract compute resources and deliver them through VMs that run as independent environments.
Because of the pervasiveness of server virtualization and the increased reliance on cloud services, it's no surprise that most modern enterprise containers run on virtual servers. VMs offer stronger isolation than containers, and they provide more flexible OS options as well as an assortment of sophisticated tooling.
Virtualization platforms also offer advanced features such as snapshots and automated backups. Most of these platforms enable you to create VM templates based on predefined specifications. As a result, you can implement entire OS platforms in minutes, making it easier to deploy QA environments, try out new technologies and launch new projects without having to invest in a data center full of pricey hardware.
At the same time, server virtualization --and the technologies that support it -- are steadily evolving to better accommodate modern application architectures such as containerization. Container technologies are also evolving, and there might come a time when the majority of containers run on bare metal. Until then, organizations that run containers in VMs can get the best of both worlds, all while maintaining flexibility and security.
Application virtualization and DevOps
Although modern technologies such as containerization are the favored approach for modern development teams, these technologies don't suit every application. In this case, server virtualization can still play a vital role. However, using virtualization for some applications doesn’t preclude taking advantage of modern technologies for the rest. The enterprise has long had to juggle multiple methodologies, and there’s no reason that virtualized workloads cannot coexist with workloads based on newer systems.
Server virtualization in DevOps continues to benefit applications that can't be easily adapted to modern techniques. For instance, transactional databases that manage and process large amounts of persisted data are often better suited to server virtualization than containerization.
Some platforms can use containers and VMs with each other to support complex application infrastructures. For example, a platform's front-end and middleware components might run in containers -- either on bare metal or in VMs -- while the back-end components, such as database clusters, run directly in VMs.
By using virtual servers, you can support complex and diverse workloads that rely on a wide range of technologies. Virtualization makes it possible to run applications that might otherwise conflict with each other if implemented on bare metal.
Virtualization also enables development teams to set up test and development environments quickly to simulate the various OS editions and versions that an application might need to support. For example, you might build a web application that runs in containers, but the application might require proprietary clients that must run on a wide range of platforms. In this case, you can set up a VM for each supported OS environment to test the various clients.
Server virtualization in DevOps tools
Virtualization will continue to play a pivotal role in application delivery for the foreseeable future, which is why many tools that support DevOps also support virtualization-related technologies. For example, the Puppet orchestration tool integrates with VMware vRealize Automation, making it possible to create VM templates and automate self-service provisioning, which DevOps teams can use to set up their environments.
You can also host DevOps tools on virtual servers. For example, you might host a source control system such as Git or Apache Subversion in a VM. The same goes for testing tools such as Selenium, orchestration tools such as Puppet, continuous integration tools such as Jenkins or IT automation tools such as Ansible. Server virtualization helps simplify the implementation of various types and versions of tools. This makes it possible for development teams to set up their DevOps environments quickly using whatever tools best suit their needs.
Hyper-converged infrastructure (HCI) can also play a role in application delivery by providing an agile platform for easily deploying and maintaining a DevOps environment. Most HCI services rely heavily on virtualization technologies to abstract compute resources, providing a flexible environment for hosting DevOps tools.
For example, Red Hat's HCI products are built on Red Hat Virtualization (RHV), a software-defined platform for virtualizing Linux and Windows workloads. With HCI virtualization, development teams can implement their DevOps infrastructures on virtual servers that are quick and easy to deploy.