Brian Jackson - Fotolia
The choice of using a full VM, container or micro VM isn't a mutually exclusive one. These technologies can readily exist in the same data center and often on the same server.
As an example, it's common to deploy a full VM and run a container engine and containers within the VM. This provides the isolation of the VM outside of the container group. Ultimately, software designers and operations teams can select virtualization technologies that are best suited for their workloads and business needs.
Keeping this in mind, the question then becomes this: Which use case is ideal for each technology? Each type of virtual instance provides a series of advantages and disadvantages that IT administrators should consider carefully before deploying an enterprise workload.
Use cases for VMs
A VM is the oldest and most traditional virtual instance type that uses bare-metal, Type 1 virtualization. Every VM provides a fully isolated virtual environment that includes a complete, full-featured OS and enough resources to host a complete enterprise-class workload. Essentially, each VM is a complete and independent server.
As such, admins usually select a full VM to operate more traditional, monolithic workloads. For example, admins can deploy a complex legacy application, such as a database, to a full VM rather than to a physical, bare-metal server.
It's worth noting that the characteristics of a full VM might seem rather clunky and inefficient when compared to containers and micro VMs. But VM technology emerged at a time when physical server counts, power use, cooling limits and data center facility management were critical concerns. The idea of getting two, five or even 10 VMs on the same physical server represented -- and continues to represent -- an enormous benefit to every business.
Use cases for containers
A container is a much newer virtual instance type that resembles the approach used for hosted, Type 2 virtualization and shares a common OS kernel. By eliminating the resources required for multiple OSes, containers can be smaller and can spin up and migrate easier than full VMs.
Because of this, containers are often preferred when the need for scalability and workload mobility is high, but the need for isolation is relatively low. For example, admins might deploy smaller applications, such as web servers, to containers where they can easily add more instances to accommodate higher web traffic loads.
Containers are attractive for newer software design architectures, such as microservices. Rather than building a monolithic application, admins can break down software design into a series of services and then build and deploy containers as a collection of modules that communicate through APIs. Containers enable fast deployment and rapid scaling for modules that need additional capacity, without the need to duplicate unnecessary services. This brings more resource-efficient scaling to modern software designs.
Use cases for micro VMs
Micro VMs are beneficial because they provide admins with the container architecture many prefer while retaining many of the benefits, such as security, isolation and vast VM creation, that traditional VMs offer. Admins can generally use micro VMs anywhere typical containers might deploy, but they are more ideal in instances that require additional isolation and independent OSes.
The resulting micro VMs might be somewhat larger than corresponding containers because of the added OS footprint, but they are typically smaller and faster overall than full VMs.