Christopher Andrés Guano Valencia
jhon.ochoa
Desplegar aplicaciones modernas en la nube requiere entender cómo funcionan los contenedores y qué servicios ofrece AWS para gestionarlos. Desde el registro de imágenes hasta la orquestación automática, existe un ecosistema completo que permite escalar sin fricciones y mantener cada componente aislado e independiente.
¿Qué es Docker y por qué es la base de los contenedores?
Docker es una plataforma de desarrollo que permite empaquetar aplicaciones en unidades llamadas contenedores [0:15]. Lo más relevante es que estos contenedores se pueden ejecutar en cualquier sistema operativo, lo que elimina los problemas clásicos de compatibilidad entre entornos.
Imagina un servidor EC2 con tres contenedores: uno con Java, otro con Node.js y otro con una base de datos MySQL [0:42]. Cada contenedor es completamente independiente y aislado del resto. Esto significa que puedes actualizar o reiniciar uno sin afectar a los demás, lo cual aporta una flexibilidad enorme al momento de mantener aplicaciones en producción.
¿Dónde se almacenan las imágenes de contenedores con ECR?
Cuando necesitas un repositorio centralizado para guardar y reutilizar esas imágenes, entra en juego Elastic Container Registry (ECR) [1:22]. Este servicio permite almacenar, gestionar y desplegar imágenes de contenedores Docker desde un único lugar.
Piensa en ECR como la biblioteca central desde donde tomas cada pieza para llevarla al servidor o servicio que la requiera [2:08].
¿Cómo orquestar contenedores con ECS y EKS?
¿Qué ofrece Elastic Container Service (ECS)?
ECS es un servicio administrado de AWS que se encarga de lanzar, iniciar, detener y escalar contenedores Docker [2:30]. Entre sus ventajas destaca la integración directa con los balanceadores de carga (Elastic Load Balancing), lo que significa que el tráfico entrante se distribuye automáticamente entre los contenedores disponibles [3:00].
Por defecto, ECS ejecuta los contenedores sobre instancias EC2 [3:28]. Esto tiene pros y contras:
Un ejemplo práctico: una empresa de juguetes que enfrenta un pico de demanda en diciembre necesitaría crecer tanto en servidores EC2 como en contenedores internos, lo que aumenta la complejidad operativa [3:50].
¿Qué diferencia a Elastic Kubernetes Service (EKS)?
EKS es el servicio administrado de Kubernetes en AWS [4:40]. Kubernetes es una plataforma de orquestación de contenedores que automatiza tareas de implementación, escalamiento y administración.
La diferencia clave es que EKS está orientado a equipos que ya trabajan con el estándar de Kubernetes y buscan mantener esa compatibilidad en la nube.
¿Qué es Fargate y cómo simplifica el despliegue serverless?
Amazon Fargate es una modalidad que se combina tanto con ECS como con EKS para desplegar contenedores sin administrar instancias EC2 [5:45]. En lugar de aprovisionar servidores, AWS gestiona la infraestructura y escala automáticamente los contenedores según el consumo de CPU o RAM [6:15].
En resumen, el ecosistema de contenedores en AWS se compone de ECR para almacenar imágenes, ECS y EKS para orquestar contenedores, y Fargate como opción serverless que libera de la gestión de infraestructura [6:30]. Cada combinación responde a necesidades distintas de control, flexibilidad y simplicidad.
Si quieres compartir cómo estás usando contenedores en tus proyectos o tienes dudas sobre cuál servicio elegir, déjalo en los comentarios.
Christopher Andrés Guano Valencia
jhon.ochoa
Santiago Ahumada Lozano
Rodolfo Varela
Sebastián Arcila Sánchez
Santiago Ahumada Lozano
Enrique Alexis Lopez Araujo
Leidy Johana Gomez forigua
Johan Moises Ariza Mahecha
Gabriel Andrés Montiel Hermosa
Ruben Galindo
Ruben Galindo
Cristofer Vargas Morales
Miguel Figueroa
Miguel Figueroa
Jefferson Aguilar
Enrique Alexis Lopez Araujo
Irving Juárez
Santiago Ahumada Lozano
🟠 Mis recomendaciones para las preguntas de containers
ECR sirve para almacenar tus imágenes de Docker. Es como el GitHub de contenedores.
ECS y EKS sirven para orquestarlos en algún servidor y que empiecen a funcionar.
Si te preguntan, una empresa quiere almacenar sus imágenes de Docker en la nube es ECR, pero si dice que una empresa necesita ejecutar contenedores es ECS o EKS.
Fargate, es serverless, como spoiler de la siguiente clase, serveless no quiere decir "sin servidor", sino que no debes preocuparte por administrar servidores, ese trabajo se encarga AWS.
Entonces, si te preguntan, una empresa no quiere preocuparse por administrar sus servidores para contenedores, la respuesta es Fargate.
¡Nunca pares de aprender! 🚀🚀
Hola, tienes una guía o un repo con esas recomendaciones que has mencionado? y que puedas compartir
Una forma de pensar en EKS o ECS
Muy buen ejemplo
Importante tener en cuenta a Docker; entenderlo como plataforma de desarrollo para desplegar aplicaciones. Las aplicaciones se empaquetan en contenedores que se pueden ejecutar en cualquier sistema operativo.
Elastic Container Registry (ECR): Servicio de registro de contenedores. Permite almacenar, gestionar y desplegar imágenes de contenedores Docker. Es por así decirlo un “repositorio” de contenedores que luego podremos desplegar según nuestras necesidades. Este servicio se integra con otros servicios: ECS y EKS.
Elastric Container Service (ECS): Servicio que permite lanzar contenedores Docker almacenados en ECR.
Elastic Kubernetes Service (EKS): Servicio de contenedores y orquestación con Kubernetes.
Amazon Fargate: Forma de despliegue de contenedores sin tener que administrar instancias de EC2. AWS, bajo unas reglas, permite crecer y escalar contenedores sin nosotros tener que preocuparnos por los servidores (AWS se encarga de administrar los servidores, nosotros no).
Extra:
La orquestación con Kubernetes se refiere a la automatización del despliegue, escalado y gestión de aplicaciones containerizadas. Kubernetes es una plataforma de código abierto que:
EKS simplifica el proceso de ejecutar Kubernetes en AWS sin necesidad de instalar y operar tu propio clúster de Kubernetes.
Osea que un contenedor es como un .zip que empaqueta una aplicación?
La clase se centra en los servicios de contenedores de AWS, destacando Docker como una plataforma para empaquetar y ejecutar aplicaciones en contenedores. Se discuten tres servicios clave:
Se menciona también Fargate, que permite el despliegue serverless de contenedores sin gestionar instancias de EC2.
que formatos de archivos puede guardarse en los contenedores?
Hola, Leidy, como tal, en un contenedor puedes tener los formatos de archivos que quieras y necesite la aplicación que quieres contenerizar. Literalmente es una caja (entorno aislado) para guardar lo que se necesite para que la aplicación pueda funcionar.
🐳 ¿Qué es Docker?
Docker es como una fábrica de contenedores. Te permite:
Piensa en Docker como un chef que prepara platillos (contenedores). Él te da la receta (Dockerfile), cocina, y te entrega la comida lista para servir.
☸️ ¿Y Kubernetes?
Kubernetes no cocina nada. Kubernetes es el maître del restaurante de lujo:
🥊 ECS vs Kubernetes (EKS en AWS)
En Amazon ECS, para aumentar el número de contenedores ante una mayor demanda, puedes usar "Auto Scaling". Por ejemplo, configuras un "Auto Scaling Group" en EC2 que lance más instancias cuando la carga aumenta. Además, puedes establecer políticas de escalado basadas en métricas como el uso de CPU o memoria.
Supongamos que tienes un servicio de e-commerce, si la CPU de las instancias EC2 supera el 70%, el sistema puede iniciar automáticamente nuevas instancias con más contenedores para manejar el aumento de tráfico. Así, distribuyes la carga entre varios servidores y mantienes el rendimiento.
ECS (Elastic Container Service) y EKS (Elastic Kubernetes Service) difieren en su enfoque. ECS puede usar instancias EC2 para ejecutar contenedores, lo que proporciona control sobre el entorno, pero requiere gestión de infraestructura. EKS, por otro lado, es un servicio administrado de Kubernetes que facilita la orquestación de contenedores y puede trabajar con Fargate, lo que permite una implementación serverless sin preocuparse por la infraestructura subyacente. Ambos tienen sus ventajas dependiendo de las necesidades del proyecto.
Un servicio EKS (Elastic Kubernetes Service) y un servicio ECS (Elastic Container Service) son ambos utilizados para gestionar contenedores en AWS, pero tienen diferencias clave. EKS es un servicio de Kubernetes totalmente administrado, ideal para aplicaciones que requieren orquestación avanzada, mientras que ECS es más simple y está diseñado para contenedores Docker sin necesidad de una infraestructura compleja. Ambos pueden escalar y gestionar contenedores, pero EKS ofrece más flexibilidad y opciones de personalización.
Pregunta: Fargate sólo funciona con EKS o se puede utilizar con ECS?
Listo, lo responde el profesor al final de video. Se puede combinar con ambos.
Tanto en EKS y ECS, existen varias opciones para optimizar el uso de recursos de cómputo según las necesidades y el presupuesto de la aplicación. Estas opciones incluyen diferentes tipos de procesamiento de instancias EC2 o Fargate, tales como: Instancias On-Demand, Instancias Spot, Instancias Reservadas
Lo más relevante de la clase incluye la comprensión de los servicios de contenedores en AWS, específicamente Docker, Elastic Container Registry (ECR), Elastic Container Service (ECS) y Elastic Kubernetes Service (EKS).
Además, se introdujo Amazon Fargate para desplegar contenedores sin gestionar servidores.
Es importante recordar que hacer despliegues de aplicaciones en contenedores es de lo más común que hay en la industria y tiene muchos beneficios.
Por eso AWS invierte tanto en servicios de contenedores. Asi que si estas familiarizado con Docker, te deberia ser más facil de entender.
ECS es el orquestador custom que hizo AWS donde tu tienes full control de los servidores. Pero espera, no es esto malo, no es mejor usar servicios serverless donde no tengamos que preocuparnos por administrar servers?
La respuesta como siempre va ser: depende. En algunos casos queremos tener acceso a la memoria o cpu del servidor, mientras que en otros casos talvez no tanto.
EKS es kubernetes en AWS, donde no tenemos que preocuparnos tanto por administrar servidores.
Fargate es el servicio de servidores serverless. Lo que significa que AWS hace todo por nosotros, solo hay que decirle las caracteristicas del servidor, parametros de escalamiento in y out y ya.
Por ultimo, pero nada importate es el ECR que funciona como un tipo de Docker Hub, pero de AWS.
Volviendo un paso hacia atrás, me gustaría recapitular qué es un contenedor;
Un contenedor es un entorno de ejecucion que empaqueta las librerías y dependencias de una aplicación (de forma aislada, por eso se llaman contenedores) de manera que la aplicacion pueda correr en diferentes sistemas operativos sin problema
Se diferencian de las máquinas virtuales principalmente en que no almacenan un OS dedicado para correr la aplicacion, las VM sí lo precisan (Ya que emulan un computador). Lo anterior implica
1. Recursos -> Los contenedores tienden a consumir menos recursos 2. Boot Speed -> Los contenedores Inicializan de forma mas rapida 3. Precios -> Los contenedores tienden a ser menos costosos 4. Aislamiento -> Las VM tienden a ser entornos con mayor aislamiento ya que tambien precisan aislar al OS