AWS ECS vs AWS Lambda: ¿Cuál es la diferencia y cómo elegir?

AWS ECS vs AWS Lambda: ¿Cuál es la diferencia y cómo elegir?

  • Nube
6 min de lectura Actualizado May 6, 2021

Puntos clave: AWS ECS y Lambda son esenciales para el despliegue de aplicaciones en AWS. ECS orquesta contenedores Docker, mientras que Lambda permite funciones serverless para aplicaciones orientadas a eventos.

  • ECS ofrece flexibilidad para gestionar contenedores en diversos entornos.
  • Lambda está ideal para aplicaciones pequeñas que requieren un despliegue rápido sin necesidad de gestión de infraestructura.

Son varias opciones para el despliegue de código y aplicaciones en el ecosistema AWS. Dos de las opciones más populares para el despliegue de aplicaciones AWS son:

  • Servicio de Contenedores Elásticos (ECS)
  • AWS Lambda

Hoy, veamos ECS y Lambda, explicando qué hace cada opción y discutamos algunas consideraciones críticas para desplegar una opción sobre otra.

AWS ECS

Elastic Container Services (ECS): Orquestación de contenedores

ECS se está utilizando para gestionar y desplegar contenedores Docker a gran escala (orquestación de contenedores). ECS utiliza los siguientes componentes de AWS para almacenar y ejecutar aplicaciones ECS:

  • AWS ECR
  • Clúster ECS
  • Definiciones de tareas
  • Programador de servicio ECS
  • Otros servicios de AWS

Vamos a echar un vistazo.

El Repositorio de Contenedores Elásticos de AWS (ECR)

ECR gestiona, almacena, comprime, asegura y controla el acceso a imágenes de contenedores. Alternativamente, te puede utiliza Docker Hub para almacenar y acceder a imágenes de contenedores.

Un clúster ECS de AWS para ejecutar aplicaciones conteneorizadas

Un clúster están un agrupamiento lógico de tareas y contenedores que utilizan varios tipos de lanzamiento diferentes (infraestructura) para ejecutarse. Los clústeres pueden contener:

Al añadir instancias EC2 a un clúster ECS, te necesitarás gestionar los servidores EC2 de ese clúster, incluyendo asegurar la seguridad y el acceso a EC2, parchear sus sistemas operativos y realizar mantenimiento. AWS Fargate es un entorno informático sin servidor que funciona con ECS. Al añadir tareas Fargate a un clúster ECS, AWS provisiona y gestiona los servidores EC2 en los que se ejecutan tus contenedores, liberándote de te administrar una infraestructura EC2 separada. Amazon ECS Anywhere es una extensión ECS que permite ejecutar aplicaciones contenedorizadas en servidores fuera del ecosistema AWS. ECS Anywhere carga un agente en sistemas operativos gestionados por el cliente, convirtiéndolos en instancias gestionadas y permitiendo que esas instancias se registren en un clúster ECS.

Definiciones de tareas

Definiciones de tareas que describen de 1 a 10 contenedores (y parámetros) que Define una aplicación ECS. Las definiciones de tareas son almacenadas como archivos JSON.

El planificador de servicios ECS de AWS

Este servicio programa las tareas (instancias de las definiciones de tareas) para ejecutarse dentro de la infraestructura de tu clúster ECS. Ejecuta tareas en un programa tipo cron o en tu propio horario personalizado. El planificador de tareas también:

Otros servicios

AWS también está integrado con otros servicios de AWS.

Cómo funciona el ECS

En conjunto, el planificador de servicios ECS lanza tareas en clústeres ECS usando definiciones de tareas que hacen referencia y utiliza contenedores Docker almacenados en el Repositorio Elastic de Contenedores o Docker Hub. Usar ECS están notable en que te puede Define tu propio clúster de servidores EC2, permitir que AWS gestiona y despliegue servidores EC2 (AWS Fargate), utiliza servidores externos (ECS Anywhere), o una combinación de los tres. Los clústeres y tareas ECS se ejecutan dentro de nubes privadas virtuales (VPCs) y subredes específicas de AWS.

AWS Lambda: Despliegue de funciones serverless

AWS Lambda destaca ejecutando aplicaciones bajo demanda más pequeñas que son activadas por nuevos eventos e información. Lambda está un servicio de AWS que ejecuta código sin necesidad de provisionar y gestionar infraestructura. No están aprovisionamiento EC2 ni clústeres que definir. Lambda controla totalmente las instancias EC2 en las que se ejecuta tu código y se escala automáticamente según sea necesario. Lambda opera a nivel de función y código de la siguiente manera:

te Crea el código te quieres ejecutar

Lambda soporta muchos lenguajes a través de entornos de ejecución Lambda, incluyendo nodeJS, Python, Go, Java, Ruby, .Net y C#.

