Thursday, January 5, 2023

Amazon Elastic Container Service (Amazon ECS)

 Amazon Elastic Container Service (Amazon ECS)

What does Amazon ECS do?

Amazon ECS is a fully managed container service. Customers can use it to deploy, run, and manage containerized applications. Amazon ECS can run containers on clusters of Amazon Elastic Compute Cloud (Amazon EC2) instances and on the AWS Fargate serverless compute engine.


What else can Amazon ECS do?
  • Amazon ECS can also run containers on customer-owned hosts outside of Amazon Web Services (AWS) Regions. 
  • Amazon ECS manages the complete lifecycle of containers. This includes scheduling containers on compute, allocating resources, upgrading containers, and auto scaling containers to meet increased demand. To comprehensively address all the needs of containerized applications
  • Amazon ECS seamlessly integrates with several AWS services. These include Elastic Load Balancing (ELB), Amazon CloudWatch, and AWS Identity and Access Management (IAM).


The following diagram depicts, at a high level, how Amazon ECS works.



Amazon ECS is a fully managed container orchestration service that helps you deploy, manage, and scale containerized applications. It deeply integrates with the rest of AWS to provide a secure and streamlined solution for running container workloads in the cloud.


What other containers on compute services can I launch?

In the diagram, notice that you can build images and store them using Amazon Elastic Container Registry (Amazon ECR) or any other repository. Then, using Amazon ECS, you can define your application and select the container images and resources that are needed for your application.
To launch containers on supporting compute services, you can configure various options.

FARGATE 

serverless container compute engine where you pay only for the resources that are required to run your containers. This is suited to customers who do not want to worry about managing servers, handling capacity planning, or figuring out how to isolate container workloads for security.

AWS REGIONS

Named sets of AWS resources that are in the same geographical area. A Region comprises at least two Availability Zones.


AWS Local Zones


An extension of a Region. Again, these are suited to customers who need the ability to place resources in multiple locations closer to end users.


AWS Wavelength


Ultra-low-latency mobile edge computing. This is suited to 5G applications, interactive and immersive experiences, and connected vehicles.


AWS Outposts


A family of fully managed solutions delivering AWS infrastructure and services to virtually any on-premises or edge location for a truly consistent hybrid experience.


Amazon ECS Anywhere

Amazon ECS Anywhere helps customers launch containers on their self-managed compute outside of AWS.

EC2 Instances

The widest choice of instance type, including processor, storage, and networking. These are ideal for customers who want to manage or customize the underlying compute environment and host operating system (OS).

After you create and configure your containers, you can use Amazon ECS to manage them. It scales your application and manages your containers for availability.


What problems does Amazon ECS solve?

Customers are increasingly using containers to build modern applications because containers are a portable format that includes all the dependencies that an application needs. However, as customers build more and more applications using containers, they encounter the following container management challenges, which are addressed by Amazon ECS.


Container scheduling

How will customers run hundreds or thousands of containers while ensuring cost-efficient use of compute

Container lifecycle management 

As an application evolves, how can customers replace old versions of containers with new ones, without incurring downtime? If a container crashes, how can they detect and replace it?

Container runtime needs 

Containerized applications often need services such as load balancers, service discovery, auto scaling, and handling of sensitive secrets. How do customers address these needs across several containerized applications?

What are the benefits of Amazon ECS?

Fully Managed Control plane 


Amazon ECS is a fully managed container service, and customers don’t need to worry about managing any middleware software.

Fargate serverless compute engine integeration


Amazon ECS has seamless integration with Fargate, the serverless compute engine. When they use Amazon ECS with Fargate, customers don’t need to manage any container hosts. Additionally, with Fargate, each containerized task runs in its own dedicated virtual machine (VM), which provides enhanced isolation and security by design.

Native Integerations with valuable AWS services and capabilties

Amazon ECS has native integrations with AWS services or capabilities such as the following:

  • ELB
  • CloudWatch
  • AWS Cloud Map
  • AWS Secrets Manager
  • Parameter Store, a capability of AWS Systems Manager
  • AWS CodeDeploy
  • Amazon ECR

By using Amazon ECS native integrations, containerized applications can take advantage of these AWS services or capabilities. 


Proven Performance and scale 


Amazon ECS has a proven track record of running large-scale, mission-critical applications for customers across all industries.



Powerful Simplicity


The powerful simplicity of Amazon ECS means that you can grow from a single Docker container to managing your entire enterprise application portfolio. Run and scale your container workloads across Availability Zones, in the cloud and on premises, without the complexity of managing a control plane or nodes.


No Charge 


Amazon ECS is a no-charge service. Customers pay only for the resources and other services that are used to run the containers.


How much do services or resources related to Amazon ECS cost?

Amazon ECS is a purpose-built service to help you run your architecture in an efficient, automated, and scalable manner. It has no additional charge. You do pay for AWS resources, such as EC2 instances or Amazon Elastic Block Store (Amazon EBS) volumes, that you create to store and run your application. However, you pay only for what you use as you use it, with no minimum fees or upfront commitments.

There are two different charge models for Amazon ECS:

  • Amazon EC2 launch-type model
  • Fargate launch-type model
How is Amazon ECS used to architect a cloud solution?

Developers and platform operators are modernizing applications by deconstructing monolithic architectures and migrating application components into container–based, service-oriented, and microservices architectures. Modern applications help improve scalability, reliability, and development efficiency because smaller, more focused teams can own the services.



What are the basic technical concepts of Amazon ECS?

Creating an Amazon ECS Cluster


How do I manually create an Amazon ECS instance in the console?
In the following demonstrations, you will launch and interact with the basic components required to use Amazon ECS. You will perform the following activities by completing the demonstrations in this course:
  • Create an Amazon ECS cluster.
  • Configure a task definition for your Amazon ECS cluster
  • Set up load balancing
  • Tear down the resources you configured.
Creating an Amazon ECS service using the Amazon EC2 launch type
The Amazon EC2 launch type is useful for large workloads that need to be optimized for price. In the demonstration that follows this section, you will configure a cluster using the Amazon EC2 launch type.
When you’re considering how to model task definitions and services using the Amazon EC2 launch type, it helps to think about what processes need to run together and how to scale each component.
As an example, imagine an application that consists of the following components:

  • A frontend service that displays information on a webpage
  • A backend service that provides APIs for the frontend service
You should create task definitions that group the containers that are used for a common purpose and separate the different components into multiple, separate task definitions. The following example cluster has three container instances registered with three frontend service containers, two backend service containers, and one data store service container.


You can group related containers in a task definition, such as linked containers that must be run together. For example, you could add a log streaming container to your frontend service and include it in the same task definition.
After you have your task definitions, you can create services from them to maintain the availability of your desired tasks. In your services, you can associate containers with ELB load balancers. When your application requirements change, you can update your services to scale the number of desired tasks up or down, or to deploy newer versions of the containers in your tasks.
Amazon ECS manages how your containers run, but you still need a compute layer. AWS gives you a range of integrated compute options for where that happens. You can choose the right tool for the job to get the right blend of cost, performance, and features.

Amazon-ecs-bestpractices-guide

No comments: