Container Services on AWS
Tags: containers, aws, service, amazon
Published: 2023-09-15 20:46:39

AWS offers a broad spectrum of compute offerings, that give you the flexibility to choose the right tool for the right job. 

The **three main categories** of compute are:
- virtual machines
- containers
- serverless 

There is no one-size-fits-all service because it depends on your needs.The key is to understand what each option has to offer in order to build a more appropriate cloud architecture for your use case. Let's talk about containers first.

**WHAT ARE CONTAINERS?**
A container is a standardized unit that packages up your code and all of its dependencies. This package is designed to run reliably on any platform, because the container creates its own independent environment. This makes it easy to carry workloads from one place to another, such as from development to production or from on-premises to the cloud. e.g. Flutter/VCS on Github.


**WHAT IS DOCKER?**
You will get to hear about the **docker** along with the container very often. Docker is a popular **container runtime** that simplifies the management of the entire operating system stack needed for container isolation, including networking and storage. Docker makes it easy to create, package, deploy, and run containers.

AWS offers two container orchestration services: 
- Amazon Elastic Container Service (ECS) 
- Amazon Elastic Kubernetes Service (EKS)

**MANAGE CONTAINERS WITH AMAZON ELASTIC CONTAINER SERVICE (AMAZON ECS)**
Amazon ECS is an end-to-end container orchestration service that allows you to quickly spin up new containers and manage them across a cluster of EC2 instances. Have a look at the illustration, given below:


![AMAZON ECS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a7dbwx7pgnnu36xx7u0p.png) 

If you want to use ECS Service, you simply need to install this agent in your EC2 instance. You can run this agent on both Linux and Windows AMIs (Amazon Machine Image). An instance with the container agent installed is often called a container instance.

**USE KUBERNETES WITH AMAZON ELASTIC KUBERNETES SERVICE (AMAZON EKS)**
Kubernetes is a portable, extensible, open source platform for managing containerized workloads and services. By bringing software development and operations together by design, Kubernetes created a rapidly growing ecosystem that is very popular and well established in the market. 

If you are familiar with Kubernetes, you can use **Amazon EKS** to orchestrate these workloads in the AWS Cloud. Amazon EKS is conceptually similar to **Amazon ECS**, but there are some differences.

- An EC2 instance with the ECS Agent installed and configured is called a **container instance**. In Amazon EKS, it is called a **worker node**.
- An ECS Container is called a **task**. In the Amazon EKS ecosystem, it is called a **pod**.
- While Amazon ECS runs on **AWS native technology**, Amazon EKS runs on **top of Kubernetes**.

**WHAT ARE SERVERLESS COMPUTE?**
Amazon offer some services that are completely managed by user and some services that are some how abstracted from a user, these services only contains the action to perform not the complete insides like networking capacity, scalability. Amazon manage these things itself, these type of abstract services are called as **Serverless computing**.

**Example:** EC2 is a virtual server but amazon lambda is serverless.

Remember, EC2 is a virtual server so it cannot provide severless services. We can use **Amazon Fargate** with Amazon ECS and Amazon EKS as a serverless service. So, no need to manage elasticity, scalability e.t.c