Containers on AWS are a major resource for developers looking to improve infrastructure efficiency. In the past, virtual machines (VMs) were the packaging tool of choice despite their faults—namely having to manage copies of the OS, patches, and dependencies across applications. Now with containers there’s a further extension from hardware and the OS layer, with containers able to run on the guest OS, using VMs as a resource and making packaging and portability much simpler.
Containers are a lightweight way to consistently port software environments for applications. This portability in containers makes running and scaling applications easy.
For example, containers offer environment consistency, which reduces the issues that arise when moving an application through development, testing, and production. By including all necessary files and dependencies, containers serve as a building block to be deployed on any resource, meaning what you package as a container will deploy and run the same way whether in testing or production. This offers reliability regardless of the environment.
Another benefit of containers is the ability to specify the exact space used by a container on an instance. This functionality allows you to maximize computing resources by running multiple applications on a single instance. This, in conjunction with the fast boot times associated with containers, creates better operational efficiency by allowing you to rapidly scale applications.
The reality is that containers have more flexibility than their predecessors with less complexity. Building and deploying microservices, running batch jobs for machine learning applications, and moving existing applications on to the cloud are just a few of the use cases containers allow.
Amazon’s Container Products
AWS offers a number of container products and services to help you deploy, manage, and scale your production. These are Amazon Elastic Container Service, (Amazon ECS), Amazon Elastic Container Service for Kubernetes (Amazon EKS), Amazon Elastic Container Registry (Amazon ECR), and AWS Fargate.
Amazon ECS was the first container runtime native to the platform. With support from Amazon ECR, which offers storage for container images, Amazon ECS produces production workload capabilities in AWS. This includes task placement, integration with the AWS platform, Auto Scaling, VPC networking, etc. Amazon ECS is seeing tremendous growth, with a number of containers running on the platform, and with support for Windows containers as well. Designed to deeply integrate with the AWS platform, Amazon ECS is a highly reliable solution that provides a native AWS API experience for containers.
Amazon EKS is a new part of the AWS container family. AWS joined the Kubernetes family not long ago, and today, an estimated 63% of Kubernetes workloads run on AWS. A platform for enterprises to run production-grade workloads, Amazon EKS provides a native upstream Kubernetes experience. Amazon EKS automatically performs cluster management operations such as the managing of master nodes and etcd instances, leaving you solely in charge of the worker nodes.
Amazon ECR is a fully-managed Docker container registry that makes it simple to store, manage, and deploy Docker container images. Integrated with Amazon ECS, Amazon ECR simplifies production workflows. It also eliminates the need to operate your own container repositories or worry about scaling infrastructure.
AWS Fargate is also a new product to AWS. AWS Fargate lets you run containers without running container instances, leaving no instance or infrastructure to manage. Instead, you only pay for resources used or containers deployed. AWS Fargate launches containers within seconds simply through an upload of your container image and specification of resource requirements. AWS Fargate already works with Amazon ECS, and allocates the compute for each container, with compatibility for Amazon EKS coming soon.
Containers are core to development on AWS. A lightweight means to provide a consistent, portable environment for applications to easily run, scale, and deploy, AWS offers a number of container products meant to create efficiency in application deployment to AWS.