In traditional software development, code developed in one computing environment often runs with bugs and errors when deployed in another environment.
Software developers solve this problem by running software in ‘containers’ in the cloud.
How Containers Work
Containerization involves bundling an application together with all of its related configuration files, libraries and dependencies required for it to run in an efficient and bug-free way across different computing environments.
The most popular containerization ecosystems are Docker and Kubernetes.
Containers versus Virtual Machines
Containers are often compared to Virtual Machines (VMs), since both of them allow multiple types of software to be run in contained environments.
Containers are an abstraction of the application layer (meaning that each container simulates a different software application). Though each container runs isolated processes, multiple containers share a common Operating System.
VMs are an abstraction of the hardware layer (meaning that each VM simulates a physical machine that can run software). VM technology can use one physical server to run the equivalent of many servers (each of which is called a VM). So, while multiple VMs run on one physical machine, each VM has its own copy of an Operating System, applications and their related files, libraries and dependencies.
Running software in containerized environments generally uses less space and memory than running software within different VMs, since the latter requires a separate copy of the Operating System to run on each VM.
IBM Bets on Containers by Acquiring RedHat
Red Hat’s OpenShift platform helps manage containers in popular ecosystems such as Docker and Kubernetes.
In October 2018, IBM announced its acquisition of Red Hat for $34 billion — the largest sum ever paid for a software acquisition. The deal and its valuation show that major technology companies believe that containerization in the cloud is the future of software.
Application containerization is a positive development for distributed applications and micro-services because each container operates independently of the others. Because each container operates independently of others it helps prevent interdependencies and also safeguards from a single point of failure. Each application or micro-service communicates with the others through their APIs. The container virtualization layer is also extremely flexible and can scale up micro-services to meet rising demand for an application component and distribute the load.
Containerization presents two security challenges. First, since containerized applications share a common Operating System, security threats to the Operating System can affect the whole system. Second, and related, security scanners in containerized environments generally protect the Operating System but not the application containers, leaving the latter vulnerable.
At the same time, containerization also bolsters security since it isolates application containers to a significant degree.
Containerization is a major trend in software development and is its adoption will likely grow in both magnitude and speed. Large players like Google and IBM are making big bets on containerization. Additionally, an enormous startup ecosystem is forming to enable containerization.
Containerization’s proponents believe that it allows developers to create and deploy applications faster and more securely than traditional methods. While containerization is expensive, its costs are expected to fall significantly as containerization environments develop and mature. Containerization is thus likely to become the new norm for software development.