Subscribe to receive notifications of new posts:

La supernube más programable con Cloudflare Snippets

11/17/2022

8 min read
The most programmable Supercloud with Cloudflare Snippets

Su tráfico, como le gusta

Cloudflare es utilizado por una base de clientes muy diversa. Ofrecemos productos fáciles de usar para todo, desde configurar encabezados HTTP hasta reescribir la ruta URI y realizar redireccionamientos de URL. A veces, los clientes necesitan más que la funcionalidad lista para usar, no solo agregar un encabezado HTTP, sino realizar algunos cálculos avanzados para crear el resultado. Hoy, tendrían que crear una solicitud de función y esperar el envío, escribir un Cloudflare Worker o mantener esta modificación "en origen", en su propia infraestructura.

Para simplificar esto, nos complace anunciar Cloudflare Snippets. Snippets son una nueva forma de realizar modificaciones de tráfico que los usuarios no pueden realizar a través de nuestras ofertas de productos o que desean realizar programáticamente. ¿Cuál es la mejor parte? La gran mayoría de los clientes no pagarán nada adicional por usar Snippets.

Los usuarios ahora pueden elegir. Realizar la acción a través de una regla. O, si se necesitan más funcionalidades, escriba un Snippet.  Ninguno significará esperar. Ninguno incurrirá en costes adicionales (aunque se aplicará un límite alto de uso justo). Snippets desbloquea a los usuarios para que hagan lo que quieran y cuando quieran. Todo en Cloudflare.

Snippets admitirán la importación de código escrito en varios idiomas, como archivos JavaScript (moderno), VCL (heredado) y Apache .htaccess (heredados). Esto permite que los clientes migren el código operativo heredado a nuestra plataforma, al mismo tiempo que consolidan sus operaciones de JavaScript.

Utilice el formulario de registro para unirse a la lista de espera de Snippets si está interesado en la prueba. Esperamos comenzar a aceptar usuarios en la versión beta cerrada a principios de 2023.

¿Por qué crear Snippets?

En los últimos 18 meses, hemos lanzado una serie de nuevos productos de reglas, como Reglas de transformación, Reglas de caché, Reglas de origen, Reglas de config. y Reglas de redirección. Estos nuevos productos brindan más control a los clientes sobre cómo procesamos su tráfico a medida que fluye a través de nuestra red global. Los comentarios sobre estos productos hasta ahora han sido increíblemente positivos. Sin embargo, nuestros clientes aún necesitan ocasionalmente la capacidad de hacer más de lo que permite la funcionalidad lista para usar.

Siempre existen casos de uso en los que un producto no proporciona la funcionalidad que un cliente necesita para su situación específica.  Por ejemplo, aunque miles de nuestros clientes ahora usan Reglas de transformación para resolver sus casos de uso de modificación de encabezado HTTP, queda una pequeña cantidad de casos de uso que no son posibles, como establecer tiempos de vencimiento dinámicos con cookies o hash tokens con una clave.

Aquí es donde ayuda Cloudflare Snippets. Los clientes ya no necesitarán usar la plataforma Cloudflare Workers completa para implementar estos casos de uso que son relativamente simples. Tampoco tendrán que esperar a que construyamos sus solicitudes de funciones. En cambio, podrán ejecutar un Snippet de JavaScript.

Migración de código heredado a Snippets

Varnish Control Language (VCL) únicamente se usa en el contexto de Varnish. Lanzado hace aproximadamente 16 años, históricamente se ha utilizado para configurar el tráfico y el enrutamiento para las redes de entrega de contenido, ya que se extendía a una amplia gama de casos de uso.

Aún hay un importante número de empresas que utilizan VCL para realizar acciones de enrutamiento y modificación del tráfico. Mientras que otros proveedores están eliminando el soporte para VCL, queremos asegurarnos de que quienes se sienten cómodos usándolo aún reciban soporte.

Snippets no ejecutarán VCL puro. En su lugar, convertiremos VCL en reglas o Snippets fáciles de mantener. Para lograr esto, estamos creando un convertidor de VCL de autoservicio y fácil de usar que analiza el código VCL cargado y genera Snippets sugeridos automáticamente, y si podemos encontrar una coincidencia, también genera reglas sugeridas para productos como Reglas de transformación o Reglas de caché.

Este tema se manejó inicialmente a través de Project Turpentine, un conjunto de herramientas que utilizan los empleados de Cloudflare para analizar el VCL de un cliente en una configuración de JavaScript sugerida. Este JavaScript podría luego cargarse en un Worker o una serie de Workers.

Snippets lleva la idea y los principios de Turpentine más allá. Mucho más allá. Al construir un analizador directamente en el panel de control, otorga el poder directamente a los usuarios y les da una opción. Puede indicarnos que migremos todo lo que podamos a Reglas con el código restante migrado a Snippets o puede optar por indicarnos que migremos todo a Snippets discretos. Es su decisión.

