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
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.
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
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
Publicar un comentario