¿Cómo funciona el JavaScript sin servidor? | Service workers y Cloudflare Workers

El JavaScript sin servidor se utiliza para desarrollar aplicaciones web sin servidor con una latencia mínima.

Metas de aprendizaje

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

  • Definir el JavaScript sin servidor
  • Entender cómo se utiliza el JavaScript sin servidor para desarrollar aplicaciones web de baja latencia
  • Más información acerca de por qué JavaScript es más eficaz que VCL
  • Entender el almacenamiento en caché de HTTP y las solicitudes HTTP
  • Más información sobre service workers, Cloudflare Workers, y las diferencias entre sí

Copiar el enlace del artículo

¿Qué es el JavaScript sin servidor?

El JavaScript sin servidor es código JavaScript que comprende toda o parte de una aplicación, solo se ejecuta cuando se solicita, y no se aloja en servidores propietarios. Permite que los desarrolladores creen aplicaciones sin servidor de alto rendimiento y baja latencia (como las aplicaciones JAMstack), que se ejecutan en una red y evitan muchos problemas asociados a otras aplicaciones sin servidor, como los arranques en frío.

El JavaScript sin servidor se aloja en una red del perímetro o lo hace un servicio de caché HTTP, que almacena el contenido para responder rápidamente a las solicitudes HTTP. Los desarrolladores pueden escribir e implementar funciones de JavaScript que procesan las solicitudes HTTP antes de que viajen hasta el servidor de origen.

JavaScript sin servidor en el perímetro

Si se usa JavaScript sin servidor, es posible ampliar la funcionalidad y mejorar la experiencia del usuario de las aplicaciones existentes ejecutando código en el perímetro, o crear una nueva aplicación completamente nueva sin servidor que sea rápida y escalable. Cloudflare Workers es una plataforma JavaScript sin servidor.

¿Qué es Varnish?

Varnish es un acelerador web diseñado para acelerar las aplicaciones web y mejorar el rendimiento de los sitios web. Es un proxy inverso de caché HTTP, lo que significa que se sitúa delante de cualquier servidor web, y acelera el tráfico HTTP hacia y desde ese servidor mediante el almacenamiento en la caché, o almacenamiento normal, de cualquier contenido que soliciten los clientes web con frecuencia. El Lenguaje de configuración de Varnish, o VCL, se utiliza junto con Varnish para permitir que los desarrolladores personalicen la forma en que Varnish gestiona las solicitudes web.

¿Cuál es la ventaja de utilizar JavaScript en lugar de VCL en una arquitectura sin servidor?

VCL es un lenguaje de configuración diseñado para facilitar la configuración de la caché de Varnish; no es un lenguaje de programación completo. VCL no es lo suficientemente flexible como para desarrollar o ampliar aplicaciones robustas. Si se compara con Javascript, es más limitado. Además, VCL no se utiliza fuera de las implementaciones de Varnish, así que la mayoría de los desarrolladores no están familiarizados con él. En cambio, JavaScript está en todos sitios y se utiliza mucho para crear aplicaciones. El uso de JavaScript en una arquitectura sin servidor permite a los desarrolladores crear aplicaciones completas en un lenguaje con el que están familiarizados.

El JavaScript sin servidor permite que un grupo más amplio de desarrolladores pueda aprovechar la informática sin servidor en el perímetro, y permite que esos desarrolladores creen una mayor variedad de aplicaciones.

¿Cómo ayuda el desarrollo de una aplicación con JavaScript sin servidor a reducir la latencia?

El JavaScript sin servidor se ejecuta en una red de caché HTTP, que está más cerca del usuario final que el código alojado en un servidor de origen. Como resultado, las solicitudes no tienen que viajar hasta el servidor de origen y volver, y la aplicación responde mucho más rápido a las interacciones del usuario. Cuantas más ubicaciones de perímetro geográficamente distribuidas tenga una red de caché, más se reducirá la latencia.

¿Cuándo se ejecuta el JavaScript sin servidor?

