How do containers handle live migration and workload balancing in the virtualized environment?
As with conventional VMs, containers can be migrated from one system to another. Such migrations can be performed on demand or automatically to support critical tasks, such as server workload balancing. The primary factor limiting migrations is the underlying host OS kernel. Since containers share a host OS kernel, the destination server must use an operating system with a compatible kernel. It doesn't necessarily need to be the same distribution or build, but the kernel must be the same; you can't run a Linux container on a Windows server -- at least not yet.
Containers offer more than just a way to virtualize an enterprise application. Container technology has provided system and application architects with a new approach to software development and deployment. On one level, containers use fewer computing resources than VM counterparts, and are faster and easier to create. This makes it possible to spin up more containers quickly to meet the needs of high-volume applications, such as Web servers.
But the impact of containers is even more important than just the ability to create or destroy lots of them easily. Container flexibility and scalability is increasingly leveraged in a microservices approach to software design. In traditional "monolithic" software design, every feature and function is integrated into the single application. When the bandwidth of certain features and functions is exceeded -- or the program can't handle any more users -- the enterprise needs to deploy another iteration of the entire application in order to scale the software. This is a costly and inefficient approach to software design.
By architecting software in terms of discrete services -- application parts or components -- the varied parts of an application can be distributed across multiple containers, which are then connected logically to form the complete application. This allows the individual components to be patched or upgraded without impacting the other component containers. Even better, it is possible to create more containers to scale out only the features that need more capacity -- or even scale down the number of containers where a certain feature needs less capacity. This makes microservices-based software design an ideal match for container technology and results in highly-scalable, but highly-efficient applications. Microservices containers can still be migrated across compatible systems for workload balancing and application performance optimization.
VMware's microservices architecture
Are Docker containers a threat to VMs?
Five downsides to container technology
Dig Deeper on Application virtualization
Related Q&A from Stephen J. Bigelow
Navigating data center malfunctions when hardware is off premises can be tricky. Organizations must have strong SLAs with their colo provider to ... Continue Reading
Regression tests and UAT ensure software quality and both require a sizeable investment. Learn when and how to perform each one, and some tips to get... Continue Reading
Learn the meaning of functional vs. nonfunctional requirements in software engineering, with helpful examples. Then, see how to write both and build ... Continue Reading