Contenedores
Clase 17 de 69 • Curso de AWS Certified Solutions Architect Associate
Resumen
El uso de contenedores ha revolucionado el despliegue de aplicaciones en la nube, permitiendo que empresas como Nexia Bank reduzcan sus tiempos de despliegue de semanas a días. AWS ofrece un completo ecosistema de servicios diseñados específicamente para gestionar contenedores, brindando flexibilidad y escalabilidad. Estas tecnologías permiten a los desarrolladores centrarse en crear valor para sus usuarios finales sin preocuparse por los detalles complejos de infraestructura.
¿Cuáles son los principales servicios de contenedores en AWS?
AWS ofrece una robusta suite de servicios orientados a contenedores que facilitan el despliegue y gestión de aplicaciones modernas:
- ECS (Elastic Container Service): Permite desplegar diferentes cargas de trabajo basadas en contenedores de manera sencilla.
- Fargate: Una solución serverless para desplegar contenedores en ECS, eliminando la necesidad de administrar la infraestructura subyacente.
- EKS (Elastic Kubernetes Service): Proporciona un clúster de Kubernetes totalmente gestionado por AWS, permitiéndonos centrarnos exclusivamente en nuestras aplicaciones.
- ECR (Elastic Container Registry): Un registro donde podemos almacenar imágenes de Docker que serán utilizadas posteriormente en ECS o EKS.
Estos servicios están diseñados para trabajar juntos, ofreciendo una experiencia integrada para implementar arquitecturas basadas en contenedores.
¿Por qué los contenedores están revolucionando el despliegue de aplicaciones?
Los contenedores son una evolución natural inspirada en los contenedores de transporte marítimo: unidades estandarizadas que se pueden mover sin problemas entre diferentes ambientes. En el contexto del software, ofrecen ventajas significativas sobre las máquinas virtuales tradicionales:
Diferencias entre máquinas virtuales y contenedores
Las máquinas virtuales requieren múltiples capas:
- Hardware físico
- Sistema operativo host
- Hipervisor (software que separa las máquinas virtuales)
- Sistema operativo completo para cada máquina virtual
- Aplicación o microservicio
En contraste, los contenedores simplifican esta estructura:
- Hardware físico
- Sistema operativo host
- Runtime de contenedores (como Docker)
- Solo las librerías y dependencias necesarias
- Aplicación o microservicio
Esta simplificación hace que los contenedores sean mucho más ligeros y eficientes, permitiendo una mayor densidad de aplicaciones por servidor y tiempos de inicio significativamente más rápidos.
ECS: La plataforma básica para contenedores en AWS
ECS (Elastic Container Service) ofrece dos modalidades principales para desplegar contenedores:
-
Fargate: Opción serverless donde AWS gestiona toda la infraestructura subyacente. Se factura por el tiempo de ejecución del contenedor, ofreciendo una experiencia verdaderamente "pague por lo que usa".
-
EC2: En este modelo, configuramos las instancias donde correrán nuestros contenedores. La facturación se basa en el tiempo de ejecución de las instancias, independientemente de si los contenedores están activos o no.
Un flujo de trabajo típico con ECS incluiría:
- Desarrolladores trabajando en una aplicación
- Containerización de la aplicación mediante Docker
- Construcción de la imagen con
docker build
- Subida de la imagen a ECR con
docker push
- Despliegue desde ECR a Fargate mediante ECS
¿Qué ventajas ofrece EKS para orquestar contenedores?
Kubernetes se ha convertido en el estándar de la industria para gestionar cargas de trabajo basadas en contenedores, especialmente para aplicaciones que requieren alta disponibilidad y escalabilidad. EKS (Elastic Kubernetes Service) simplifica enormemente la administración de Kubernetes:
- AWS gestiona toda la capa de control del clúster
- Los desarrolladores solo se preocupan por desplegar y gestionar las aplicaciones
- Ofrece integración nativa con otros servicios de AWS
En un escenario típico de EKS, el tráfico de los usuarios llegaría a un balanceador de carga que distribuiría las solicitudes entre diferentes pods (grupos de contenedores) dentro del clúster. Este modelo permite una escalabilidad prácticamente ilimitada y alta resiliencia.
Para aprovechar al máximo estas tecnologías, es recomendable complementar este conocimiento con cursos especializados como los de Docker y Kubernetes disponibles en Platzi.
Los servicios de contenedores de AWS proporcionan flexibilidad para elegir el nivel de abstracción que mejor se adapte a nuestras necesidades: desde la simplicidad serverless de Fargate hasta el control granular de Kubernetes con EKS. Esta diversidad de opciones nos permite optimizar tanto el rendimiento como los costos de nuestras aplicaciones en la nube.
¿Ya has tenido experiencia con alguno de estos servicios? ¿Prefieres la simplicidad de ECS o la potencia de EKS para tus proyectos? Comparte tu experiencia y preferencias en los comentarios.