Do you love containers but hate managing the infrastructure that they run on? If so, AWS Fargate may be for you.
On the other hand, Fargate isn’t the only way to simplify infrastructure management for containers. Depending on your exact requirements, you may be better off taking advantage of one of AWS’ other solutions for infrastructure management.
Keep reading for a dive into what Fargate does, and why you may or may not want to use it.
What Is AWS Fargate?
Fargate is an optional way to deploy containers on both Elastic Kubernetes Service (EKS) and Elastic Container Service (ECS), the two managed container services in the AWS cloud.
When you use Fargate to deploy containers on EKS or ECS, Fargate automates most of the work required to set up and manage the host infrastructure. More specifically, Fargate automatically provisions host servers (or nodes), and scales them up or down in number to accommodate shifts in demand for your application.
AWS calls Fargate a “serverless compute engine.” It is, in the sense that Fargate eliminates the need to manage servers when deploying containers in the AWS cloud.
What Problems Does AWS Fargate Solve?
The main problem that Fargate solves is the challenge of managing infrastructure to host containers.
Modern container tooling already solves most of the other pain points associated with deploying and managing containerized applications. You can use continuous integration/continuous delivery (CI/CD) software to build containers automatically. You can manage container images in a streamlined way with container registries. You can orchestrate container instances, balance loads and automate other orchestration tasks using Kubernetes.
The one thing that standard container platforms don’t do, however, is set up the host infrastructure for you, or scale that infrastructure up and down as your load fluctuates.
With Fargate, you can deploy containers without worrying about the underlying infrastructure. You simply load your container images into either EKS or ECS, and Fargate runs them. The infrastructure is managed for you, automatically.
Do You Have to Use Fargate to Use EKS or ECS?
As noted above, Fargate is an optional deployment mode for EKS and ECS. You can use it if you use one of these services, but you don’t have to.
EKS and ECS both work perfectly fine without Fargate. You just need to manage the host infrastructure yourself in that case – usually, at least.
I say “usually” because AWS provides two other features that help automate container infrastructure management independent of Fargate:
- Managed node groups, a feature in EKS that auto-provisions nodes for you.
- Cluster autoscaling, a feature available in both ECS and EKS that adds or removes servers from your container environment automatically in response to changes in load.
Like Fargate, both of these features are optional. But when enabled, they more or less serve as alternatives to Fargate because they automate most infrastructure-related management tasks.
Fargate vs. Managed Node Groups vs. Autoscaling
That said, there are subtle differences between Fargate, managed node groups and autoscaling.
The main reason to choose Fargate over the other two solutions is simplicity: Fargate requires almost no configuration. With the other features, you have to do more work to tell AWS how to manage your nodes.
On the other hand, the trade-off for simplicity is less control. With Fargate, you hand over infrastructure management totally to AWS. You can’t set parameters that define when or how often your servers are scaled.
When AWS Fargate Isn’t an Option
Note, too, that in some use cases Fargate is simply not an option. It’s not available in all AWS regions. In addition, Fargate is not currently supported on AWS Outposts or EKS Anywhere, Amazon’s hybrid cloud services.
Depending on your AWS configuration, then, you may need to run ECS or EKS without the help of Fargate.
So, Who Needs Fargate?
For most people, however, AWS Fargate is a handy way to minimize the effort required to run containers in the Amazon cloud. But the major trade-off is control over your host infrastructure. If you want full control over how your infrastructure is provisioned and scaled, use ECS or EKS in standard mode. Alternatively, if you want some help managing infrastructure but don’t want to go as far as Fargate, consider autoscaling or managed node groups instead.