A virtual machine (VM) is a software-defined, hypervisor-managed, portable computing environment that resides on and uses the resources of a host computer.
Virtual machines are intended to increase server utilization by running more applications per server. This consolidation of underutilized servers helps organizations improve operational efficiency and reduce costs.
For example, instead of 20 applications running on 20 servers with each server at a low utilization rate, an organization can place 20 virtual machines on a single server. The company can then incur a fraction of the hardware costs while also reducing space and power requirements.
As enterprise deployments expand to satisfy the needs of dynamic mobile applications and flexible work arrangements, virtual machines can help manage costs for computing environments.
Virtual machines can also reduce downtime caused by maintenance or updates. Virtual machines make it possible to update a single application without having to shut down the server and impacting all the applications running on the server. An error or breach in one app might leverage codependencies to do more damage.
Some enterprise systems may have hundreds or even thousands of apps and computing deployments. Without a system for easy management, scaling, and responding to new business objectives, even just maintaining visibility becomes a burden on IT capabilities.
Many enterprise systems use third-party cloud computing providers for most of their internet-connected resources. This approach has many advantages, but it takes work to make sure that deployments and resources are right-sized and that costs don't escalate.
A virtual machine packages an operating system and application with a description of the compute resources needed to run it, such as the CPU, memory, storage, and networking. When this virtual machine is deployed to a host computer, software called a hypervisor reads the description and provides the requested compute resources.
Multiple virtual machines, even those with different operating systems, can be run simultaneously and independently within the same host computer.
Virtual machine-based systems are designed to improve the efficiency of a host. The system's granular parsing of resources provides detailed visibility into systems. Such systems also provide app-by-app insights into cost, application performance, resource usage, and development processes.
Virtual machines help solve many of the technical challenges associated with managing complex enterprise computing systems. They are part of modern DevOps practices that emphasize containerization, automation, software-defined resources, and rapid development cycles. What follows are some common features of virtual machines.
The advantages of virtual machines result from their self-contained nature. This means that a single host can simultaneously run multiple virtual machines, and even multiple operating system environments, making better use of resources and reducing costs. When a new application is needed, it likely won't require additional computing capacity.
Since each application is in effect running on its own computer, and isolated from the host operating system, a corrupt or compromised application is no danger to other applications or the host OS.
Individual virtual machines can be expanded, shrunk, and moved without impacting other applications. This reduces downtime for maintenance and improves the ability to better implement development actions.
Since they are software-defined, virtual machines can be created and deployed quickly, and are easily copied, reproduced at scale, and even moved to other hosts entirely. Virtual machines also make an ideal dev test environment.
Running multiple virtual environments and applications on one host can provide a way to drastically reduce the physical infrastructure needed, on premises or in the cloud.
In fact, virtual machine environments are designed to fit as many applications as possible on a server. These smaller units of computing resources are also smaller units of cost, creating more transparency into costs and control on a more detailed level.
As a result of the flexibility of virtual machines, enterprise deployments can respond more quickly to changing market conditions or new business objectives.
Virtual machines help reduce system downtime because of application maintenance. They also provide more flexibility in response to a service issue and a quicker path to restoration in the event of an outage or incident.
The cloneable and portable nature of virtual machines make scaling as easy as copying and exporting files.
Virtual machines are by design isolated from others and from the host's OS, helping to ensure that a problem or breach remains isolated. In addition, a cloned virtual machine can serve as a sandbox environment to confine and test questionable applications and resources. The granularity of virtual machine systems helps engineers find problems and target remedial actions.