Contenedores en AWS: Nivel 101

Mario Rodrigo Serrano Pineda
5 min readJun 24, 2024

--

image from aws.amazon.com AWS containers by layers

La adopción de contenedores en el desarrollo y despliegue de aplicaciones ha crecido exponencialmente en los últimos años debido a su eficiencia y capacidad de portar aplicaciones. AWS (Amazon Web Services) ofrece una robusta suite de servicios para gestionar contenedores, facilitando a los desarrolladores y equipos de operaciones la creación, implementación y administración de aplicaciones de manera más ágil y escalable. Este artículo explora los fundamentos de los contenedores en AWS y cómo puedes aprovechar estos servicios para tus proyectos.

¿Qué son los Contenedores?

Los contenedores son una forma de virtualización a nivel de sistema operativo que permite ejecutar aplicaciones y sus dependencias en un entorno aislado. A diferencia de las máquinas virtuales, los contenedores comparten el mismo núcleo del sistema operativo pero se ejecutan de forma independiente, lo que los hace más ligeros y eficientes.

Beneficios de Usar Contenedores

  1. Portabilidad: Los contenedores encapsulan todo lo necesario para ejecutar una aplicación, lo que permite mover aplicaciones de un entorno a otro sin cambios.
  2. Escalabilidad: Facilitan la escalabilidad horizontal, permitiendo agregar o quitar instancias de manera rápida y eficiente.
  3. Eficiencia de Recursos: Los contenedores son menos costosos en términos de recursos en comparación con las máquinas virtuales, ya que comparten el sistema operativo subyacente.
  4. Desarrollo y Despliegue Rápidos: Permiten a los desarrolladores crear entornos de desarrollo consistentes y realizar despliegues de manera continua y automática.

Servicios de Contenedores en AWS

Amazon Elastic Container Service (ECS)

Amazon ECS es un servicio de orquestación de contenedores altamente escalable y de alto rendimiento que soporta contenedores Docker. ECS permite ejecutar y escalar aplicaciones de contenedores de manera sencilla y se integra perfectamente con otros servicios de AWS como IAM, ELB y CloudWatch.

Características Clave:

  • Administración de Clusters: Facilita la creación y gestión de clusters de contenedores.
  • Escalabilidad: Proporciona opciones de escalabilidad automática para gestionar la carga de trabajo de manera eficiente.
  • Integración con AWS: Se integra profundamente con otros servicios de AWS, ofreciendo una experiencia cohesiva y segura.

Amazon Elastic Kubernetes Service (EKS)

Amazon EKS es un servicio administrado de Kubernetes que facilita la ejecución de Kubernetes en AWS sin la necesidad de operar el plano de control de Kubernetes. EKS proporciona un entorno de alta disponibilidad y escalabilidad para ejecutar contenedores.

Características Clave:

  • Compatibilidad Total con Kubernetes: Permite usar todas las herramientas y plugins de Kubernetes existentes.
  • Automatización: Automatiza tareas complejas como actualizaciones de versiones y escalado.
  • Seguridad: Integración con IAM para control de acceso y roles, así como con otros servicios de seguridad de AWS.

AWS Fargate

AWS Fargate es una tecnología de cómputo para contenedores que permite ejecutar contenedores sin necesidad de gestionar servidores o clusters. Fargate elimina la necesidad de aprovisionar, configurar y escalar servidores, simplificando la gestión de contenedores.

Características Clave:

  • Serverless: No requiere la gestión de servidores, lo que permite enfocarse en la construcción y ejecución de aplicaciones.
  • Escalabilidad Automática: Escala automáticamente los recursos necesarios para ejecutar contenedores.
  • Costo-Eficiencia: Paga solo por los recursos utilizados por los contenedores en ejecución.

Amazon Lightsail Containers

Amazon Lightsail Containers ofrece una forma sencilla y económica de desplegar y gestionar contenedores, ideal para desarrolladores y pequeñas empresas que buscan facilidad de uso sin renunciar a la capacidad de producción.

Características Clave:

  • Simplicidad: Facilita el despliegue y gestión de contenedores con una interfaz intuitiva.
  • Precios Predecibles: Ofrece precios fijos mensuales para evitar sorpresas en los costos.
  • Integración: Se integra con otros servicios de Lightsail y AWS para una experiencia cohesiva.

Adicional a estos servicios, hay uno que no hay que perder del radar y que ha tomado fuerza últimamente en los entornos Cloud para los fans de Red Hat y Red Shift.

Red Hat OpenShift on AWS (ROSA)

Es un servicio operado por Red Hat y respaldado conjuntamente con AWS para proporcionar Red Hat OpenShift totalmente administrado. ROSA ofrece facturación de pago por uso (por horas y anual) en una sola factura a través de AWS y la opción de comunicarse con Red Hat o AWS para obtener soporte.

Casos de Uso Comunes

  1. Microservicios: Los contenedores son ideales para arquitecturas de microservicios, donde cada componente de una aplicación puede ejecutarse y escalarse de manera independiente.
  2. Desarrollo Continuo e Integración Continua (CI/CD): Facilitan el desarrollo y despliegue continuo de aplicaciones, permitiendo a los desarrolladores implementar cambios rápidamente.
  3. Aplicaciones de Alto Rendimiento: Las aplicaciones que requieren alta disponibilidad y escalabilidad, como aplicaciones web y servicios de backend, se benefician enormemente de los contenedores.

Paso a Paso para Empezar con Contenedores en AWS

Aquí te dejo unos pasos muy generales de comandos a ejecutar para crear tu primer contenedor en AWS.

1. Configurar AWS CLI

Instala y configura AWS CLI para interactuar con los servicios de AWS desde la línea de comandos.

2. Crear un Cluster en ECS

3. Definir una Tarea de ECS

Crea un archivo de definición de tarea en JSON que describa los contenedores que deseas ejecutar.

4. Ejecutar una Tarea en ECS

5. Configurar un Servicio de ECS para Escalabilidad

comando a ejecutar:
aws ecs create-service — cluster my-cluster — service-name my-service — task-definition my-task — desired-count 2

6. Monitorear el Servicio con CloudWatch

Configura alarmas y monitoreo con CloudWatch para asegurar que tu servicio está funcionando correctamente y escala según sea necesario.

Conclusión

El uso de contenedores en AWS permite a los desarrolladores y equipos de operaciones construir, desplegar y gestionar aplicaciones de manera eficiente y escalable. Con servicios como ECS, EKS, Fargate y Lightsail Containers, AWS ofrece una plataforma robusta para ejecutar contenedores, simplificando la gestión de infraestructura y permitiendo enfocarse en el desarrollo de aplicaciones.

¡Comparte tu Experiencia!

¿Has utilizado contenedores en AWS? ¿Qué servicio de contenedores prefieres y por qué? Comparte tus ideas y experiencias en los comentarios. Si te ha gustado este artículo, ¡no olvides compartirlo y seguirme para más contenido sobre AWS y la computación en la nube!

Gracias por leer. Espero que este artículo te haya proporcionado una comprensión clara y útil sobre los fundamentos de los contenedores en AWS.

--

--

Mario Rodrigo Serrano Pineda

Ingeniero en Sistemas con más de 20 años de experiencia en infraestructura tecnológica, arquitectura empresarial y de soluciones multicloud.