VMs or Containers?
Pretty much every discussion I’ve attended, every conference I’ve been to, and every event I’ve presented at over the last year, this question almost always comes up – “Are VMs better or Containers?”. IMHO, they are both extremely important constructs. While VMs have gained a must-have presence in enterprise infrastructure over the last decade and a half, containers are very rapidly becoming a ‘first-class citizen’ too.
The question is really not whether VMs are better or containers, but rather how an enterprise can make the best use of both together!
While VMware vSphere & Microsoft HyperV have been the popular IaaS offerings in the on-premises world, Amazon AWS & Microsoft Azure have been the popular ones in the public cloud world. IaaS platforms have been very well received because the developer or IT admin, gets full VM access to do pretty much anything in it.
- No App Rewrite or ‘lock-in’:
App binaries can be run with no code change regardless of which IaaS they are running in, as long as they are running on the same OS.
- Application Agility:
The ‘OS centric’ visibility that an IaaS provides by default has been a hindrance for application agility. On the other hand, containers provide an ‘app centric’ view, an easy way to update/rollback/scale the app, or move the app from dev/test/prod environments or across data centers.
- High Operational Expenses:
It takes effort to manage OS versions, patches, anti-virus updates and other things when you have a farm of VMs. The rough stat that I hear from enterprise customers, even those with reasonably automated environments, is approximately 16 man-hours of time spent per VM per Year, in managing the VM. If you talk to the IaaS vendors, they may not agree :-), but most enterprise infrastructure architects would probably agree. Multiply these hours by the number of VMs and the hourly cost of an IT admin, this quickly can add up.
For example, the operating costs of a 1000 VM farm could be approximately $1MM /Year (16 man-hours /VM /Year * 1000 VMs * $65 /hour of IT admin’s time)
Led by platforms such as Cloud Foundry, the first generation of PaaSes provided an application centric view of the data center, resulting in high application agility and lower operating costs (lesser OS copies to patch/manage and lesser AV copies to manage). But they were plagued with large rewrites to application code and therefore a high degree of lock-in. Due to these reasons, the traditional PaaS platforms never really took off.
“Containers + VMs” – Better together!
At ContainerX, our multi-tenant & elastic platform enables enterprises to manage, using a single-pane of glass, containers on any physical layer – Baremetal or VMs on-premise (VMware vSphere) or public cloud IaaS (AWS EC2 or Azure). We’ve noticed our customers using all of these combinations. While some early adopter enterprises or service providers are comfortable with bare-metal environments, many enterprises are getting started by running containers with-in VMs. So while this approach doesn’t eliminate VMs, it can significantly reduce the number of VMs. A 1000 VM environment, which was used to run 500 applications for example, could now shrink to a 200 VM environment, with several containers sharing a VM. With the right integration between an IaaS platform and the container management platform, this can result in several benefits from application agility to infrastructure cost.
- Application Agility
The container platform enables an ‘app centric’ view and much higher levels of agility because one can now move from dev->test->staging->prod easily, scale up/down the app easily, update/rollback the app easily and move across clouds easily!
- Reduced Infrastructure Costs (CapEx):
With 4X to 5X lesser VMs, one can shrink the infrastructure footprint by 75-80%, reducing CapEx on the next refresh cycle.
- Reduced Operational Expenses (OpEx):
Since we now have 80% less number of VMs to update/manage, the operational expenses go down by about 80%.
From 1000 VM environment, if the enterprise can shrink to a 200 VM environment, still running the same set of applications, we’re now looking at an 80% OpEx reduction…from approximately $1MM, we’ve reduced the OpEx to about $200K!!
- No Lock-In
Unlike PaaS platforms, there is no lock-in. You can run your application on any host where you can run a Docker container.
- Minimal Application Rewrite:
Unless you are looking at re-architecting your app, just going from a ‘monolithic-app-in-a-VM’ to a ‘monolithic-container’ can still help you save costs! You don’t necessarily need to build a 12 factor micro-services ready app for you to start seeing the benefits of containerization. Of course, there are certainly other benefits of micro-services, but for most line of business apps that are way below ‘Google scale’, just simple ‘monolithic-containerization’ is still a good enough way to start seeing the cost benefits of containerization.
ContainerX is a silicon valley company founded by PhDs from VMware, Microsoft, Citrix, building a ready-to-go container infrastructure platform designed for enterprise IT. It enables enterprise IT architects to setup an elastic multi-tenant & resilient Container-as-a-Service platform for both Linux & Windows environment, allowing developers and Ops to self-service.