AWS Lambda vs. Amazon EC2: ¿Cuál elegir?

Amazon es uno de los líderes en la prestación de diversos servicios en la nube, con varias docenas y contando. Amazon EC2 es uno de los servicios más populares de Amazon, y es la parte principal de la plataforma de computación en nube de Amazon que se presentó en 2006. Amazon EC2 se utiliza mucho hoy en día, pero la popularidad de otro servicio de Amazon llamado Lambda (introducido en 2014) también está creciendo. La publicación del blog de hoy compara las plataformas AWS Lambda y EC2 para ayudarle a tomar la decisión correcta para su entorno.

NAKIVO for AWS EC2 Backup

NAKIVO for AWS EC2 Backup

Backup of Amazon EC2 instances to EC2, AWS S3 and onsite. Anti-ransomware options. Fast recovery of instances and application objects.

¿Qué es AWS EC2?

AWS EC2 (Amazon Web Services Elastic Compute Cloud) es un servicio que permite utilizar máquinas virtuales llamadas instancias EC2 en la nube y proporciona escalabilidad. Puedes cambiar la cantidad de espacio en disco, el rendimiento de la CPU, la memoria, etc. siempre que lo necesites. Puede seleccionar la imagen base con el sistema operativo (SO) preinstalado necesario, como Linux o Windows, y después configurar la mayoría de los ajustes del SO, así como instalar aplicaciones personalizadas. Dispone de acceso root para sus instancias de Amazon EC2 y puede crear usuarios adicionales. Gestione todo lo que necesite y controle completamente sus instancias EC2, incluido el reinicio y apagado de la instancia. La categoría del servicio web AWS EC2 se conoce como Infraestructura como servicio. AWS EC2 puede utilizarse para el alojamiento en la nube: puede desplegar servidores como máquinas virtuales (instancias) en la nube.

¿Qué es AWS Lambda?

AWS Lambda es una plataforma informática que permite ejecutar un fragmento de código escrito en uno de los lenguajes de programación compatibles (Java, JavaScript o Python) cuando se dispara un activador vinculado a un evento. No es necesario configurar un servidor y un entorno virtuales para ejecutar una aplicación que hayas escrito. Solo tienes que insertar el código de tu programa (llamado función Lambda en este caso) en la interfaz de AWS Lambda, asociar la función Lambda al evento y ejecutar la aplicación en la nube cuando sea necesario, sin ocuparte de la gestión del servidor ni de la configuración del entorno. De este modo, puede centrarse en su aplicación, no en la administración del servidor; por este motivo, AWS Lambda se denomina serverless (sin servidor).

Un evento tras el cual se ejecuta su aplicación puede ser la carga de un archivo en el bucket de Amazon S3, la realización de cambios en las tablas de DynamoDB, la recepción de una solicitud HTTP en el servicio API Gateway, etc. Después de configurar una función para que se ejecute cuando se produzca un evento, su aplicación se ejecutará automáticamente después de cada nuevo evento.

En cuanto a la clasificación, Lambda es una implementación de Function as a Service (FaaS) de Amazon. En la tabla siguiente, puede ver el nivel de gestión de cada tipo de servicio a partir del uso de servidores físicos y compararlos. Los niveles más bajos (gestión de usuarios requerida) se marcan con un color verde y los niveles superiores (gestión de proveedores proporcionada) se marcan con un color azul. Así, cuando se utilizan servidores físicos, se puede gestionar el hardware y todos los niveles superiores. Al utilizar Infraestructura como servicio (IaaS) como AWS EC2, puede administrar sistemas operativos en máquinas virtuales proporcionadas (instancias EC2). En el nivel de Plataforma como Servicio (PaaS), puede ejecutar su aplicación que debe compilarse antes de ejecutarse. Cuando se utiliza Function as a Service (FaaS) como AWS Lambda, no es necesario compilar la aplicación: basta con insertar el código en la interfaz proporcionada por MSP (proveedor de servicios gestionados). SaaS (Software as a Service), que se menciona a título comparativo en la tabla, sólo permite utilizar aplicaciones ya preparadas (aplicaciones hechas por proveedores) en la nube mediante un cliente ligero o un navegador web.

AWS Lambda vs EC2 - comparing the management level for cloud services

AWS EC2 vs Lambda: Casos prácticos de uso

