As cloud vendors vie for market share, Amazon Web Services seems to be winning the battle for cloud computing in terms of annual revenue.

_Data source: _Canalys

However, choosing a vendor to move into the cloud with is just half the battle. The other half involves deciding which service best fits your specific application. Your choices range all the way from Infrastructure-as-a-Service (IaaS) to Functions-as-a-Service (FaaS). Ultimately, it comes down to whether you want to go down the route of serverless applications, or make use of containers — or even implement a hybrid architecture.

In terms of compute services, Amazon EC2AWS Fargateand AWS Lambda are the popular choices in the paradigms of IaaS, CaaS, and FaaS respectively.

If these three services were to be put on a spectrum, where one end of the spectrum was containers and the opposite end was serverless, AWS Fargate would sit in between both of them. This is because AWS Fargate is a serverless container and can also be defined as a CaaS service.

So let us dive into these services, to understand what they have to offer.

AWS Containers in the Cloud

In 2014, following the success of Kubernetes, AWS launched its own container management service called Amazon Elastic Container Service (Amazon ECS) — allowing you to manage the orchestration of your Amazon Elastic Compute Cloud (Amazon EC2) instances. Since then, we have seen an increase in the interest of EC2 containers. So what was the big deal with ECS and EC2?

Firstly, ECS is simply a container orchestration service. It allows you to visualize EC2 containers in the form of tasks, where a single task is one or more EC2 instances that already have Docker installed in them. Each EC2 instance with Docker then communicates with the AWS backend. Several EC2 instances forming a cluster will run within the ECS auto-scaling groups, with scaling rules that you define. That means the ECS Container Agent is continuously polling the ECS API, to check which containers need to be stopped or run according to the task requirements. All of this seems alluring, but the problem is that you still have to manage each EC2 instance — and this is where the difficulties begin.

EC2 orchestration, just like any other container orchestration, is a daunting task; giving AWS Lambda the upper hand in this aspect. Even though ECS makes it easier to manage tasks, you still have to perform management on the container level. You still have to manage scaling, monitoring, securing, networking, and other operational issues of the EC2 instances. The management at the container level not only makes using containers an operational burden, but also vulnerable security-wise and unreliable performance-wise.

#cloud services #serverless #contributed #sponsored

A 2020 Guide to Computing on Amazon Web Services
1.40 GEEK