Volver al blog

Síguenos y suscríbete

El lenguaje de marcado ESI y la historia de las bibliotecas desarrolladas para el edge

Kailan Blanks

Senior Software Engineer, Developer Relations, Fastly

Las redes de distribución de contenidos tradicionales se han desarrollado sobre productos patentados, que reciben soporte de complementos también patentados como la optimización de imágenes y el filtrado de contenidos. Fastly siempre ha ido un poco más allá: desde el comienzo, hemos brindado a nuestros clientes la posibilidad de configurar las peticiones en el edge gracias a nuestra red en la caché de Varnish. Sin embargo, las restricciones propias del Varnish Configuration Language, el lenguaje específico de dominio usado para configurar Varnish, limitaban hasta ahora las funcionalidades que podíamos ofrecer.

Con Compute, ya es posible elegir las mejores soluciones, ¡e incluso desarrollar una para ti! Los desarrolladores pueden crear y compartir bibliotecas para estas tareas especializadas de la manera que más les convenga y, si una solución no está a la altura, pueden modificar el código en función de sus necesidades.

En Fastly, ya hemos comenzado a hacerlo así. De hecho, he estado trabajando en una nueva caja de Rust que permite ofrecer un lenguaje de marcado Edge Side Includes más configurable que lo que nosotros o nuestros competidores habíamos podido ofrecer hasta ahora.

El lenguaje de marcado Edge Side Includes es una técnica probada que se ha utilizado durante décadas para brindar soporte a algunas de las aplicaciones web más complejas. Incluye etiquetas especiales en el código fuente HTML que le indican al servidor edge que busque otro documento y lo inserte en el código fuente.

<esi:include src="http://example.com/1.html" alt="http://bak.example.com/2.html" onerror="continue"/>

Durante mucho tiempo, Fastly ha mantenido una subdivisión de ESI en sus configuraciones y, cuando escribimos sobre este tema en 2014, invitamos a nuestros lectores a contactar con el equipo de soporte para descubrir cómo habilitarlo para una petición en particular.

Sin embargo, ese recurso tenía sus limitaciones y carecía de la flexibilidad que los desarrolladores necesitaban para crear aplicaciones modernas. Por ejemplo, no se podía cambiar el espacio de nombres XML con esta implementación. Tampoco era posible procesar etiquetas ESI dentro de Fastly, ya que no había manera de usar una implementación propia.

Hemos realizado grandes avances desde entonces. Ahora que nuestros clientes tienen control total sobre sus recursos informáticos, el edge está más abierto que nunca.

Un recurso configurable

El siguiente ejemplo muestra cómo utilizar nuestra nueva biblioteca ESI Rust para crear una página con contenidos de múltiples backend mediante una aplicación de espacio de nombres XML personalizado. Como tenemos control total de las peticiones de salida, podemos introducir un enrutamiento avanzado y manipulación de contenidos a medida que el documento se envía al usuario.

Un recurso sin costes

Por supuesto, con un lenguaje como Rust o JavaScript a disposición, podrías implementar el ESI tú mismo, pero las funcionalidades de alto nivel que las CDN trajeron al mercado se desarrollaron por una razón: y es que muchas personas tienen el mismo problema que tú. En Fastly, cuando documentamos las implementaciones de estas funcionalidades, ofrecemos soluciones listas para usar que se pueden instalar en tus programas de inmediato y sin limitaciones. Puedes utilizar la biblioteca ESI de alguien más, ¡o incluso reemplazarla por la tuya!

Nuestros clientes ya están usando este recurso para resolver problemas reales. Por ejemplo, un «retailer» ha creado páginas de producto con más de cien fragmentos individuales de la memoria caché, y eso es posible gracias al rendimiento de Rust en el edge. Con la ayuda de nuestro servidor de pruebas local, sus equipos pueden sacar versiones de forma rápida y autónoma, al tiempo que mantienen un frontend web coherente.

¿Te apetece probarlo? Clona el fiddle anterior y pruébalo con tu propio origen; no hace falta crear ninguna cuenta de Fastly. Si quieres publicar un servicio global completo cuando hayas terminado, sí que te recomiendo que te registres en la versión de prueba de Compute para poder utilizar la caja ESI de inmediato.