AWS EC2 tiene una amplia gama de casos de uso ya que casi todo se puede configurar cuando se utiliza este servicio. Los casos de uso más comunes de AWS EC2 son:

  • Alojamiento de sitios web
  • Desarrollar y probar aplicaciones o entornos complejos
  • Informática de alto rendimiento
  • Recuperación ante desastres

Casos de uso prácticos generales de AWS Lambda:

  • Automatización de tareas
  • Procesamiento de objetos cargados en Amazon S3
  • Análisis de registros en tiempo real
  • Filtrado y transformación de datos en tiempo real

Veamos un ejemplo concreto. Imagine que su sitio web utiliza un bucket de Amazon S3 para almacenar el contenido del sitio web, incluidas imágenes, vídeos, archivos de audio, etc. Cuando se carga un nuevo archivo de imagen o vídeo, es necesario crear una imagen de vista previa para su página web que se utiliza como un enlace a una imagen de tamaño completo o archivo de vídeo. Crear imágenes de previsualización manualmente puede ser una tarea aburrida y lenta. En este caso, puede crear una función Lambda que cambie automáticamente el tamaño de la imagen basándose en la imagen cargada, cambie el nombre de esa imagen y almacene la imagen de destino en el directorio adecuado. Puede configurar la función Lambda para que se ejecute justo después del evento de carga del archivo de imagen original en el bucket de Amazon S3 utilizado por su sitio web.

AWS EC2 vs Lambda: Principio de funcionamiento

EC2. Como recordarás, cuando utilizas AWS EC2, operas con máquinas virtuales (VMs) conocidas como instancias EC2. Puede añadir hardware virtual (discos virtuales, interfaces de red, procesadores, memoria) a una instancia EC2, así como iniciar, detener y reiniciar una instancia VM. Las instancias EC2 pueden trabajar con dos tipos de almacenamiento: Elastic Block Storage (EBS) y los buckets S3. Puede utilizar una imagen preconfigurada con un sistema operativo instalado y crear su imagen de máquina de Amazon (AMI) personalizada. El servicio en la nube EC2 proporciona ampliación automática y equilibrio de carga. Las instancias EC2 pueden funcionar conjuntamente con la mayoría de los demás servicios web de Amazon, como S3, ECS, Route53, Cloudwatch, etc.

Lambda. Al utilizar AWS Lambda, su aplicación (función de Lambda) se ejecuta en un contenedor que no presenta problemas para usted. El contenedor contiene código y bibliotecas. Amazon proporciona los recursos en función de las necesidades de la aplicación, y la ampliación es automática y perfecta. No puede controlar ni un contenedor que ejecute su aplicación ni una instancia EC2 en la que se ejecute el contenedor (no sabe nada de ellos porque la infraestructura subyacente no está disponible para los usuarios de Amazon Lambda). Consulte la tabla anterior.

AWS Lambda puede considerarse un marco de EC2 Container Service (ECS) que utiliza contenedores para ejecutar un fragmento de código que representa su aplicación. El ciclo de vida de cada contenedor es corto. La función Lambda en ejecución no guarda su estado. Si desea guardar los resultados, deben conservarse en algún almacenamiento de datos, por ejemplo, en un bucket de Amazon S3. Es posible configurar una red virtual para una función Lambda, por ejemplo, para conectarse a Amazon RDS (Amazon Relational Database Service). Lambda consta de varias partes: capas, entorno de funciones y un manejador. Los activadores son activadores Lambda. Lambda es una función que se ejecuta mediante consultas desde triggers.

La lista completa de activadores disponibles:

  • Pasarela API
  • AWS IoT
  • Kit de habilidades Alexa
  • Alexa Smart Home
  • Equilibrador de carga de aplicaciones
  • CloudFront
  • Eventos de CloudWatch
  • Registros de CloudWatch
  • CodeCommit
  • Activador de sincronización de Cognito
  • DynamoDB
  • Kinesis
  • S3
  • SNS
  • SQS

API Gateway es un servicio especial que permite a los desarrolladores conectar diversas aplicaciones que no son de AWS con aplicaciones de AWS y otros recursos.

AWS EC2 vs Lambda: Versiones/Snapshots

