Guidebook: Containers and Kubernetes on AWS

December 5, 2019 - Research T148

Containerization is an alternative to full machine virtualization where all the files associated with an application—code, configuration files, libraries, and other dependencies—sit in a container with the container runtime environment which manages how the application runs on the underlying infrastructure. Unlike with virtual machines which each require a copy of an operating system (OS), multiple containers can run on the same operating system independently, which tends to reduce compute resource consumption and increase the speed and ease of deployment. Teams want to build in smaller iterations and deploy code quickly, easily, and securely. With organizations adopting a continuous development model where updates, fixes, and features are pushed out on an ongoing basis, containerization has become a popular approach as it allows for each application to be broken into disparate modules that can share resources but still run independent of one another; each module can be built, updated, and deployed separately without taking the entire application out of service.

To get an understanding of how companies are using containers, Nucleus conducted in-depth interviews with developers at 21 companies ranging in size from post-funding startup to global enterprise, encompassing 710 discrete containerized workloads. We found that 81 percent of containers are deployed in the cloud with the AWS cloud being the most popular choice; 80 percent of cloud-hosted containers run on AWS. Of the cloud-hosted Kubernetes workloads, 84 percent run on AWS.