¿Cómo puede mejorar el rendimiento la informática sin servidor? | Rendimiento de Lambda

En una arquitectura sin servidor, tener más puntos de presencia supone un gran impacto en el rendimiento.

Metas de aprendizaje

Después de leer este artículo podrás:

  • Más información sobre AWS Lambda, Lambda@Edge y Cloudflare Workers
  • Observar las diferencias de rendimiento entre las plataformas
  • Entender la latencia y los puntos de presencia

Copiar el enlace del artículo

¿Cómo puede mejorar el rendimiento la informática sin servidor?

Una de las ventajas de la informática sin servidor es la posibilidad de ejecutar el código de la aplicación desde cualquier lugar. Por definición, en una arquitectura sin servidor no hay servidores de origen; por lo tanto, es posible que el código se ejecute en ubicaciones en el perímetro, cerca de los usuarios finales. Dos plataformas sin servidor que aprovechan esta capacidad y la resultante reducción de latencia son AWS Lambda@Edge y Cloudflare Workers. Al medir el rendimiento de Lambda en comparación con el rendimiento de Cloudflare Workers y Lambda@Edge, es posible observar los efectos de la implementación de aplicaciones sin servidor en el perímetro. Los resultados de las pruebas (a continuación) indican que Cloudflare Workers suele tener una respuesta más rápida.

¿Qué es AWS Lambda?

AWS Lambda es un servicio de infraestructura sin servidor proporcionado por Amazon Web Services. Lambda aloja las funciones de la aplicación impulsada por eventos escritas en una variedad de lenguajes, y las pone en marcha y ejecuta cuando son necesarias.

¿Dónde se implementa AWS Lambda?

AWS ofrece una serie de regiones para la implementación en todo el mundo. Normalmente, una aplicación alojada en Lambda se alojará en una sola de estas regiones.

¿Qué es AWS Lambda@Edge?

AWS Lambda@Edge es Lambda implementado en todas las regiones de AWS distribuidas a nivel global, en lugar de en una región geográfica concreta. Aunque Lambda es compatible con varios lenguajes, las funciones de Lambda@Edge se ejecutan en Node.js, un entorno de tiempo de ejecución para ejecutar JavaScript. Cuando se activa una función Lambda@Edge, se ejecuta en la región de AWS más cercana al origen del evento desencadenante, lo cual significa que se ejecuta lo más cerca posible de la persona o máquina que está usando la aplicación.

Por ejemplo, supongamos que un usuario de Chicago solicita información mediante una aplicación con una arquitectura sin servidor. Si la infraestructura de la aplicación sin servidor está alojada con AWS Lambda en la región US-East-1 (en Virginia), la solicitud tendrá que viajar hasta un centro de AWS en Virginia, y la respuesta viajará desde allí hasta Chicago. Pero si la aplicación se aloja usando AWS Lambda@Edge, la solicitud y la respuesta solo tendrán que viajar hacia y desde la región de AWS más cercana, es decir, US-East-2, que se encuentra en Ohio. Esta menor distancia reduce la latencia en comparación con AWS Lambda.

AWS Lambda@Edge vs. Cloudflare Workers

De forma similar a AWS Lambda@Edge, Cloudflare Workers son funciones de JavaScript basadas en eventos y alojadas en centros de datos de todo el mundo. Sin embargo, hay muchas diferencias importantes entre los dos servicios de infraestructura sin servidor. Cloudflare Workers se ejecuta directamente en Chrome V8 en lugar de Node.js, y Cloudflare cuenta con centros de datos en 200 ciudades de todo el mundo. Ya que usan directamente V8, Cloudflare Workers se puede iniciar mucho más rápido y consumir muchos menos recursos que otras plataformas sin servidor. En el ejemplo anterior, si el usuario de Chicago intentara obtener una respuesta de una aplicación creada con Cloudflare Workers, la solicitud viajaría al PoP de Cloudflare en Chicago y no al de Ohio.

¿Qué es la latencia? ¿Cómo afecta la latencia al comportamiento del usuario?

