The virtualization revolution that happened 10+ years ago, delivered on the promise predominantly for dev/test.
In retrospective – the key desired goals for consolidation, CAPEX and OPEX optimization, have not been met. In fact, it can be said that consolidation contributed to VM sprawl and in many cases worsened performance issues.
Container technology has been around for a few years and in fact, heavily used in large scale production by Google.
Why Containers? Why now?
Docker is leading the evolution; some would argue a revolution. Docker introduced a new modern container design which has taken the market by storm. The design relies on the modern “micro services” architecture & is based on LXC (Linux container) foundation, has been further optimized for tighter packaging, portability, and is supported by an ecosystem of helpful tools, services, and a vibrant community.
Hypervisors, such as Microsoft Hyper-V, Red Hat KVM, as well as Xen – are all based on emulating virtual hardware which usually translates to the fact that they consume a lot in terms of system requirements.
On the other hand – containers are based on shared operating systems which make them skinnier and more efficient than hypervisors. Rather than virtualizing hardware, containers are deployed on a single Linux instance. This translates in saving useless or irrelevant VM resources, resulting in a smaller enclosure containing the application.
- Bare-metal Server
- Good: Utilization or raw resources, Isolation.
- Bad: Slow deployment, low utilization, difficult to scale or migrate.
- Virtual Machine
- Good: Good use of resources, easy to scale/move, cost efficient, flexible.
- Bad: Problematic resource allocation, vendor lock in, complex configuration.
- Best of both worlds… Isolation, lightweight resource, effective, easy migration, secure, low overhead, mirror dev and prod, community support.
Average Start/Stop Times
|Start Time||Stop Time|
|Docker Containers||< 50ms||< 50ms|
|Virtual Machines||30-45 seconds||5-10 seconds|
As technology keep evolving and becomes further distributed—mobile, IoT (Internet of Things), the need to run efficient and effective IT supporting an Application-Defined world constantly increases.
Using an optimized container based solution, you could expect to run significantly more application/s per host, as much as 2x, off the bat, across the various parts of the stack.
Further optimization in the range of 6x to 10x will require a comprehensive framework or platform providing end-to-end flow. This platform is expected to cover the entire application life cycle: from the application manifest definition listing the containers, services, dependencies and related scripts (pre/post exec), to single-click deployment of multi-container distributed apps, to on-going management with entire application cloning and snapshotting as well as scaling/relocating (compute/storage independently), to run time work load management, to IOPS guarantees for predictable performance, to root-cause analysis (RCA) from App-to-Spindle.
While there are several point solutions addressing parts of the end-to-end flow; when considering containers for the enterprise – make sure you pick the right products that bring multiple benefits from this great container of fresh air!