Which is Right for Windows Applications?
Virtualization has allowed the data center to become more responsive to the needs of the business. As it has moved into production, however, virtualization has hit several walls and the scalability of the “one application to one virtual machine (VM)” model is coming into question. Containers promise to resolve many of the issues surrounding this one-to-one model. Container use, however, has been typically limited to cloud providers and organizations focused primarily on application development. But container technology designed for Windows-centric data centers is finally available. It is time for IT professionals to rethink the one-to-one model and consider a model based on containers.
The Problem is Sprawl
In the early part of this decade, standard practice was to implement a physical server for each application. As data centers grew and the number of applications increased, server sprawl made this an unsustainable model. The cost to power, cool and the consumption of data center floor space were expensive. Virtualization created the VM context to solve this problem. To some extent it did. A virtual server does not take up any space in the data center, nor does it require dedicated power and cooling.
Now data centers are experiencing a bit of déjà vu. Application deployments have continued to increase, and their rate of deployment is accelerating as we move into an app-driven world. Now VM sprawl has set in. Some data centers have more VMs than they do employees, and most have seen the number of VMs reach the point where the IT staff can no longer effectively manage them.
Applications Are What Matter
The repetitive need for the same resources over and over is the key problem with both the single physical server and a single virtual server per application models. For the most part, the goal of these standards is to protect the application, yet both of them recreate the installation of the operating system. While the VM model made sense as a transition point away from single physical servers, what matters is the application. It is time to advance again and virtualize the application.
What Are Containers?
Containers are the next step toward the truly agile data center. They build on the concept of the VM but eliminate the consumption of resources by identical instances of the operating system. This efficiency returns resources back to the physical host, allowing the instantiation of more applications without increasing the hardware investment, operating system investment or even application investment. The net result is that users of containers can stack application workloads without spending as much on software.
Containers Compliment VMs
While a physical server can run containers by itself, many environments will use them as a compliment to VMs. Applications will be grouped together, each in its container, either by type or purpose, and then those containers will be layered into a VM. This potentially reduces the number of VMs by a factor of eight or more. For the data center, the discussion is not one of “VMs vs. containers” but one of “VMs with containers.”
Containers provide an additional layer of granularity within the VM that can be managed, monitored and controlled. For example, each container can be assigned limits to how much CPU and memory resources it can use.
The Advantage of Virtualized Containers
Containers in the virtual environment bring several benefits. The first is greater efficiency and reduced cost. The cost of deploying MS SQL Server in a container, for example, is substantially less expensive than the cost of deploying on bare metal or even as a VM. The containerized version shares the operating system and does not need access to all of the available cores. The sharing of operating system and potentially parts of the application reduces operating system and application software licensing costs. Also, because containers individually don’t require as many resources as the same number of VMs, the physical server cost is either reduced or it can support even more workloads.
Container High Availability
Containers have an increased availability compared to a VM. Because a container is physically smaller than a VM, the time to move it to another physical system is dramatically reduced. Also, because the container requires far fewer resources, it can be “squeezed” onto a server that already has a high number of workloads running on it.
Containers on Patch Tuesday
Containers are efficient when dealing with Patch Tuesday issues. Without containers, the entire VM needs to be cloned including the operating system and data. With containers, a clone of just the application is made and the patch is applied for testing. Once the patch is approved, the other advantage of containers in dealing with patches is apparent. Without containers, each production VM has to be manually touched and have the approved patch applied. With containers, the administrator applies the patch once and then drags and drops the containerized instances across the production servers when it’s convenient for the business.
The data center revolves around application development and enhancement. In the past, development was a separate silo within IT, providing massive periodic updates, not exactly agile IT. In the modern data center, changes to an organization’s applications need to be made more quickly and more frequently. Containers are a key enabler for that. Again, because of their efficiency, containers can be dragged and dropped to production test servers and back to development rapidly. Movement into full production is equally easy, just drag and drop.
Containers are Portable
Not only do containers allow the movement between the same hypervisor, but they also enable movement of an application across hypervisors. For example, if DevOps is running on Microsoft Hyper-V and production is running on VMware, the application is abstracted from these details and can move seamlessly between them. Container portability also enables the easier movement of applications between an organization’s data center for a follow-the-sun implementation or to the cloud for further testing or burst use cases.
Bare Metal Containers
Finally, many MS SQL servers are not virtualized. They provide too vital of a role to the organization and there is concern over quality of service. The problem is that MS SQL servers that are not virtualized then also lose all of the benefits of being virtualized, like portability. Containers bring those capabilities back but in a bare metal fashion. A bare metal server could run a limited number of containers to provide portability in case of a server failure while not causing concern over quality of service issues. Containerizing a bare metal server would also make application updates and TestDev far easier.
Containers are the logical evolution of virtual machines. They are more resource-efficient and lead to a more agile data center. But they don’t have to be a replacement for virtualization. Containers work well within the constructs of a virtual environment to improve its efficiency and resiliency.