En un modelo sin servidor, las aplicaciones se dividen en funciones, y el código de las funciones se ejecuta en respuesta a determinados eventos. De lo contrario, no se ejecuta. El evento que desencadena la ejecución de JavaScript sin servidor es una solicitud HTTP. Los desarrolladores pueden personalizar el tipo de solicitud HTTP a las que responden sus funciones JavaScript, y cómo se alterará o cumplirá la solicitud HTTP.

¿Qué es una solicitud HTTP?

Es una solicitud enviada mediante HTTP (protocolo de transferencia de hipertexto) desde un cliente a un servidor. Los navegadores traducen las acciones del usuario, como hacer clic en un hipervínculo o enviar un formulario, en solicitudes HTTP. La solicitud se envía entonces al servidor, y este envía una respuesta HTTP para satisfacer ta solicitud. También se produce una solicitud HTTP cuando una aplicación hace una llamada a la API.

¿Qué es el almacenamiento en caché HTTP?

El almacenamiento en caché HTTP se produce cuando un servidor o un navegador guarda una copia de la respuesta a la solicitud HTTP de un usuario para producir respuestas más rápidas a futuras solicitudes. Un servidor CDN es un ejemplo de caché HTTP. Algunos servicios de caché HTTP permiten que los desarrolladores personalicen cómo funciona la caché HTTP para sus aplicaciones.

Cloudflare es una red de perímetro de caché HTTP con centros de datos en todo el mundo, y permite que los desarrolladores escriban e implementen su propio JavaScript en el perímetro de la red. En la red de Cloudflare, el almacenamiento en caché HTTP no tiene lugar en ningún servidor específico, sino en el centro de datos más cercano al origen de la solicitud HTTP.

¿Qué son los service workers?

Los service workers son scripts que descargan y ejecutan los navegadores para crear experiencias personalizadas para los usuarios. Service workers posibilita funciones como las notificaciones push, la sincronización en segundo plano y la funcionalidad sin conexión en el navegador. Están escritos en JavaScript, e interceptan, modifican y responden a las solicitudes HTTP antes de que estas lleguen a Internet.

Hay dos formas en que los service workers pueden gestionar el tráfico HTTP:

El Service Worker responde

Los Service workers pueden responder a las solicitudes HTTP sin contactar con el servidor web

El Service Worker modifica la solicitud

Los Service workers pueden modificar las solicitudes y respuestas HTTP

¿Qué son los Cloudflare Workers?

Los Cloudflare Workers son una plataforma que permite que las funciones sin servidor se ejecuten lo más cerca posible del usuario final. Básicamente, el propio código sin servidor se "almacena en caché" en la red, y se ejecuta cuando recibe el tipo de solicitud adecuado. Los Cloudflare Workers están escritos en JavaScript contra la API de los service workers, lo que significa que pueden utilizar toda la funcionalidad que ofrecen los service workers. Aprovechan el motor V8 de Chrome para su ejecución. El código de los Cloudflare Workers se aloja en la amplia red de centros de datos de Cloudflare en todo el mundo.

¿Qué es Chrome V8?

Chrome V8, también conocido como "V8", es un motor de JavaScript desarrollado por Google para compilar, optimizar y ejecutar JavaScript. Al usar V8 para la ejecución del código JavaScript, el tiempo de inicio de los workers de JavaScript se reduce de forma considerable, y se acaba con el problema de los "arranques en frío" en la mayoría de los casos. El V8 también se analiza en profundidad en busca de vulnerabilidades de seguridad, por lo que es ideal para ejecutar código JavaScript de forma segura.

¿Qué tiene de único Cloudflare Workers si se compara con service workers?

Una de las principales diferencias entre usar Cloudflare Workers y service workers es que los service workers se ejecutan del lado del cliente, y los tiene que descargar el navegador del usuario, mientras que los Cloudflare Workers se ejecutan en el perímetro de la red de Cloudflare, entre el usuario y el resto de Internet, ejecutándose de forma efectiva dentro de la propia red.

Más información sobre Cloudflare Workers, y el motivo de la creación de Cloudflare Workers.