AWS Compute Blog
AWS Fargate: A Product Overview
It was just about three years ago that AWS announced HAQM Elastic Container Service (HAQM ECS), to run and manage containers at scale on AWS. With HAQM ECS, you’ve been able to run your workloads at high scale and availability without having to worry about running your own cluster management and container orchestration software.
Today, AWS announced the availability of AWS Fargate – a new compute engine that enables you to use containers as a fundamental compute primitive without having to manage the underlying instances. With Fargate, you don’t need to provision, configure, or scale virtual machines in your clusters to run containers. Fargate can be used with HAQM ECS today, with plans to support HAQM Elastic Container Service for Kubernetes (HAQM EKS) in the future.
Fargate has flexible configuration options so you can closely match your application needs and granular, per-second billing.
HAQM ECS with Fargate
HAQM ECS enables you to run containers at scale. This service also provides native integration into the AWS platform with VPC networking, load balancing, IAM, HAQM CloudWatch Logs, and CloudWatch metrics. These deep integrations make the HAQM ECS task a first-class object within the AWS platform.
To run tasks, you first need to stand up a cluster of instances, which involves picking the right types of instances and sizes, setting up Auto Scaling, and right-sizing the cluster for performance. With Fargate, you can leave all that behind and focus on defining your application and policies around permissions and scaling.
The same container management capabilities remain available so you can continue to scale your container deployments. With Fargate, the only entity to manage is the task. You don’t need to manage the instances or supporting software like Docker daemon or the HAQM ECS agent.
Fargate capabilities are available natively within HAQM ECS. This means that you don’t need to learn new API actions or primitives to run containers on Fargate.
Using HAQM ECS, Fargate is a launch type option. You continue to define the applications the same way by using task definitions. In contrast, the EC2 launch type gives you more control of your server clusters and provides a broader range of customization options.
For example, a RunTask command example is pasted below with the Fargate launch type:
aws ecs run-task --launch-type FARGATE --cluster fargate-test --task-definition nginx --network-configuration
"awsvpcConfiguration={subnets=[subnet-b563fcd3]}"
Key features of Fargate
Resource-based pricing and per second billing
You pay by the task size and only for the time for which resources are consumed by the task. The price for CPU and memory is charged on a per-second basis. There is a one-minute minimum charge.
Flexible configurations options
Fargate is available with 50 different combinations of CPU and memory to closely match your application needs. You can use 2 GB per vCPU anywhere up to 8 GB per vCPU for various configurations. Match your workload requirements closely, whether they are general purpose, compute, or memory optimized.
Networking
All Fargate tasks run within your own VPC. Fargate supports the recently launched awsvpc networking mode and the elastic network interface for a task is visible in the subnet where the task is running. This provides the separation of responsibility so you retain full control of networking policies for your applications via VPC features like security groups, routing rules, and NACLs. Fargate also supports public IP addresses.
Load Balancing
ECS Service Load Balancing for the Application Load Balancer and Network Load Balancer is supported. For the Fargate launch type, you specify the IP addresses of the Fargate tasks to register with the load balancers.
Permission tiers
Even though there are no instances to manage with Fargate, you continue to group tasks into logical clusters. This allows you to manage who can run or view services within the cluster. The task IAM role is still applicable. Additionally, there is a new Task Execution Role that grants HAQM ECS permissions to perform operations such as pushing logs to CloudWatch Logs or pulling image from HAQM Elastic Container Registry (HAQM ECR).
Container Registry Support
Fargate provides seamless authentication to help pull images from HAQM ECR via the Task Execution Role. Similarly, if you are using a public repository like DockerHub, you can continue to do so.
HAQM ECS CLI
The HAQM ECS CLI provides high-level commands to help simplify to create and run HAQM ECS clusters, tasks, and services. The latest version of the CLI now supports running tasks and services with Fargate.
EC2 and Fargate Launch Type Compatibility
All HAQM ECS clusters are heterogeneous – you can run both Fargate and HAQM ECS tasks in the same cluster. This enables teams working on different applications to choose their own cadence of moving to Fargate, or to select a launch type that meets their requirements without breaking the existing model. You can make an existing ECS task definition compatible with the Fargate launch type and run it as a Fargate service, and vice versa. Choosing a launch type is not a one-way door!
Logging and Visibility
With Fargate, you can send the application logs to CloudWatch logs. Service metrics (CPU and Memory utilization) are available as part of CloudWatch metrics. AWS partners for visibility, monitoring and application performance management including Datadog, Aquasec, Splunk, Twistlock, and New Relic also support Fargate tasks.
Conclusion
Fargate enables you to run containers without having to manage the underlying infrastructure. Today, Fargate is availabe for HAQM ECS, and in 2018, HAQM EKS. Visit the Fargate product page to learn more, or get started in the AWS Console.
–Deepak Dayama