A thorough review of Amazon Web Services (AWS) containerization offering - which promises to simplify infrastructure management.
In a forecast for container management, Gartner has noted that worldwide container management revenue will grow from $465.8 million in 2020 to $944 million in 2024. Among other things, the forecast points out that container orchestration and serverless offerings will experience significant growth.
Containerization involves bundling software code and all its dependencies such that it can run anywhere on any infrastructure. By decoupling applications from their operating systems, containers enable fast and consistent deployments irrespective of the environment. Several container orchestration solutions like Kubernetes or Amazon Elastic Container Service (ECS) facilitate containers’ working together.
While both containers and serverless involve less overhead and offer greater flexibility than VMs, serverless tends to be highly scalable and far cheaper. Hosted by third-party vendors, serverless technology allows developers to bypass infrastructure management and focus purely on developing their application.
Speaking at Re: Invent 2019, Archana Srikanta, founding engineer and a technical lead who led the end-to-end delivery of the AWS Fargate project, said customers wanted to run containers, yet they didn’t want to manage the EC2 instances and the underlying infrastructure. All they cared about was their application. “So, we launched AWS Fargate, which removes the need for you as the customer to have to run your own EC2 instances. You can just launch containers, and they’re completely hosted and managed by AWS products.”
Essentially, AWS Fargate is a serverless engine that can be used with both ECS and EKS to deploy containers. With AWS Fargate, there is no added headache of having to provision, scale, and patch clusters of servers as in EC2. All you have to do is register your task definition (where you specify CPU/memory and define IAM and networking policies) and Fargate will launch the container for you.
Srikanta said since “Fargate is fully integrated into the AWS ecosystem, all the features that customers have used with EC2 instances such as VPC networking, elastic load balancing, IAM permissions, CloudWatch monitoring are now available to customers at the container level.”
Fargate provides the right allocated amount of computing. Its flexible configuration options allow you to specify the resource requirement without having to provision and manage servers. It also lets you pay per application to run your container.
Application isolation serves as a bonus to the otherwise improved security of AWS Fargate. In the secure isolation of AWS Fargate, each ECS task or EKS pod runs in their individual kernel compute environment without sharing any underlying resources, including CPU, memory, storage, or network interface. This isolation allows developers to have workload isolation for their applications.
Fargate’s latest platform, version 1.4.0, has introduced some impressive capabilities. They are:
Elastic File System (EFS) is a scalable, elastic cloud-native shared file system that provides persistent storage capabilities. The new platform version supports EFS, due to which customers can now start running stateful workloads, which was not possible before.
Earlier, there were two temporary local volumes—4GB and 10GB. The new platform has combined these into a single larger 20GB volume. Not only has storage capacity increased, but this also gives users the flexibility to use volume capacity as per their needs.
In older versions, AWS Fargate ENIs controlled networking traffic flows. With platform version 1.4.0, traffic will now flow through the task ENIs affording customers more control and visibility over traffic flows.
In the latest version, Containerd, a simple runtime has replaced Docker Engine. As AWS Fargate already provides most of the functionality natively, it doesn’t need the advanced functionalities of Docker.
Less Complexity: Fargate only requires you to focus on building and designing applications. Since Fargate service manages the container parameters and infrastructure requirements, it does away with the complexities of picking instance types, managing cluster scheduling, or cluster optimization.
Improved Security: In Fargate, tasks run in their kernels that are entirely isolated from the underlying infrastructure. All you need to do is embed security within your container, and your IT infrastructure is protected through the secure isolation of Fargate.
Easy Scaling: Fargate makes for easy scaling. Once you define your application requirements, Fargate scales your containers without you having to worry about provisioning and configuring compute resources.
Can Have Lower Costs: Fargate is cost-effective as you only pay for what your task uses and not for unused instances.
Application Observability: Through the built-in integrations with AWS services like Amazon CloudWatch Container Insights, Fargate enables you to use third-party tools to monitor your applications.
Although AWS Fargate provides support for all common container use-cases such as microservices architecture applications, shell script batch processing, and machine learning applications, it is more valuable for the following use-case scenarios:
Fargate is a powerful serverless service with tons of features that provides users’ more hands-off managed experience. However, the moot question is not which service is more powerful; instead, it is about which service is the right one for you?
Before opting for Fargate or other AWS offerings, you need first to understand the project requirements and, depending on that, choose a service that meets your business needs.