Use the Aws container services in best way possible
Tags: aws, cloud, cloudskills, kubernetes
Published: 2022-01-24 17:45:43


AWS container services makes it easier for us to manage our underlying infrastructure whether its is on premises or in the cloud so that we can focus on development and innovation.
AWS claims that around 80% of all containers running on the cloud runs on AWS container service which is amazing and we can say that AWS container service is scalable, reliable and secured environment for our business needs as due to large customer base it gives us economies of scale i.e. lower cost.
Now lets look at the different container services, their use case and when to use which?

### For On premises 

##1. Amazon ECS anywhere
Amazon Elastic compute service (ECS) helps you managing and running  the container workloads in the customer-managed infrastructure(on-premises) of customer.
With ECS anywhere, you get the ease and simplicity of Amazon ECS which provide consistent tooling and API experience across you container-based application
###Working 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wm5ap0z0rqwwgk6njxqs.png)
 
**Use cases**:
- Containerize existing on-premises workloads
- Fulfill you compliance and business requirements
- Use cloud as needed(You can burst to cloud for additional capacity to meet peaks in demand)
- Leverage existing capital investment while taking advantage of cloud.

##2. Amazon EKS Anywhere
It is deployment option which lets you create and operate kubernetes clusters on your own infrastructure. It is build on the top of Amazon EKS Distro which is the same Kubernetes distributin that powers Amazon EKS on AWS.
We can start using Amazon EKS Anywhere on our on-premised infrastructure using VMware vSphere with support for other deployments 
options coming soon.
### Working 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5u45stosc74by0mh13t9.png)
 
**Use Cases:**
- Consistent and reliable
- Its simplifies on-premised Kubernetes management
- Modernize your on-premises applications
- Data Sovereignty(Trusted Amazon EKS Kubernetes distribution and tools to let you choose location of data)

###Contaier Orchestration

##1. ECS 
Amazon’s Elastic Container Service is a Kubernetes alternative, and is what I’d go for if I didn’t need to run Kubernetes itself.  In simples words we can say that Amazon ECS is a fully managed container orchestration service that makes it easy for you to deploy, manage, and scale containerized applications.
###Working
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wzqvclwv4awcpnpbvxba.png)
 
**Use Cases/Benefits:**
- Deploy across hybrid environment
- Automatically Scale and run Web Apllications in multiple Availabilty zones.
- Support Batch processing as it plans, schedule and execute batch computing workloads
- Save up to 50 percent on compute costs with autonomous provisioning, auto-scaling, and pay-as-you-go pricing.

##2. EKS
Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that you can use to run Kubernetes on AWS without needing to install, operate, and maintain your own Kubernetes control plane or nodes.
It runs and scales the Kubernetes control plane across multiple AWS Availability Zones to ensure high availability.
###Working 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1lqxplf1yalt3uy9d7nx.png)
 
Among various various benfits of using AKS are that its ensures a more secure Kubernetes environment with security patches automatically applied to your cluster’s control plane.
It also helps in reducing costs with provisioning compute resources efficiently.

**Use cases:** 
- Deploy across hybrid environments
- Model ML(machine learning workflows)
- Batch Processing 
- Web Applications

###Compute Options

##1. AWS Fargate
Fargate is a serverless, pay-as-you-go compute engine that lets you focus on building applications without worrying about managing servers. Its compatibility with bot ECS an EKS is big turn on for developers. 
AWS handles the scaling, placement, and underlying infrastructure issues. Given their support for Spot instances and the fact that Savings Plans now cover their usage. 
### Without Fargate V/s Using Fargate 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3qkw5bbtz0rh8siacd8z.png)
 
**Use cases:**
- Used in Web apps, API's and microservices
- No upfront cost, pay only for resources you use.
- With ECS and EKS , we can run and scale container workloads as needed.
- Support AI and ML training applications
- Migrating on-premises applications to the cloud

##2. Amazon Elastic Compute Cloud(EC2)
EC2 provides broadest and deepest instance choices to match our workloads needs.
EC2 instance is virtual server in Amazon's Elastic Compute Cloud (EC2) for running applications on the Amazon Web Services (AWS) infrastructure. We can use EC2 for general purpose, compute optimized, memory optimized, storage optimized, and accelerated computing instance that provide balance for you workloads.
Amazon EC2 provides the ability to place instances in multiple locations.

**Use Cases:**
- Hosting environments
- Development and test environments
- High performance computing
- Banking and financial sector
- Marketing and advertisement

##3. EC2 Spot instances
EC2 Spot Instances let you take advantage of unused EC2 capacity in the AWS cloud. Spot Instances are available at up to a 90% discount compared to On-Demand prices.
Various benefits of Amazon EC2 Spot instances are as follows:
-  It has low and predictable prices.
-  It offers massive scale advantage.
-  It is easy to launch, scale and manage spot instances.
###Spot Instance working 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c8cuacu54pl8bz8aygs2.png)
 
**Use Cases:**
- Big Data and Analytics
- Containerized workloads
- CI/CD and testing
- Web services
- Image and media rendering
- High performance computing 

###Tools and services with AWS Support

##1. AWS Copilot
It is a command line interface(CLI) that enable customers to quickly launch and manage containerized applications on AWS. Copilot automates each step in development lifecycle including push to registry, creating a task definition and creating a cluster.
**Benefits:**
-  It is simple yet powerful config.
- Helps us on focusing on architecture instead of wiring up the infrastructure.

##2. AWS App Runner
It is a fully managed service that makes it easy for developers to quickly deploy containerized web applications and APIs, at scale and with no prior infrastructure experience required. We can look at this diagram below how App Runner works and give us more time to focus on our applications rather that thinking about servers and scaling.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x6qinn0voretk049n0ta.png)
 
**Use Cases:**
- Frontend & backend web applications
- Microservices and APIs
- Rapid production deployments

##3. Lightsail
If you want to create a website or application in just a few clicks, this is for you. 
Amazon Lightsail offers easy-to-use virtual private server (VPS) instances, containers, storage, databases, and more at a cost-effective monthly price. 
It basically provides developers compute, storage, and networking capacity and capabilities to deploy and manage websites and web applications in the cloud. Lightsail includes everything you need to launch your project quickly – virtual machines, containers, databases, CDN, load balancers, DNS management etc.
Its main USP is that it builds applications and websites with low-cost and preconfigured cloud resources.

**Use Cases:**
- Launch simple web applications
- Create custom websites
- Build small business applications
- Spin up test environments

###Enterprise-scale container management

##1. Proton
AWS Proton is a fully managed delivery service for deploying container and serverless applications with increased efficiency, consistency, and control.
Proton was announced at re:Invent 2020. It ties together a bunch of tools that you might use to build containerized applications, with an opinionated position on how to build them.

###Working
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ar69kou3l04gaidlmxl7.png)
 
**Use Cases:**
- Streamline mangement
- Adopt infrastructure as code(IaC)
- Empower self-service development(Build a curated, self-service interface for developers)

##2. ROSA
Red Hat OpenShift Service on AWS (ROSA) provides an integrated experience to use OpenShift and ROSA comes with pay-as-you-go hourly and annual billing, a 99.95% SLA, and joint support from AWS and Red Hat. We must  use this if we are already running OpenShift in production in our on-prem environment and/or had deep expertise with OpenShift. AWS’s own marketing of this service tells a transitional story, about using this for workloads that are already using OpenShift elsewhere in the environment.
**Benefits:**
- Deliver high-quality applications Faster
- Flexible and cost Effective pricing 
- Delivers productions-ready OpenShift