te paquete y carga tu código

Empaqueta tu código en un paquete de despliegue zip o jar y súbelo usando la consola Lambda o la CLI de AWS. te designa el nombre del archivo y la función que sirve como punto de entrada. Una vez subido, Lambda proporciona un Nombre de Recurso de Amazon (ARN), que sirve como ID para la función te acaba de crear. Tu función Lambda están invocada y ejecuta en instancias EC2. Las funciones Lambda pueden invocarse de varias maneras, incluyendo:

  • Directamente desde la consola Lambda, la API Lambda, el kit de desarrollo de software de AWS (AWS SDK), LA INTERFAZ DE USUARIO DE AWS y los kits de herramientas de AWS.
  • De los desencadenantes en un recurso Lambda u otro recurso.
  • De un mapeo de fuentes de eventos Lambda que invoca una función Lambda. Lambda lee eventos de varios servicios de AWS como Amazon DynamoDB, Amazon Simple Queue Service (SQS), etc. Las fuentes de eventos son creadas en AWS CLI o AWS SDK.
  • Desde servicios de AWS que invocan directamente Lambda, incluyendo AWS ELB, AWS Simple Notification Service (SNS), Amazon API Gateway y varios otros.

Las funciones pueden invocarse de cualquiera de:

  • De forma sincrónica, donde Lambda espera una respuesta tras ejecutar la función y devuelve el código de respuesta con datos adicionales al cliente, permitiendo reintentos y respuestas de error
  • De forma asíncrona, donde el cliente pasa el evento a Lambda y no espera el código de respuesta ni los datos.

Tras la llamada inicial de la función, Lambda puede escalar 500 instancias adicionales por minuto cuando el tráfico se dispara, hasta que son suficientes instancias para manejar el tráfico. El escalado continúa hasta que se están alcance un límite de concurrencia Lambda o llegan solicitudes más rápido de lo que tu función puede escalar. te también puede contratar concurrencia provisionada para evitar esperas de escalado Lambda. A medida que el tráfico disminuye, Lambda detiene instancias no utilizadas.

Cómo funciona Lambda

Lambda proporciona el despliegue de aplicaciones serverless, incluyendo:

  • Configuración de instancias EC2
  • Balanceo de carga
  • Grupos objetivo
  • Escalado automático

Tu principal responsabilidad es configurar tus funciones y configuraciones de invocación. Lambda hace el resto. Las funciones Lambda son fáciles de configurar y sin preocupaciones en cuanto a infraestructura.

AWS Lambda

ECS vs Lambda: ¿cuál están adecuado para te?

Ahora que hemos analizado qué hace cada opción de despliegue de aplicación y cómo funciona, aquí son algunas consideraciones para elegir una opción sobre otra.

Considera Lambda sobre ECS cuando...

  • te tienen una aplicación más pequeña que se ejecuta bajo demanda en 15 minutos o menos. Las funciones lambda son limitadas por un valor de tiempo de espera que puede configurarse de 3 segundos a 900 segundos (15 minutos). Lambda termina automáticamente funciones que se ejecutan más tiempo que su valor de tiempo de espera.
  • No te importa ni necesitas una configuración avanzada de instancias EC2. Lambda gestiona, provisiona y asegura instancias EC2 para ti, además de proporcionar grupos objetivo, balanceo de carga y escalado automático. Esto elimina la complejidad de gestionar instancias EC2.
  • te quieres pagar solo por la capacidad utilizada. Lambda cobra son se mide por milisegundos usados y el número de veces que tu código están activado. Los costes son correlacionados con el uso. Lambda también tiene un nivel de uso gratuito.

Considera ECS en lugar de Lambda cuando... 

  • te son ejecutando contenedores Docker. Aunque Lambda ahora tiene soporte para imágenes de contenedores, ECS están una mejor opción para un ecosistema Docker, especialmente si ya te son creando contenedores Docker.
  • te quieres flexibilidad para funcionar en un entorno EC2 gestionado o en un entorno serverless. te puedes provisiona tus propias instancias EC2 o Amazon puede provisiona por ti. te varias opciones.
  • te tienen tareas o trabajos por lotes que duren más de 15 minutos. Elige ECS cuando trates con trabajos de mayor duración, ya que evita el límite de tiempo de espera Lambda mencionado anteriormente.
  • te necesitan programa trabajos. ECS proporciona un planificador de servicios para tareas y aplicaciones de larga duración, junto con la capacidad de ejecutar tareas manualmente.

Generalmente, ECS están más adecuados para ejecutar un entorno Docker en AWS usando instancias en clúster. Lambda está mejor para desplegar rápidamente aplicaciones pequeñas bajo demanda en un entorno serverless.

Lecturas relacionadas

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de Nube

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.