EC2. Existe un complejo sistema de instantáneas para los volúmenes EBS (Elastic Block Storage) de las instancias AWS EC2. Puede crear instantáneas incrementales y volver al estado necesario de una instancia EC2. Las instantáneas multivolumen pueden utilizarse para cargas de trabajo críticas, por ejemplo, bases de datos que utilizan varios volúmenes EBS.

Lambda. Se compatibiliza con un cómodo sistema de control de versiones para una mejor gestión de las funciones Lambda. Puede asignar un número de versión a cada copia de código cargada y, a continuación, añadir alias que apunten a la versión de código adecuada. Cada número de versión empieza en 1 y va aumentando. Puede clasificar las funciones Lambda en alfa, beta y de producción, por ejemplo. El nombre de recurso de Amazon se asigna a cada versión de función de Lambda en el momento de la publicación y no puede modificarse posteriormente.

AWS EC2 vs Lambda: Seguridad

EC2. Usted debe cuidar de sus instancias EC2 y todos los componentes dentro de las instancias. Puede configurar manualmente un firewall para su instancia EC2 – Amazon proporciona VPC (Virtual Private Cloud) Firewall para controlar el tráfico y garantizar la seguridad de las instancias EC2 en la nube. Puede instalar y configurar manualmente software antivirus para sus instancias EC2, crear roles IAM, especificar permisos, crear grupos de seguridad, etc. AWS Systems Manager Patch Manager permite instalar actualizaciones del sistema operativo y parches de seguridad automáticamente. Puede configurar AWS para que realice una instantánea antes de instalar un parche o una actualización para evitar posibles problemas. Cree pares de claves para acceder a las instancias EC2 si es necesario. Debe prestar más atención a la seguridad cuando utilice AWS EC2 en comparación con cuando utilice AWS Lambda.

Lambda. Existen permisos para los servicios de AWS a los que Lambda tiene acceso por defecto. La función IAM se utiliza para definir los servicios que deben estar disponibles para una función Lambda. Para cada Lambda, debe configurar el rol de IAM en nombre del cual se lanzará la función Lambda. Significa que después de configurar la función de IAM, podrá conectar su función de Lambda a los servicios de Amazon definidos sin utilizar claves ni otros parámetros de autorización.

Es posible configurar el cifrado entre una función Lambda y S3, así como entre una pasarela API y Lambda con una clave KMS. Al crear una función Lambda, se crea una clave de cifrado por defecto. Sin embargo, la recomendación es crear su propia clave KMS.

En comparación con las instancias EC2, las funciones Lambda no requieren actualizaciones ni parches de seguridad. Amazon actualiza automáticamente los contenedores y sistemas operativos subyacentes. Esta es la ventaja de utilizar funciones Lambda en términos de seguridad.

AWS EC2 vs Lambda: Rendimiento y disponibilidad

EC2. Después de encender una instancia EC2, la instancia se ejecuta hasta que la detenga manualmente o programe una tarea de apagado. Cuando una instancia EC2 está en funcionamiento, una aplicación se ejecuta casi instantáneamente en esa instancia. Puede ejecutar tantas aplicaciones como desee simultáneamente si el rendimiento de su instancia EC2 lo permite. Ejecutar aplicaciones en instancias EC2 es una buena solución cuando las aplicaciones deben ejecutarse regularmente durante todo el día.

Lambda. Una función Lambda siempre está disponible, pero no se ejecuta todo el tiempo. Por defecto, la función Lambda está inactiva. Cuando se activa un disparador vinculado a un evento, se inicia su aplicación (función Lambda). El tiempo máximo de ejecución de la función Lambda (timeout) está limitado a 900 segundos (15 minutos). Ejecutar aplicaciones de larga ejecución en AWS Lambda no es una buena idea, en consecuencia. Si necesita ejecutar aplicaciones que requieren más de 900 segundos para completarse correctamente o aplicaciones que tienen un tiempo de ejecución variable, considere utilizar AWS EC2. Otro límite para una función Lambda en ejecución es la cantidad máxima de memoria que es igual a 3008 MB.

Se pueden ejecutar simultáneamente entre 1000 y 3000 instancias de Lambda, dependiendo de la región. Póngase en contacto con AWS support si está interesado en ejecutar más instancias simultáneamente.

