At re:Invent this week, AWS announced a ton of cool things. You should check out their page on it for an overview of all the new stuff they’re doing -- it’s a lot, and a lot of it seems pretty immediately useful. My colleague Kelly Andrews did a writeup here with a particularly musical take on the full announcement, if you’d like to know more.
Two things that jumped out to a lot of us in the CI/CD and operations space were Kubernetes support on ECS (which they’re referring to as EKS) and a new service named AWS Fargate.
Because AWS infrastructure stacks and services can already be a bit confusing and sometimes overlap -- and because we use AWS and so do many teams using Codeship -- we wanted to take a few minutes to discuss these two new options and how you may want to use them.
EKS Is ECS for Kubernetes
When AWS announced Kubernetes support for ECS (which now stands for Elastic Container Service rather than EC2 Container Service -- who knew!), they decided to also give it a separate name. So Amazon Elastic Container Service for Kubernetes, EKS for short, is the ECS equivalent for running managed Kubernetes natively on your AWS cloud.
This is very cool, because managed Kubernetes up until now has been offered by Google Cloud and more recently by Microsoft Azure, but not in AWS-world, which made Kubernetes adoption more painful for teams already built out and invested in the AWS ecosystem.
If you’ve been thinking about adding Kubernetes to your stack and you use AWS, it’s most likely now a much easier choice. And if you’re already running Kubernetes on AWS, you can likely put in some work to get EKS working (once it’s broadly available) to simplify your overhead.
Fargate Removes the Machines (But Not for EKS Yet)
Next up is AWS Fargate. This new service should solve a huge source of frustration for teams built out on ECS.
If you’ve used ECS, you know it manages your container clusters on top of your EC2 infrastructure in a way that greatly simplifies scalability and operational control. What it doesn’t do, though, is manage the actual EC2 fleet you’re running that cluster on.
Up until now, you’ve needed to manually provision and maintain the fleet to run ECS on top of it, which can mean a lot of dealing with machine setup and (particularly with AWS) user policy issues.
Fargate removes all of this overhead, making the need to configure machines completely invisible. They’ll provide somewhere around 50 different machine configuration defaults and bill you based on what your application requests, per second -- and that’s it.
Building out your own EC2 fleet will still give you significantly more options and more control, but if you don’t actually need to customize the machines too much, then Fargate will let you natively tell ECS what type of machines to spin up -- on demand, as needed -- and let you move on with your life.
One note, though, is that Fargate will not be available with EKS (the ECS for Kubernetes mentioned above), at least not initially.
Is Fargate a Lambda?
Fargate may sort of feel like a Lambda or serverless technology, since it has the same pay-per-usage pricing model those services have popularized. However, Fargate is not a stateless function-as-a-service provider but rather a resource abstraction and management layer for ECS (and presumably other services down the road.)
Fargate’s end goal is to simplify using tools like ECS and increase your ability to focus only on your development, taking one more layer of management away.
!Sign up for a free Codeship Account
So Should You Use These Services?
While AWS can often be a bit of a muddle to understand, fortunately the rubric here is not too complicated.
If you want to use Kubernetes on AWS or are currently using it, you should probably use EKS since it will simplify and automate the hardest parts of Kubernetes while adding in all the great features of ECS.
If you are using ECS and hate managing machines, you should use Fargate. It will take EC2 fleet management out of your life.
If you’re using Kubernetes on AWS or want to, and you also hate machine management…then you’re out of luck for now. EKS will require you to manage EC2 fleets like ECS always has, since Fargate is not available for EKS just yet.
With EKS and Fargate, AWS is expanding what they simplify for you. This is great to see, as they make it even simpler and more cost-effective to load a wider variety of container-driven workflows while reducing the operational overhead even further.