Choosing an AWS container service
Taking the first step
Purpose |
Determine which AWS container service is the best fit for your organization. |
Last updated |
April 5, 2024 |
Covered services |
Introduction
Containers are a key component of modern application development. They are the standard for organizing compute resources, and managing the content of your application deployments.
Containers provide a discrete reproducible compute environment for building software to deploy in the cloud. They also simplify packaging and dependency management. You can use them for everything from orchestrating web applications or very large multi-cluster estates to testing your work and doing a proof of concept on your laptop.
This decision guide helps you get started and choose the right AWS container service for your modern application development.
Understand
Containers offer a number of advantages for packaging, deploying, and running applications:
-
Portability: Benefit from a consistent runtime environment that can run on any platform that supports the container runtime.
-
Scalability: Scale applications up or down, based on demand, with lightweight and easily replicated containers.
-
Consistency: Ensure that the application runs the same way in all environments with a consistent runtime environment.
-
Efficiency: Use fewer resources than traditional virtual machines with lightweight containers.
-
Isolation: Improve security and reliability with containers' process-level isolation, with which applications running in separate containers cannot interfere with each other, improving security and reliability.
-
Agility: Reduce the time that it takes to bring new features or applications to market by quickly packaging and deploying applications.
You can think about the universe of AWS container services in three distinct layers:
-
The Compute capacity layer is where your containers actually run. This layer consists of:
-
Amazon Elastic Compute Cloud (Amazon EC2) instances: These instances provide the underlying compute capacity for running containers. You can choose from a wide range of instance types and sizes to match your application requirements. EC2 instances can be used as the compute layer for both Amazon ECS and Amazon EKS.
-
AWS Fargate: Fargate is a serverless compute engine for containers with which you can run containers without managing the underlying infrastructure. It removes the need to provision and manage EC2 instances. You can use Fargate with both Amazon ECS and Amazon EKS.
-
AWS Outposts: AWS Outposts is a fully managed service that extends AWS infrastructure and services to your on-premises or hybrid environment. With AWS Outposts, you can run containers on AWS infrastructure deployed in your own data center.
-
-
The orchestration layer schedules and scales your environment. This layer includes:
-
Amazon Elastic Container Service (Amazon ECS): Amazon ECS is a fully managed container orchestration service that simplifies the deployment, management, and scaling of containerized applications. It supports Docker containers. You can use Amazon ECS to define tasks and services, handle service discovery, and manage the lifecycle of containers.
-
Amazon Elastic Kubernetes Service (Amazon EKS): Amazon EKS is a managed Kubernetes service with which you can deploy, manage, and scale containerized applications using Kubernetes. It provides a highly available and secure Kubernetes control plane.
-
Red Hat OpenShift Service on AWS (ROSA): ROSA is a fully managed service with which you can deploy and run Red Hat OpenShift clusters on AWS infrastructure. OpenShift is a popular enterprise-grade Kubernetes platform that extends the capabilities of Kubernetes with additional features and tools for building, deploying, and managing containerized applications.
-
-
The Vertical solutions layer is a set of vertical integration services that provide higher-level and bundled services that simplify the process of deploying and managing applications. The AWS services in this layer are:
-
AWS App Runner: AWS App Runner is a fully managed service designed to simplify the deployment and use of containerized web applications and APIs. You provide your container image, and App Runner automatically builds, deploys, and scales your application. It handles the provisioning of the underlying compute resources, load balancing, and automatic scaling based on incoming traffic.
-
Amazon Lightsail: Amazon Lightsail is a cloud platform that offers pre-configured virtual private servers (instances) and other resources for running applications. It provides pre-defined configurations for quickly provisioning compute instances, databases, storage, and networking resources. Lightsail supports running containerized applications by provisioning instances with Docker pre-installed, aimed at easing the deployment and management of your containers.
-
AWS Batch: AWS Batch is a fully managed service with which you can run batch computing workloads on AWS. It dynamically provisions the optimal compute resources based on the volume and specific resource requirements of the batch jobs that you submit. It automatically handles job scheduling, resource provisioning, and scaling based on the workload requirements.
-
Amazon Elastic Container Registry (Amazon ECR): Amazon ECR is a fully managed Docker container registry with which you can store, manage, and deploy Docker container images. It is designed to provide secure and scalable storage for your container images and simplify provisioning containers with the desired images.
-
Note
AWS provides a variety of ways to deploy and run containers. One of the first considerations is your preference for either a serverless operational model or a Kubernetes operation model. In practice, most customers use both to varying degrees.
The choice of operating model is explored in-depth in the Choosing a
modern application strategy decision guide
Consider
It's important to choose a container service that aligns to your application requirements and operational preferences. The following section outlines some of the key criteria to consider when choosing a container service, as well as supporting tools and services.
Building with containers on AWS uses services with higher levels of abstraction to shift the operational overhead of maintaining infrastructure to AWS. Organizations may choose the cloud to reduce operational cost by using standardized managed services with higher levels of abstraction so that developers and operators can focus on their unique activities that add value, instead of on undifferentiated tasks.
Choose
Now that you know the criteria by which you are evaluating your container options, you are ready to choose which AWS container services might be a good fit for your organizational requirements.
The following table highlights which services are optimized for which circumstances. Use the table to help determine which container services and tools are.
Containers category | When would you use it? | Services |
---|---|---|
Capacity | Use when you want to run your containers on self-managed AWS virtual machines or AWS managed compute. | |
Orchestration |
Use when you need the capacity to deploy and manage up to thousands of containers. |
|
Vertical solutions | Use when you or your team don't have a lot of experience with containers or infrastructure. | |
Tools and services with container support |
Use for supporting your container operations. |
|
On-premises | Use these services for flexibility in where you run your container-based applications. |
Use
You should now have a clear understanding of each AWS container service (and the supporting AWS tools and services) and which one might be the best fit for your organization and use case.
To explore how to use and learn more about each of the available AWS container services, we have provided a pathway to explore how each of the services work. The following section provides links to in-depth documentation, hands-on tutorials, and resources to get you started.
Capacity
What is Amazon EC2? Get an overview of Amazon EC2. This guide not only provides an introduction to the service, but also covers how to get started using it and then provides in-depth descriptions of key features and how to use them. |
Amazon EC2 instance types When you launch an EC2 instance, the instance type that you specify determines the hardware of the host computer used for your instance. Each instance type offers different compute, memory, and storage capabilities, and is grouped in an instance family based on these capabilities. This guide walks you through EC2 instance types. |
Amazon EC2 Auto Scaling with EC2 Spot Instances Learn how to create a stateless, fault-tolerant workload using Amazon EC2 Auto Scaling with launch templates to request Amazon EC2 Spot Instances. |
Orchestration
Getting started with Amazon ECS Get an introduction to the tools available to access Amazon ECS and introductory step-by-step procedures to run containers. |
Tutorials for Amazon ECS Learn how to perform common tasks—including the creation of clusters and VPCs—when using Amazon ECS. |
Amazon ECS Workshop Use this workshop to become familiar with AWS Fargate, Amazon ECS, and Docker container workflows. |
Deploy Docker containers on Amazon ECS Learn how to run a Docker-enabled sample application on an Amazon ECS cluster behind a load balancer, test the sample application, and delete your resources to avoid charges. |
Vertical solutions
What is AWS App Runner? Learn when to use this service to deploy from source code or a container image directly to a scalable and secure web application in the AWS Cloud. |
Getting started with AWS App Runner Use this tutorial to configure the source code and deployment, the service build, and the service runtime to deploy your application to AWS App Runner. |
Deploy a web app using AWS App Runner Follow these step-by-step instructions to deploy a containerized web application using AWS App Runner. |
Tools and services with container support
Getting started with Amazon ECS using AWS Copilot Get started with Amazon ECS using AWS Copilot by deploying an Amazon ECS application. |
AWS Copilot CLI documentation Learn how to use the AWS Copilot CLI, a tool for developers to build, release, and operate production-ready containerized applications on AWS App Runner and Amazon ECS on AWS Fargate. |
Introduction to Amazon ECS using AWS Copilot CLI Learn how to deploy your application to Amazon ECS using AWS Copilot. |
On-premises
What is Amazon ECS Anywhere? Learn how Amazon ECS Anywhere provides support for registering an external instance, such as an on-premises server or virtual machine (VM), to your Amazon ECS cluster. |
Amazon ECS Anywhere pricing Use this pricing guide to understand Amazon ECS Anywhere pricing, which is based on a model in which you are charged based on the amount of time the instances you have registered to an Amazon ECS cluster are connected to the ECS control plane, rounded up to the nearest second. |
Amazon ECS Anywhere FAQs Get answers to frequently asked questions about Amazon ECS Anywhere. |
Explore
For your role |
For an introduction |
For a video |
Architecture diagrams Explore reference architecture diagrams for containers on AWS. |
Whitepapers Explore whitepapers to help you get started and learn best practices. |
AWS solutions Explore vetted solutions and architectural guidance for common use cases for containers. |
---|