El retraso entre el envío de una solicitud y la ejecución de la aplicación es de hasta 100 milisegundos para AWS Lambda, a diferencia de las aplicaciones que se ejecutan en instancias EC2 que no tienen dicho retraso. 100 ms no es mucho tiempo, pero para algunos tipos de aplicaciones, este tiempo puede ser crítico. Si su aplicación debe descargar algunos datos de un bucket de Amazon S3, es posible que se necesiten de 1 a 3 segundos adicionales antes de la ejecución de la aplicación. Tenga en cuenta este tiempo de retardo cuando planifique utilizar AWS Lambda para ejecutar aplicaciones.

El tiempo de arranque en frío es un inconveniente de las funciones Lambda. La latencia se produce cuando una función no se ejecuta durante un periodo de tiempo duradero, y se necesita tiempo para iniciar un contenedor y ejecutar la función en Amazon Cloud. Utilizar AWS Lambda para ejecutar aplicaciones puede ser una buena solución cuando se tienen cargas de trabajo desiguales y las aplicaciones deben ejecutarse en diferentes periodos del día con largas pausas entre ejecuciones de aplicaciones.

AWS Lambda vs EC2: Modelo de precios

Tanto los servicios en la nube EC2 como Lambda utilizan el principio de pago por uso. Sin embargo, consideremos los detalles y las diferencias.

EC2. Usted paga por el tiempo en que su instancia de AWS EC2 está funcionando, se ejecute o no la función/aplicación. El precio por hora depende del rendimiento de la CPU, la cantidad de memoria, el rendimiento de la tarjeta de vídeo y la capacidad de almacenamiento utilizada por la instancia EC2. Cuando necesite que su función/aplicación esté siempre disponible debido a un elevado número de solicitudes regulares, el uso de instancias AWS EC2 puede ser más racional desde el punto de vista económico.

Lambda. Usted paga por un número de ejecuciones de la aplicación y por el tiempo necesario para finalizar la ejecución. El precio por cada segundo de ejecución de una aplicación depende de la cantidad de memoria aprovisionada para una aplicación y es de 0,00001667 dólares por cada Gigabyte-segundo. El tiempo de ejecución de la aplicación se cuenta desde el inicio de la aplicación hasta la devolución del resultado o hasta detenerse tras el tiempo de espera. El tiempo se redondea al número más próximo que sea múltiplo de 100 ms. Cuando necesite disponibilidad bajo demanda, el precio por utilizar AWS Lambda para ejecutar funciones/aplicaciones puede ser mejor.

Conclusión

AWS EC2 es un servicio que representa la infraestructura tradicional de la nube (IaaS) y permite ejecutar instancias EC2 como máquinas virtuales, configurar entornos y ejecutar aplicaciones personalizadas.

AWS Lambda es la implementación de Function as a Service de Amazon que le permite ejecutar su aplicación sin tener que preocuparse de la infraestructura subyacente. AWS Lambda le proporciona una arquitectura sin servidor y le permite ejecutar un fragmento de código en la nube después de que se active un activador de eventos. Al utilizar AWS Lambda, dispone de una función escalable, pequeña y económica con control de versiones. Puede centrarse en escribir código, no en configurar la infraestructura.

Si ha calculado que hay mucho tiempo ocioso de su aplicación en una instancia EC2 que siempre está en ejecución, considere la posibilidad de utilizar AWS Lambda con el que no tendrá que pagar por el tiempo ocioso si no hay solicitudes para ejecutar una aplicación. Si hay un gran número de solicitudes regulares para ejecutar su aplicación, puede ser mejor desplegar una aplicación en una instancia EC2 que siempre esté en ejecución.

Usar AWS EC2 es bueno para ejecutar aplicaciones de alto rendimiento, aplicaciones de larga ejecución y las aplicaciones que no deben tener un retraso en la hora de inicio. Si utiliza instancias AWS EC2, no olvide hacer backup de ellas para evitar perder sus datos. NAKIVO Backup & Replication es una solución de protección de datos todo en uno que puede proteger instancias EC2 además de VMware vSphere VMs, Hyper-V VMs y servidores físicos.

1 Year of Free Data Protection: NAKIVO Backup & Replication

1 Year of Free Data Protection: NAKIVO Backup & Replication

Deploy in 2 minutes and protect virtual, cloud, physical and SaaS data. Backup, replication, instant recovery options.

Artículos recomendados