TUTORIAL 2023 AWS ECS para Principiantes todo lo que debes saber.


 

 

Que es AWS ECS

Este servicio es un clúster que manejas dockers  totalmente de amazon y con la capacidad de adaptarse y comunicarse con varios otros servicios de AWS, es muy simple comparado con otros clusters como EKS (kubernetes) pero es bastante potente también. 

Lo primero que debemos entender es (que es un cluster)

porque al final ECS es un cluster administrado parcialmente por AWS donde tú puedes desplegar aplicaciones y hacer procesos finitos con pocos comandos usando docker como base para tus procesos

Que es UN CLÚSTER

 un cluster es un sistema capaz de administrar recursos de hardware, este sistema es capaz de tomar varios ordenadores, máquinas virtuales o instancias de ec2 (el caso de ecs) y administrar como se usan sus recursos de hardware, para así resolver tareas o procesos. Al final el usuario o el programador de la tarea percibe el servicio como si fuese una sola máquina y por dentro el cluster está resolviendo las tareas usando todos los procesadores y memoria como mejor le parezca al sistema 

en ecs pasa algo similar, tú como consumidor de estos servicios deberás configurar cosas como cuanto procesador y memoria quieres consumir y cuantas tareas deseas agregar a la lista de tareas del cluster ecs, entonces el servicio se encargara de satisfacer tus requerimientos.

Los cluster al inicio fueron creados para realizar tareas finitas, pero ahora el cluster de aws llamado ecs es capaz no solo de hacer tareas que tengan un tiempo definido, sino que ahora pueden sostener procesos como servicios, ejemplo una web, un api o mucho otros procesos infinitos.

 

ELEMENTOS DE AWS ECS


 

AWS ECS Container Definition.

Este es un elemento muy pequeño, pero importante de AWS ECS es donde defines todo lo que va a tener el Docker, se confunde mucho con el Task Definition

En la consola de AWS puedes definir un container desde la misma pantalla del Task definition, pero son diferentes, tú puedes declarar muchos containers dentro de un task, la data que configuras es específica de DOCKERS nombre de imagen, puntos de monturas, cpu y memoria... y mucho más.

Es oportuno comentar que dentro del docker que defines en el container definition está tu código de la aplicación, en otras palabras tú creas un docker y como funciona luego lo defines en un container definition qué posteriormente será usado por un task definition


AWS ECS Task Definition

Este elemento es un documento que define como se va a realizar una tarea o como se va a desplegar un docker al final es un json que tendra definido hasta 10 container definition más otras configuraciones tales como cpu global, ram global para todos los container dentro de este task, temas de redes y roles de aws entre otros.

Un task definition por si solo puede ser tomado por ecs para lanzar en ejecución haciendo que todas las configuraciones de docker se desplieguen y funcionen igual que con un ecs service, pero teniendo pequeñas diferencias, ya que un servicio tiene ciertas configuraciones adicionales que pueden facilitar la administración de un task definition.

AWS ECS Service

un servicio donde puedes lanzar task definition con una configuración más persistente, ya que con el servicio puedes configurar cuantos task quieres tener vivos y el servicio en si se encarga de cumplir con tus deseos, si el task falla el servicio se encargará de destruirlo y relanzarlo también se encarga de conectarse con otros servicios de AWS tales como autoscaling y/o balanceadores de cargas

 

TIPOS AWS ECS

hay 3 tipos de ECS, pero antes de comentarlo también debes saber que puedes crear ecs por sistemas operativos es decir puedes crear para windows y linux.

ecs con ec2

este es un cluster donde se le configura instancias ec2 de forma tradicional donde tú puedes manualmente o de forma automática adjuntarle instancias ec2

ecs con spot

este es un cluster donde se le configura instancias de spot,   spot son instancias que puedes rentar, pero a un precio más bajo debido a que son tiempos muertos de amazon. no quiero profundizar en esta tecnologia porque no es parte del objetivo de este apartado. pero si puedes configurar una instancia spot para que se agregue a tu lista de recursos dentro de ECS, pero con pequeñas limitaciones así que te recomiendo para ambientes no productivos, así ahorras dinero, pero no tendrás problemas con las limitaciones.

