Cloud computing seems to have become a roller coaster of technology advancement – everyday there’s something new and improved, and every other day something fades away. There is certainly no shortage of new terms, acronyms and venture-backed products.
Also, cloud computing is no longer a simple concept or a single solution – it has rapidly evolved into a new and significantly expanded IT ecosystem. Competition among cloud providers is intense on many fronts, and yet many of the innovations seem to be older ideas re-visited.
Perhaps you’ve been wondering – what really is “the next big thing” in cloud computing? Application containerization, as popularized by Docker, may just be the answer.
Application and data portability is a fundamental goal for cloud computing. We would like cloud infrastructures and platforms to support business applications regardless of style, age, ownership, and location. As cloud service administrators, we also want the ability to “fire” one cloud provider and move to another with minimal risk, short delays, and no loss of data.
Application portability has been a target since the 1980’s open systems movement. Wikipedia states that open systems “are computer systems that provide some combination of interoperability, portability, and open software standards.” Since a cloud is really just another type of system, open clouds should also provide some combination of interoperability, portability, and open software standards.
Openness goes to the heart of the service-oriented paradigm – applications should work with a standard suite of underlying services regardless of how, when or where they were implemented.
To date, virtualization has been the primary method used to isolate applications from the underlying hardware, software, and devices. Virtualization technologies (such as those provided by VMWare, Microsoft Hyper-V, KVM and Citrix XenServer) have become very popular, are widely deployed, and, in fact, were a major stimulus for cloud computing. The downside of virtualization has been the overhead of the hypervisor and the virtual machine’s guest operating systems. The lack of cross-platform standards has also inhibited true application portability.
Container technology appears to be a viable next step on the road to open clouds. The leading promoter of containerized applications has so far been Docker (the company).
Ships carrying standard cargo containers provide the usual visual analogy. In this scenario:
- The ocean is the basic underlying infrastructure;
- Ships are the cloud platforms;
- Containers are standardized shipping units that can be mixed, re-arranged and moved; and
- The goods in the containers are the arbitrary applications.
Containerization eliminates the baggage of virtualization by getting rid of the hypervisor and its VMs. A “container” is cloud-speak for a form of virtualization that facilitates efficient portability of applications. This can also be thought of as multi-tenancy at the operating system level.
The basic idea is that containers can be operated, administered, managed and provisioned in standard ways without having an intimate knowledge of the payload. Each containerized application runs on the ‘bare metal’ of the server plus a single, shared instance of the operating system.
It is important to understand that, even though containers may be relatively small and portable, there is additional infrastructure required for a production environment. In particular, many aspects of operational management need to be dealt with, including:
- Monitoring and reporting of operational status;
- Log (syslog) management;
- Security and security management including user access control;
- Disk and file system operation and management; and
- Network management including firewalls, addresses and networks.
The objective, through industry-based open source development, is to standardize containers and enable their use with various systems. A standard container manifesto is provided here (although there appears to be an ongoing debate in this area). CoreOS, a Docker, Inc. rival, is aiming to set the standard for containers through their specification of an App Container and the related product called Rocket. App Container defines an image format, image discovery mechanism, and an execution environment that can exist in several independent implementations.
How do containers help?
Containerization lets you assemble applications from components and eliminates the problems that can arise when shipping code from one platform to another. For example, this lets you get your code tested and deployed into production as fast as possible.
Containers provide the basis for a modern cloud application platform that is:
- Widely portable, and allowing applications to be discoverable and shareable;
- A more efficient use of resources with only one operating system per server and no hypervisor;
- Faster and more efficient for development, since there is no need to recreate the application in different environments via recompiling and repeated configuration;
- More effective for maintenance since lots of small changes can be made (instead of large-scale updates – smaller changes mean reduced risk and easier testing);
- Easier to deploy and scale, including rapid launching and closing of containers; and
- Supportive of new cloud microservice-based architectures.
Although containerization is not really that new (e.g., Oracle Solaris Containers date back to 2004), the Docker open source project and Linux operating system updates have put the spotlight on the container approach.
What is Docker?
Docker is an open source project whose goal is to design container platforms for developers and system administrators to build, ship, run and orchestrate distributed applications. Docker isn’t the container technology itself, it’s an application packaging and orchestration system that requires container technology in the underlying OS platform.
Is Docker really the next big thing?
There is no question that containerization is a big step towards a much more portable applications architecture and ecosystem. Is the open source Docker the final answer for all cloud-based applications – obviously not or, at least, not yet!
One of the questions is how the open source software relates to the emerging formal international standards. Will Docker be an implementation of the standards being developed by ISO, IEEE and the Open Group, or will Docker become the de facto standard? It is too soon for all the answers to be apparent.
In one way or another, however, Docker has indeed make a big impact in its short life and has become a leading candidate for “the next big thing in cloud computing.”