En redes, la "latencia" es la duración del retraso antes de que se cargue la información solicitada. A medida que aumenta la latencia, también aumenta el número de usuarios que abandona la página web.

Incluso pequeñas disminuciones en el tiempo de carga aumentan de forma considerable la participación del usuario. Por ejemplo, un estudio de Walmart demostró que cada mejora de un segundo en el tiempo de carga de la página aumentaba las conversiones en un 2 %. Por otro lado, a medida que aumenta la latencia, es más probable que los usuarios dejen de utilizar un sitio web o una aplicación. La latencia disminuye a medida que se reduce la distancia que tiene que recorrer la información.

¿Qué son los puntos de presencia (PdP)?

Un punto de presencia (PoP) es un lugar en el que se interconectan las redes de comunicaciones, y en el contexto de Internet es un lugar en el que reside el hardware (enrutadores, conmutadores, servidores, etc.) que permite que las personas se conecten a Internet. Cuando se habla de una red en el perímetro, un punto de presencia es la ubicación de un servidor en el perímetro. Más PoP en el perímetro implica respuestas más rápidas para un mayor número de usuarios, ya que la probabilidad de que un PoP esté geográficamente cerca de un usuario aumenta cuantos más PoP haya.

¿Con qué rapidez responden de media las funciones sin servidor?

Cloudflare realizó pruebas en las que se compararon AWS Lambda, Lambda@Edge y Cloudflare Workers para demostrar la capacidad de respuesta sin servidor y probar la eficacia de la implementación de funciones sin servidor en múltiples PoP. (Las funciones de prueba eran simples scripts que respondían con la hora actual del día en el que se ejecutaban).

El siguiente gráfico muestra los tiempos de respuesta de las funciones de AWS Lambda (azul), AWS Lambda@Edge (verde) y Cloudflare Workers (rojo). Para esta prueba, las funciones de AWS Lambda se alojaron en la región US-East-1.

aws-lambda-vs-cloudflare-workers

En una arquitectura sin servidor, el lugar en el que se ejecuta el código (geográficamente hablando) tiene impacto en la latencia. Si se ejecuta el código de la aplicación más cerca del usuario, el rendimiento de la aplicación mejora, ya que la información no tiene que viajar tan lejos, y la aplicación responde más rápido. Aunque los tiempos de respuesta variaron en los tres servicios, las respuestas de Cloudflare Workers normalmente fueron las más rápidas. Lambda@Edge fue el siguiente más rápido, lo que ejemplifica las ventajas de ejecutar funciones sin servidor en múltiples ubicaciones.

Aunque las regiones de AWS están repartidas por todo el mundo, Cloudflare tiene más PoP en total. Cloudflare también realizó pruebas solo en Norteamérica, y se filtraron los retrasos causados por la solución de DNS. Los resultados, que se muestran a continuación, son otro ejemplo de cómo un mayor número de PoP reduce la latencia y mejora el rendimiento. Ten en cuenta que las respuestas de Cloudflare Workers son las que menos tiempo tardan.

lambda-vs-workers

Arranques en frío sin servidor: ¿Con qué rapidez responden los nuevos procesos en una arquitectura sin servidor?

En la informática sin servidor, un "arranque en frío" hace referencia a cuando una función que no se ha ejecutado recientemente tiene que responder a un evento. Dichas funciones deben ser "puestas en marcha" antes de poder ejecutarse, lo que suele tardar unos milisegundos. Esto puede causar problemas de latencia adicionales.

Cloudflare Workers ha eliminado por completo los arranques en frío, lo que significa que no necesitan ningún tiempo de arranque. Esto es así en todas las ubicaciones de la red global de Cloudflare. En cambio, las funciones Lambda y Lambda@Edge pueden tardar más de un segundo en responder desde un arranque en frío.

Las diferencias se deben sobre todo al hecho de que Cloudflare Workers se ejecuta en Chrome V8 en lugar de en Node.js. Node.js se construye sobre Chrome V8, tarda más en iniciarse y tiene más sobrecarga de memoria. Las instancias de V8 suelen tardar menos de 5 milisegundos en iniciarse.

Más información sobre Cloudflare Workers.