Le daremos a los archivos de configuración Apache htaccess y NGINX el mismo tratamiento. El objetivo es que los usuarios simplemente carguen los archivos de la configuración Apache o NGINX de sus sitios web y generamos Snippets o reglas sugeridos.

Los días en lo que se tenían que usar código heredado para tareas operativas están llegando a su fin. Los Snippets permiten a los usuarios migrar estas cargas de trabajo a Cloudflare y les permiten concentrarse en los problemas más grandes del negocio versos el mantenimiento de los sistemas heredados.

La diferencia entre Snippets y Workers

La mayoría de los lectores ya estarán familiarizados con Cloudflare Workers, nuestra poderosa plataforma de desarrollo que permite a las empresas ejecutar y crear productos y soluciones completos en la red global de Cloudflare. Snippets también se basa en esta plataforma, pero tiene algunas diferencias clave.

La primera gran diferencia es que un Snippet se ejecutará como parte del Motor del conjunto de reglas como nuevas fases dedicadas, de forma similar a las Reglas de transformación y las Reglas de caché. Los clientes podrán seleccionar y ejecutar un Snippet basado en cualquier filtro del motor del conjunto de reglas. Esto permite a los clientes ejecutar un Snippet en cada solicitud o filtrar el tráfico HTTP específico en función de los campos que ofrecemos, como el tráfico con una determinada puntuación de bots, que se origina en un país específico o con una cookie específica. Los Snippets serán aditivos, lo que significa que los usuarios pueden tener un Snippet para agregar un encabezado HTTP y otro para reescribir la URL, y ambos se ejecutarán si coinciden:

Otra diferencia importante: los Cloudflare Snippets están disponibles para todos los niveles del plan, sin costo adicional. El 99 % de los usuarios no tendrán que pagar un solo centavo por usar esta solución. Esto permite a los clientes migrar sus cargas de trabajo simples de soluciones heredadas como VCL a la plataforma Cloudflare y reducir activamente su gasto mensual.

Planes gratuitos Planes Pro Planes Business Planes Enterprise
Snippets disponibles 5 Snippets por zona. 20 Snippets por zona. 50 Snippets por zona. 200 Snippets por zona* (Los clientes pueden hablar con su equipo de Customer Success para aumentar este).

Los Cloudflare Snippets son livianos en comparación con Workers y ofrecen un tiempo de ejecución máximo de 5 ms, una memoria máxima de 2 MB y un tamaño total del paquete de 32 KB. Esta huella comparativamente pequeña nos permite ofrecer esto al 99 % de los usuarios sin costo adicional, mientras que también es suficiente para los casos de uso identificados como la modificación del encabezado HTTP, la reescritura de URL y el enrutamiento de tráfico, lo cual no necesita los grandes recursos que ofrecen Cloudflare Workers.

