The CDN market is in the midst of a revolution, and containers are at the forefront of the sea change. Over the last several years, the containerization of services has become an increasingly popular mode of building and managing applications, which shows no sign of abating. The flexibility that containerization offers through breaking applications into different components offers many benefits to software development. Container management services like Docker and Kubernetes have seen a great deal of momentum in their usage by development and IT ops teams. Datadog’s latest Docker Adoption Report showed that adoption rates of Docker, for instance, have increased by 20% year over year.
What are the Benefits of Containerization?
The primary reason behind the popularity of containerization is that containers offer a solution to the longstanding challenge of how to get software to continue to run reliably when it is moved between different computing environments. When the supporting software environment (or other elements, such as network topology) isn’t identical, problems can quickly arise for developers.
A container is essentially a complete runtime environment, consisting of an application and all its dependencies, libraries and other binaries, along with the configuration files required to run it, bundled into one package. When the application platform and its dependencies are containerized, the differences between OS distributions and its foundational infrastructure are abstracted away. By abstracting systems from the physical platform, you are able to move them from platform to platform (or cloud to cloud).
In addition to consistency, portability and flexibility, other benefits to containerization include:
- Increased scalability – As a container is much smaller in size than a virtual machine (which they are often compared to as both solutions allow you to package your application together with libraries and other dependencies), a single server can host many more containers than virtual machines.
- Greater modularity – The application is divided into modules (e.g. the database can be separated from the application front end, etc.), creating isolated environments for running your software services.
- Separation of roles – Developers are better able to focus on application logic and dependencies; meanwhile IT teams can concentrate on deployment and management, improving company-wide cost and performance efficiencies.
- Reduction in complexity – The modular nature of containers makes them easier to manage than virtual machines as each module is lightweight, and changes can be made to each module without having to rebuild the entire application.
- Security - Containers offer a further layer of security as your applications are not running directly on the host operating system; furthermore, security services are platform-specific, not application-specific.
- Lower costs – As containerized applications can be instantiated in a “just in time” manner when needed and similarly disappear when no longer required, they free up resources on their hosts and accordingly lead to lowered costs.
section.io Container-Enabled Benefits
section.io is the first and only enterprise-grade global content delivery system to be built entirely using container technology. Our Edge PaaS platform runs wholly on a combination of Docker, Kubernetes and home-grown container orchestration. This choice was made as part of section.io’s steadfast commitment to making content delivery more straightforward for developers using Agile and DevOps methods.
Benefits to our use of containerization include the ability to:
Leverage Our Portable PoPs Our PoPs are capable of running anywhere that a physical or virtual machine can run, allowing us to take advantage of a wide variety of options - from leveraging the peering and capacity of the big public cloud providers to taking advantage of the particular benefits of boutique hosting companies such as the bare metal as a service offered by Packet.net.
Utilize the “Developer PoP” A unique service to section.io is the “Developer PoP” (driven by the flexibility of our container-based technology), which allows our customers to git clone their configuration, pull section.io’s Docker images onto the developer workstation and test out changes in the developer PoP before pushing out configuration changes to production.
Customize your Reverse Proxy Software Another benefit to the flexibility provided by containers is our ability to deliver a different group of proxy software for each of our customers despite the fact that they run on the same network. This in turn allows you to customize your reverse proxies to build a particular reverse proxy chain to suit each application individually.
Flexibility with Upgrading Software You choose to upgrade software when it suits you. Each customer is different as to when they are ready to upgrade; when you are, you simply switch out one container version for another.
Benefit from Increased Security Leakage of process execution is prevented as a result of the additional layer of isolation provided by containerization. Given the security issues that other CDNs have experienced in the past, this is a particularly important benefit stemming from our longstanding containerized approach.
Two Approaches to Containerization
There are two approaches to containerization: the first is to build a customized system to manage and run containers, automatically launching new container instances as needed with increased processing; and the other is to work with one of the container platforms like Kubernetes, Cloudify or Docker Swarm. These orchestration, scheduling and clustering technologies are usually the more attractive option as they can provide the essential mechanisms that enable scalability.
Kubernetes (originally designed by Google), for instance, is capable of scheduling an unlimited number of container replicas over a group of node instances, which allows most large container-based applications to scale up or down as needed.
Docker Swarm, the newest tool out of the three, offers clustering, scheduling and integration capabilities, allowing developers the potential to generate and ship multi-container/multi-host distributed applications, which include scaling and management for container-based systems.
If you do go for the second option, it is worth trying out a proof of concept with each technology, using automated technology and real-world workloads to see which might best suit your needs. Remember to consider security and governance as part of this process as these also need to be able to scale as required.
Why Containers are Here to Stay
The problem that containers solve: how to truly provide application portability from platform to platform (or cloud to cloud), has long been a challenging one for developers. Certainly in the context of cloud computing moving from simple to complex architectures, the use of containerization (because of their lightweight nature) is a preferable solution to placing workloads in virtual machines. The relatively small size of containers makes the creation of workload bundles that can be moved from cloud to cloud straightforward. Thereby, containers enable workload migration within hybrid or multi-cloud environments crucially without the need to modify much or any of the application. We can expect the growing rate of adoption of container-based technologies to only continue to grow.