Choosing an AWS compute service
Taking the first step
Purpose |
Help determine which AWS compute service is the best fit for your organization. |
Last updated |
June 24, 2024 |
Covered services |
|
Introduction
AWS compute services are designed to meet the varied demands of modern applications, from small-scale projects to enterprise-grade solutions. These services provide scalable computing power that helps you to build, deploy, and manage applications.
To get the most from your investment in these services, it's important to choose the right services for the right task or use case, whether it involves processing simple web app requests or running complex, data-intensive algorithms.
You can, for example, use:
-
Amazon Elastic Compute Cloud (Amazon EC2) to launch and manage virtual servers
-
AWS Lambda to run code without having to provision or manage servers
-
Amazon Elastic Container Service (Amazon ECS) or Amazon Elastic Kubernetes Service (Amazon EKS) to run and manage containers
-
AWS Fargate to run containers on AWS managed compute, or AWS Batch to process large volumes of data in parallel
You can also use multiple types of compute solutions in a single workload, as each one has its own advantages.
This guide will help you select the AWS compute services and tools that are the best fit for your needs and your organization.
Understand
AWS compute services provide secure and resizable compute capacity in the cloud. AWS offers a range of compute services to meet various application requirements. These include Amazon EC2 for resizable virtual servers, AWS Lambda for serverless computing, Amazon ECS and EKS for container orchestration, and AWS Fargate for serverless containers.
Furthermore, AWS Batch facilitates batch computing. AWS hybrid and edge services such as AWS Local Zones and AWS Outposts bring AWS infrastructure and services to metropolitan areas, on-premises locations, and edge sites, addressing requirements for low latency, digital sovereignty, and local data processing. Additionally, Amazon EC2 Auto Scaling automatically adjusts capacity. These services cater to different workload needs, from basic virtual machines (VMs) to fully managed serverless and container solutions.
Amazon EC2 services
Amazon EC2 offers a wide range of instance types tailored to different workloads and applications. You can choose from a range of configurations, including different combinations of CPU, memory, storage, and networking capacity. EC2 provides a large variety of compute capacity options optimized for various workloads: general purpose, compute optimized, memory optimized, storage optimize, accelerated computing, and high-performance computing.
-
Amazon EC2: Amazon EC2 provides on-demand, scalable computing capacity in the Amazon Web Services (AWS) Cloud.
-
Amazon EC2 Auto Scaling: Amazon EC2 Auto Scaling helps you maintain application availability and lets you automatically add or remove Amazon EC2 instances by using scaling policies that you define.
-
EC2 Image Builder: EC2 Image Builder is a fully managed AWS service that helps you to automate the creation, management, and deployment of customized, secure, and up-to-date server images.
-
Amazon Lightsail: Amazon Lightsail provides an easy way to build web applications providing instances, container services, managed databases, content delivery network distributions, load balancers, SSD-based storage, and DNS management.
Container services
AWS container compute options are designed to help you deploy, manage, and scale containerized applications efficiently. Amazon ECS, for example, allows you to run and manage Docker containers at scale, handling cluster management and orchestration of containers. Amazon EKS provides a fully managed Kubernetes service, simplifying the deployment, management, and scaling of containerized applications using Kubernetes.
You have the option of running containers on EC2 instances that you manage, or you can run them on Fargate on AWS managed compute. Additionally, AWS offers Amazon Elastic Container Registry (Amazon ECR), a fully managed Docker container registry.
-
Amazon ECS: Amazon ECS is a fully managed container orchestration service that helps you easily deploy, manage, and scale containerized applications.
-
Amazon ECS Anywhere: Amazon ECS Anywhere provides support for registering an external instance such as an on-premises server or VM, to your Amazon ECS cluster.
-
Amazon EKS: Amazon EKS is a managed service that helps you easily deploy, manage, and scale containerized applications using Kubernetes on AWS infrastructure. Amazon EKS removes the need to install, operate, and maintain your own Kubernetes control plane on AWS.
-
Amazon EKS Anywhere
: Amazon EKS Anywhere is a container management software built by AWS that makes it easier to run and manage Kubernetes clusters on-premises and at the edge. -
Amazon ECR: Amazon ECR is an AWS managed container image registry service that is secure, scalable, and reliable.
-
AWS Batch: AWS Batch is a fully managed batch computing service that plans, schedules, and runs your containerized batch machine learning, simulation, and analytics workloads across the full range of AWS compute offerings, such as Amazon ECS, Amazon EKS, Fargate, and Spot or On-Demand Instances.
Serverless compute
AWS offers serverless compute options, including AWS Lambda and AWS Fargate, which allow you to run your workloads without provisioning or managing servers. As a result, developers can focus on writing code by shifting as much management of the underlying infrastructure resources to AWS.
-
AWS Fargate: AWS Fargate is a technology that you can use with Amazon ECS to run containers without having to manage servers or clusters of Amazon EC2 instances.
-
AWS Lambda: Lambda runs your code on a high-availability compute infrastructure and performs all of the administration of the compute resources, including server and operating system maintenance, capacity provisioning and automatic scaling, and logging.
On-premises and edge compute
AWS provides hybrid and edge compute options that allow you to extend AWS infrastructure and services to your premises and the edge. These edge and hybrid compute options provide flexibility and scalability for a wide range of use cases across different network environments.
-
AWS Local Zones: AWS Local Zones places compute, storage, database, and other select AWS resources close to large population and industry centers. You can use Local Zones to provide your users with low-latency access to your applications.
-
AWS Dedicated Local Zones
: AWS Dedicated Local Zones are a type of AWS Infrastructure that is fully managed by AWS, built for exclusive use by a customer or community, and placed in a customer-specified location or data center to comply with regulatory requirements. -
AWS Outposts: AWS Outposts is a fully managed service that extends AWS infrastructure, services, APIs, and tools to customer premises.
-
AWS Wavelength: AWS Wavelength helps developers to build applications that deliver ultra-low latencies to mobile devices and end users. Wavelength deploys standard AWS compute and storage services to the edge of communications service providers' (CSPs') 5G networks.
Cost optimization
AWS provides cost optimization services that allow you to reduce your AWS costs by committing to a usage level and generating recommendations to reduce the cost of your workloads.
-
Savings Plans: Savings Plans is a flexible pricing model that can help you reduce your bill compared to On-Demand prices, in exchange for a one- or three-year hourly spend commitment.
-
AWS Compute Optimizer: AWS Compute Optimizer provides artificial intelligence and machine learning-based analytics to help you right size your workloads, reduce costs, and improve the performance of your workloads.
-
Amazon EC2 Spot Instances: Amazon EC2 Spot Instances let you take advantage of unused EC2 capacity at a significant discount to On-Demand pricing, allowing you to lower your Amazon EC2 costs significantly.
Elastic Load Balancing
Elastic Load Balancing (ELB) automatically distributes your incoming traffic across multiple targets, such as EC2 instances, containers, and IP addresses, in one or more Availability Zones.
-
Application Load Balancer: An Application Load Balancer functions at the application layer, the seventh layer of the OSI model. After the load balancer receives a request, it evaluates the listener rules in priority order to determine which rule to apply, and then selects a target from the target group for the rule action.
-
Network Load Balancer: A Network Load Balancer functions at the fourth layer of the Open Systems Interconnection (OSI) model. It can handle millions of requests per second. After the load balancer receives a connection request, it selects a target from the target group for the default rule.
-
Gateway Load Balancers: Gateway Load Balancers help you to deploy, scale, and manage virtual appliances, such as firewalls, intrusion detection and prevention systems, and deep packet inspection systems.
Consider
Here are some key factors to consider when choosing an AWS compute service. Choosing the right AWS compute service involves balancing these factors to match your specific workload needs, technical requirements, and business objectives, to help you optimize for performance, cost, and ease of management.
Workload planning involves understanding the operational patterns and technical demands of your applications. For instance, batch processing jobs, which often involve running a series of tasks or a program on a large volume of data, require robust compute capacity, which can be scaled down upon job completion to manage costs effectively.
Web applications, on the other hand, demand high availability and consistent performance to serve end-user requests at any scale. These workloads typically need a compute service that can dynamically adjust to fluctuating traffic patterns, ensuring smooth user experiences during demand surges and cost savings during quieter periods.
Machine learning models introduce a different set of requirements, with distinct phases for training and inference. Training is computationally intensive and often requires specialized hardware accelerators such as GPUs or custom chips for a limited duration but at a high-performance level. Inference, however, might call for a highly available environment that can quickly respond to prediction requests, often benefitting from optimized compute services that support auto-scaling and low-latency processing.
Choosing the right compute service entails matching these workload characteristics with the specific capabilities of each service to achieve operational efficiency, performance optimization, and cost management.
Choose
Now that you know the criteria by which you're evaluating your compute options, you're ready to choose which AWS compute services might be a good fit for your organizational requirements.
The following table highlights which services are optimized for which circumstances.
Compute category | What is it optimized for? | Compute services |
---|---|---|
Amazon EC2 | Providing scalable high-performance computing resources for CPU-intensive workloads. | |
Container services | Helping your teams focus on building applications rather than the runtime environment or managing a control plane. | |
Serverless compute | Minimizing your AWS management overhead, allowing you to focus on implementing your business logic. | |
On-premises and edge compute | Allowing you to run familiar AWS interfaces to your premises and the edge, providing lower latency and local data processing needs. | |
Cost and savings optimization | Helping you reduce your AWS costs for your workloads. | |
Elastic Load Balancing | Increasing the availability and fault tolerance of your applications. |
Use
You should now have a clear understanding of each AWS compute 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 compute services, we have provided a pathway to learn how each of the services work. The following section provides links to in-depth documentation, hands-on tutorials, and resources to get you started.
Amazon EC2
Tutorial: Get started with Amazon EC2 Linux instances Use this tutorial to get started with Amazon EC2. You'll learn how to launch, connect to, and use a Linux instance. |
Tutorial: Get started with Amazon EC2 Windows instances Use this tutorial to get started with Amazon EC2. You'll learn how to launch, connect to, and use a Windows instance. |
Amazon EC2 instance types This guide will give you an overview of the various families of EC2 instance types and discuss the appropriate application for each family. |
Get Started with Amazon EC2 Graviton instances This guide will help you get started with Amazon EC2 Graviton instances and provides steps-by-step instructions to migrate your workload to Graviton. |
Container services
Getting started with AWS Batch – Amazon EC2 In this tutorial, you will set up an AWS Batch compute environment using Amazon EC2 orchestration. |
Getting started with AWS Batch - Fargate In this tutorial, you will set up an AWS Batch compute environment using AWS Fargate. |
Getting started with AWS Batch - Amazon EKS In this tutorial, you will set up an AWS Batch compute environment using Amazon EKS. |
AWS Batch Deep Dive workshop This workshop provides a deep dive into the basic concepts and use of AWS Batch. |
Serverless
AWS Fargate for Amazon ECS Understand the basics of AWS Fargate, a technology that you can use with Amazon ECS to run containers without having to manage servers or clusters of Amazon EC2 instances. |
Learn how to create an Amazon ECS Linux task for the Fargate launch type Get started with Amazon ECS on Fargate by using the Fargate launch type for your tasks in the Regions where Amazon ECS supports AWS Fargate. |
Creating a cluster with a Fargate Linux task using the AWS CLI Learn how to set up a cluster, register a task definition, run a Linux task, and perform other common scenarios in Amazon ECS with the AWS CLI. |
On-premises and hybrid
Get started with AWS Outposts This guide will demonstrate how to order AWS Outposts and launch an Amazon EC2 instance on your on-premises network. |
Planning an AWS Outposts implementation In this free AWS Skill Builder course, you learn about implementation planning for AWS Outposts, including security responsibilities, facilities requirements, networking requirements, and where to deploy your code. |
AWS Outposts Rack FAQs Dive deep into AWS Outposts Rack by reviewing the FAQ. |
AWS Outposts Server FAQs Dive deep into AWS Outposts Servers by reviewing the FAQ. |
Cost and savings optimization
Get started with AWS Savings Plans This guide will walk you through enabling your settings and permissions in Cost Explorer before using the AWS Billing and AWS Cost Management Console to view, analyze, and manage your Savings Plans. |
Blog post: Getting Started with AWS Savings Plans This post covers how you can use the AWS Cost Management product suite to purchase, manage, and monitor Savings Plans. |
Savings Plans FAQ Dive deep in to the details of AWS Savings Plans FAQ by reviewing the FAQ. |
AWS cost management decision guide Get what you need to decide how best to optimize AWS costs. |
Elastic Load Balancing
Get started with Application Load Balancers This tutorial provides a hands-on introduction to Application Load Balancers through the AWS Management Console, a web-based interface. |
Getting started with Network Load Balancers This tutorial provides a hands-on introduction to Network Load Balancers through the AWS Management Console, a web-based interface. |
Getting started with Gateway Load Balancers In this tutorial, you’ll implement an inspection system using a Gateway Load Balancer and a Gateway Load Balancer endpoint. |
Explore
Architecture diagrams Explore reference architecture diagrams for compute on AWS. |
Whitepapers Explore whitepapers to help you get started and learn best practices for compute services and use cases. |
AWS Solutions Explore vetted solutions and architectural guidance for common use cases for compute. |
---|