ecs con fargate

 fargate es una forma de tener un cluster sin servidores, el concepto serveless en su maxima expresion, al configurar tu ecs como fargete todo cambia, en especial la forma de cobro que amazon tiene para estos servicios.

Pero a nivel técnico tú como consumidor de este servicio dejas de configurar las instnacias, ya que este servicio se configura para que tú solo lances tus aplicaciones y proceso y amazon se encarga de ver donde él va a lanzar lo que tú deseas. 

Este tipo de ecs tiene limitaciones que no será abordada en este artículo, por eso te recomiendo que leas la documentación si deseas usar fargate

adicional: te recomiendo usar fargate para procesos finitos y que no usen mucho disco. Ya que disco está limitado y es mucho más caro el minuto de proceso



AWS ECS PRICING

ECS cuando usas instancias ec2 o spot no tiene mucho costo más que la suma de todo los recursos que uses, es decir configurar un ECS no tiene costo, te cobraran como siempre las instancias que uses y también los recursos que formen parte de tu infraestructura

el precio de AWS ECS Fargate si cambia, ya que hay un costo de consumo por la cantidad de procesador y memoria que uses y también  le tienes que sumar todo lo que uses adicional a la infra

 

AWS ECS Project

aws ecs para microservicios

usar este cluster para microservicios es genial, es unos de mis favoritos para este caso, porque ecs es muy sencillo para tener y desplegar tu microservicio sin importar el lenguaje así que te lo recomiendo si tienes un set de micro pequeños y puedes rápidamente aprovisionar tus micro y adicionarle cosas como api gateway, aws cloud watch, autoscaling y balanceadores. Recuerda aws ECS está optimizado para usar servicios de AMAZON


 

BATCH en AWS ECS

esto para mí es nuevo, pero la idea es poder levantar procesos que te permitan hacer "cosas" por ejemplo procesos de transformación de data, cálculo y más cosas donde se necesite poder de cómputo, con ecs y otros servicios de amazon puedes coordinar procesos en cadenas para gestionar tareas los ejemplos que conseguir fueron más enfocados a tratamiento de imágenes y big data. Pero al final tu imaginación es el límite, son cadenas de procesos puedes gestionarlo para lo que desees.


Modelos de Aprendizaje 

big data está en evolución y AWS ECS pretende ser una respuesta, así que puedes desplegar procesos que ayuden a los modelos de aprendizaje y para el tratamiento de datas 



para que usaria aws ECS

en que escenarios podria usar ECS o me recomendarian usar ECS

bueno, ecs prácticamente puede levantar docker y es un servicio de poder de cómputo, así que prácticamente puedes levantar cualquier proceso, incluso montar una aplicación que este compuesto de montón de partes como microservicios, o hasta solo monolitos o manejadores de contenido, o cualquier aplicación web que necesite poder de cómputo. También podrías solo poner procesos que nazcan cuando se necesite un tratamiento de "algo" y mueran al final de terminar el proceso

te pongo una lista que seguro tú podrás seguir:

Usaría AWS ECS para poner mis microservicios

Usaría AWS ECS para cargar mi wordpress

Usaría AWS ECS para druppa

Usaría AWS ECS para mi base de datos (no es recomendable pero puedes)

Usaría AWS ECS para desplegar mis procesos de machine learning

Usaría AWS ECS para poner mis procesos de testing

Usaría AWS ECS para poner mi aplicación LMS

Usaría AWS ECS para poner mis aplicaciones CMS

  




Comentarios

Entradas populares de este blog

AWS SAM y AWS Lambda docker Container Image tutorial con PYTHON USANDO A...

Solucion: Docker Error: No such container:

Los unicas 4 herramientas que necesitas para volverte un master en Devops