Infrastructure Services are definitely undergoing a major transformation. How does one navigate the web of emerging technology trends and stay ahead of the game? Read on to learn more on our Infra Matters blog.

« May 2014 | Main | September 2014 »

June 24, 2014

Application Portability - Going beyond IaaS and PaaS - Part 2

Renjith Sreekumar


In my last post,  we looked at the concept of running thousands of hardware-isolated applications on a single physical or virtual host. Applications are isolated from one another, each thinking that it has the whole virtual machine dedicated to itself. The container technology allows for application and its dependencies to be packaged in a virtual container that can run on any server running the same OS. This enables flexibility and portability on where the application can run -on premise, public cloud, private cloud or bare metal, etc. Sharing metadata reduces application footprint and start-up time along with improved performance and multi-tenancy.

Should we build multiple VMs to isolate applications or build complicated abstractions and layering on a VM to achieve this? Here is where the container technology can help.  Docker is one such container technology that extends the native Linux kernel capabilities and namespaces to create hardware-isolated OS images with their own isolated allocations of memory, storage, CPU, and network.

The base OS image will be customized using Docker to create a customer image. Docker file system can merge the various layers of customization on the base image together during run-time. As the container can abstract the underlying OS, it may not require a VM and hence can actually run on the bare metal OS as well. Containers may well be the Next VM !!!

Let's look at some of the practical use cases:

1) PaaS Delivery: Today most of the PaaS providers use sandbox methodologies to application colocation on a single OS instance. With the adoption of container technology makes it much easier to abstract the application environments, support multiple languages, databases and also improve manageability and security.

2) DevOps: Container-based PaaS provides app developers the flexibility to build and deploy application environments with much more ease. This reduces the provisioning lead time and also alleviates worries about OS and middleware management, allowing developers just  focus on just their applications.

3) Scale out and DR: While most hypervisor technologies allows moving apps around in VMs, we need a compatible hypervisor to run those VMs. However  Virtual Containers can run on any server running the same OS, whether on premise, public cloud, private cloud or bare metal allowing scale out to any types of clouds supporting the same OS.

Finally, what benefits and changes can we anticipate?
The Logical boundary of applications ecosystem will move from VMs to Containers while the mobility aspect of applications will move beyond single hypervisor zones: 
• A container holding just the application binaries reduces the complexity in provisioning and managing applications
• The coexistence of isolated apps in the same physical or virtual servers will reduce the platform development and management cost
• The use of standard frameworks, instead of platform-specific APIs (sandbox driven),will improve the user adoption
• The container based application is entirely self-contained making it inherently more secure

So what do you think? Are you considering container based Application isolation and delivery as well?