Cloudflare Snippets Cloudflare Workers Unbound
((para hacer la comparación)
Soporte de tiempo de ejecución JavaScript JavaScript y WASM
Ubicación de ejecución Global: todas las ubicaciones de Cloudflare Global: todas las ubicaciones de Cloudflare
Disparadores admitidos Filtros de motor del conjunto de reglas Solicitud HTTP
Respuesta HTTP
Disparadores de cron
Tiempo de ejecución máximo 5 ms HTTP de 30 segundos
15 minutos (disparador de cron)
Memoria máxima 2 MB 128 MB
Tamaño total del paquete 32 KB 5 MB
Variables de entornos 8/Snippet 64/Worker
Tamaño de la variable de entornos 1 KB 5 KB
Solicitudes secundarias 1/solicitud 1000/solicitudes
Soporte de Terraform
Soporte de Wrangler
Disparadores de cron
Almacén de valores clave
Durable Objects
Integración R2

¿Qué podrá crear con Cloudflare Snippets?

Los Snippets permitirán a los clientes migrar sus cargas de trabajo existentes a Cloudflare. También abrirán varios de nuevos casos de uso posibles para los clientes. Hemos destacado tres ejemplos comunes a continuación, pero hay muchos más para elegir.

Ejemplo 1: Envío de bots sospechosos a un honeypot

Al crear Snippets, los clientes podrán acceder a las funciones de Cloudflare disponibles en el tiempo de ejecución de Workers, como el campo de puntuación de bots. Esto permite a los clientes reenviar una solicitud HTTP a un honeypot o usar la función RegExp Javascript para cambiar la construcción de URL que se envía de vuelta al usuario final cuando al tráfico se le asigna una puntuación de bot por debajo de un cierto umbral; por ejemplo, 29 y menor.

…
if (request.cf.botManagement.score < 30) {
const honeypot = "https://example.com/";
return await fetch(honeypot, request);
…
}

Ejemplo 2: Modificación de cookies

Otro caso de uso común que prevemos para el direccionamiento de Snippets es la modificación de cookies. El uso puede variar desde simplemente configurar un vencimiento en cinco minutos usando las funciones de JavaScript getTime y setTime hasta configurar una cookie dinámica basada en los atributos de solicitud del usuario con el fin de hacer pruebas A/B.

…
{
let res = await fetch(request);
res = new Response(res.body, res);
// 24h * 60m * 60s * 1000ms = 86400000ms
const expiry = new Date(Date.now() + 7 * 86400000).toUTCString();
const group = request.headers.get("userGroup") == "premium" ? "A" : "B";
res.headers.append(
      "Set-Cookie",
`testGroup=${group}; Expires=${expiry}; path=/`
    );
…

Ejemplo 3: Gestión de consultas de URI

Los clientes también pueden implementar Cloudflare Snippets para realizar operaciones complejas, como dividir el valor de la consulta URI para eliminar o inyectar parámetros adicionales de manera selectiva. La manipulación de cadenas de consulta usualmente se realiza mediante las reglas de transformación. Sin embargo, con las reglas de transformación, la acción set/ es efectivamente una acción de reemplazo. Esta acción, cuando se aplica a la cadena de consulta de URI, eliminará el valor completo, si lo hay, y lo establecerá en lo que especifica el usuario, sobrescribiéndolo de este modo. Este es un problema para los clientes que desean inyectar selectivamente parámetros de consulta específicos para el tráfico que coinciden. Por ejemplo, establecer una consulta adicional, como ?utm_campaign=facebook cuando se detectan plataformas de redes sociales comunes en el agente de usuario. Con Snippets, los clientes podrán realizar esta eliminación e inserción selectivas utilizando una simple pieza de JavaScript, por ejemplo.

…
if (userAgent.includes("Facebook")) {
      const url = new URL(request.url);
      const params = new URLSearchParams(url.search);
      params.set("utm_campaign", "facebook");
      url.search = params.toString();
      const transformedRequest = new Request(url, request)
…
}

Estamos entusiasmados por ver qué otros casos de uso desbloquean Cloudflare Snippets para nuestros clientes.

¿Dejará de añadir acciones a los conjuntos de reglas?

¡La respuesta simple es que no! Continuaremos desarrollando nuestras acciones sin código dentro del motor del conjunto de reglas, desarrollando nuevos productos para resolver las necesidades de los clientes.

Puede sonar obvio, pero un componente central para mejorar las funciones es hablar con los clientes. Hablar con los usuarios de Snippet nos ayudará a comprender qué casos de uso de la vida real ayudan los Snippets a resolver y resaltar las brechas de funciones que tenemos en nuestro conjunto de productos. Podemos luego revisar si tiene sentido producir ese caso de uso o dejar que requiera Snippets.

También entendemos que no todo el mundo es desarrollador de software. Por lo tanto, estamos explorando cómo podemos hacer que los Snippets estén accesibles para todos al crear plantillas seleccionables y que estén disponibles en una biblioteca que los clientes pueden copiar y modificar, que requiera un conocimiento mínimo de codificación. Con Snippets, poderoso no significa difícil.

Acceso a Cloudflare Snippets

Los Snippets están actualmente en desarrollo — puede registrarse aquí para unirse a la lista de espera para tener acceso.

Esperamos comenzar a admitir usuarios en la versión beta cerrada a principios del 2023, seguido de una versión beta abierta.

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
Developer Week (ES)Snippets (ES)JavaScript (ES)Español

Follow on X

Cloudflare|@cloudflare

Related posts

April 05, 2024 1:01 PM

Disponibilidad general de la API Browser Rendering, implementación de Cloudflare Snippets, SWR y, por último, Workers for Platforms, que ya está al alcance de todos los usuarios

La API Browser Rendering ya está disponible para todos los clientes de pago de Workers y hemos mejorado la gestión de sesiones...

April 04, 2024 1:05 PM

Nuevas herramientas para la seguridad de la producción: implementaciones graduales, correlaciones de código fuente, limitación de velocidad y nuevos SDK

Hoy anunciamos cinco novedades que te darán más poder: implementaciones graduales, seguimientos en Tail Workers, una nueva API de limitación de velocidad, la nueva API de SDK, y actualizaciones de Durable Objects, cada una pensada con servicios de producción esenciales...

April 03, 2024 1:30 PM

R2 añade notificaciones de eventos, compatibilidad para migraciones desde Google Cloud Storage y un nivel de almacenamiento de acceso ocasional

Nos complace anunciar tres nuevas funciones de Cloudflare R2: notificaciones de eventos, compatibilidad para migraciones desde Google Cloud Storage y un nivel de almacenamiento de acceso ocasional...