Subscribe to receive notifications of new posts:

A Supercloud mais programável que existe com o Cloudflare Snippets

11/17/2022

8 min read
The most programmable Supercloud with Cloudflare Snippets

Seu tráfego, do jeito que você gosta

A Cloudflare é usada por uma base de clientes altamente diversificada. Oferecemos produtos fáceis de usar para tudo, desde definir cabeçalhos HTTP até reescrever o caminho URI e realizar redirecionamentos de URL. Às vezes, os clientes precisam de mais do que a funcionalidade pronta para uso, não apenas adicionando um cabeçalho HTTP, mas realizando alguns cálculos avançados para criar a saída. Hoje, eles precisariam criar uma solicitação de recurso e aguardar o envio, escrever o Cloudflare Workers ou manter essa modificação "na origem", em sua própria infraestrutura.

Para simplificar isso, temos o prazer de anunciar o Cloudflare Snippets. Os Snippets são uma nova maneira de realizar modificações de tráfego que os usuários não podem fazer por meio de nossas ofertas de produtos ou desejam fazer de forma programática. A melhor parte? A grande maioria dos clientes não pagará nada a mais pelo uso do Snippets.

Os usuários agora têm uma escolha. Executar a ação por meio de uma regra. Ou, se for necessária mais funcionalidade, escrever um Snippet.  Nenhuma delas significa esperar. Nenhuma delas incorrerá em custos adicionais (embora um limite alto de uso justo seja aplicado). Os Snippets permitem que os usuários façam o que quiserem, quando quiserem. Tudo na Cloudflare.

Os Snippets são compatíveis com a importação de código escrito em várias linguagens, como JavaScript (moderno), VCL (legado) e arquivos Apache .htaccess (legados). Isso permite que os clientes migrem o código operacional legado para nossa plataforma, ao mesmo tempo em que consolidam suas operações de JavaScript.

Use o formulário de inscrição para entrar na lista de espera do Snippets se você estiver interessado em testar. Esperamos começar a admitir usuários no beta fechado no início de 2023.

Por que criamos o Snippets?

Nos últimos 18 meses, lançamos vários novos produtos de regras, como Transform Rules, Cache Rules, Origin Rules, Config Rules e Redirect Rules. Esses novos produtos oferecem mais controle aos clientes sobre como processamos seu tráfego conforme ele flui por nossa rede global. O feedback sobre esses produtos até agora tem sido extremamente positivo. No entanto, nossos clientes ainda precisam, ocasionalmente, da capacidade de fazer mais do que a funcionalidade pronta para uso permite.

Sempre há alguns casos de uso em que um produto não fornece a funcionalidade que um cliente precisa para sua situação específica.  Por exemplo, enquanto milhares de nossos clientes usam o Transform Rules para resolver seus casos de uso de modificação de cabeçalho HTTP, ainda há um pequeno número de casos de uso que não são possíveis, como definir tempos de expiração dinâmicos com cookies ou tokens de hash com uma chave.

É aqui que o Cloudflare Snippets ajuda. Os clientes não precisam mais usar a plataforma Cloudflare Workers completa para implementar esses casos de uso relativamente simples. Eles também não precisam esperar que criemos suas solicitações de recursos. Em vez disso, eles podem executar um Snippet de JavaScript.

Migrar código legado para o Snippets

A Varnish Control Language (VCL) é usada apenas no contexto do Varnish. Lançado há cerca de 16 anos, ele tem sido historicamente usado para configurar tráfego e roteamento para redes de distribuição de conteúdo, pois era extensível a uma ampla gama de casos de uso.

Ainda há várias empresas usando a VCL para realizar ações de roteamento e modificação de tráfego. Embora outros provedores estejam depreciando a compatibilidade com a VCL, queremos garantir que aqueles que se sentem confortáveis em usá-lo ainda tenham suporte.

O Snippets não executa a VCL pura. Em vez disso, convertemos a VCL em regras ou Snippets fáceis de manter. Para conseguir isso, estamos criando um conversor de VCL de autoatendimento simples de usar que analisa o código carregado em VCL e gera automaticamente Snippets sugeridos e, se pudermos encontrar uma correspondência, também gera regras sugeridas para produtos como Transform Rules ou Cache Rules.

Esse tópico foi tratado inicialmente por meio do Project Turpentine, um conjunto de ferramentas usado pelos funcionários da Cloudflare para analisar a VCL de um cliente em uma configuração de JavaScript sugerida. Esse JavaScript pode então ser carregado em um Worker, ou vários Workers.

Os Snippets levam a ideia e os princípios do Turpentine além. Muito além. Ao criar um analisador diretamente no painel, ele coloca o poder diretamente nas mãos dos usuários e oferece a eles uma escolha. Você pode nos dizer para migrar tudo o que pudermos para Rules com o código restante migrado para o Snippets, ou você pode optar para migrar tudo para Snippets distintos. A decisão é sua.

Daremos o mesmo tratamento aos arquivos de configuração Apache htaccess e NGINX. O objetivo é que os usuários simplesmente carreguem os arquivos de seus sites com configuração Apache ou NGINX, e nós geramos os Snippets e/ou as regras sugeridos.

Os dias de ter que usar código legado para tarefas operacionais estão chegando ao fim. Os Snippets permitem que os usuários migrem essas cargas de trabalho para a Cloudflare e deixam que eles se concentrem nos problemas maiores da empresa ao invés da manutenção de sistemas legados.

A diferença entre o Snippets e o Workers

A maioria dos leitores já está familiarizada com o Cloudflare Workers, nossa poderosa plataforma para desenvolvedores que permite que as empresas executem e criem produtos e soluções completos na rede global da Cloudflare. O Snippets também é criado nesta plataforma, mas tem algumas diferenças importantes.

A primeira grande diferença é que um Snippet será executado como parte do Ruleset Engine como novas fases dedicadas, semelhantes a Transform Rules e Cache Rules. Os clientes podem selecionar e executar um trecho com base em qualquer filtro de mecanismo de conjunto de regras. Isso permite que os clientes executem um Snippet em cada solicitação ou filtrem tráfego HTTP específico com base nos campos que oferecemos, como tráfego com uma determinada pontuação de bots, originário de um país específico ou com um cookie específico. Os Snippets são aditivos, o que significa que os usuários podem ter um Snippet para adicionar um cabeçalho HTTP e outro para reescrever o URL, e ambos serão executados se combinarem:

Outra grande diferença, o Cloudflare Snippets está disponível para todos os níveis de plano, sem custo adicional. 99% dos usuários não pagarão um único centavo, nunca, para usar esta solução. Isso permite que os clientes migrem suas cargas de trabalho simples de soluções legadas, como VCL, para a plataforma da Cloudflare e reduzam ativamente seus gastos mensais.

Planos Gratuitos Planos Pro Planos Business Planos Enterprise
Snippets disponíveis 5 Snippets por zona. 20 Snippets por zona. 50 Snippets por zona. 200 Snippets por zona* (Os clientes podem falar com sua equipe de sucesso do cliente para aumentar esta quantidade).

O Cloudflare Snippets é leve quando comparado com o Workers, oferecendo tempo máximo de execução de 5 ms, memória máxima de 2 MB e tamanho total do pacote de 32 KB. Essa dimensão pequena, comparativamente, nos permite oferece-lo a 99% dos usuários sem custo adicional, além de ser suficiente para os casos de uso identificados, como modificação de cabeçalho HTTP, reescrita de URL e roteamento de tráfego, todos eles não precisam dos vastos recursos oferecidos pelo Cloudflare Workers.

Cloudflare Snippets Cloudflare Workers Unbound
(Para comparação)
Suporte de tempo de execução JavaScript JavaScript e WASM
Execução local Global – Todos os locais da Cloudflare Global – Todos os locais da Cloudflare
Compatível com acionadores Filtros do mecanismo do conjunto de regras Solicitação HTTP
Resposta HTTP
Cron Triggers
Tempo máximo de execução 5ms 30 segundos HTTP
15 minutos (Cron Trigger)
Memória máxima 2MB 128MB
Tamanho total do pacote 32KB 5MB
Variáveis de ambiente 8/Snippet 64/Worker
Tamanho das variáveis de ambiente 1KB 5KB
Subsolicitações 1/solicitação 1000/solicitação
Compatível com Terraform
Compatível com Wrangler
Cron Triggers
Armazenamento de chave-valor
Durable Objects
Integração com R2

O que você será capaz de criar com o Cloudflare Snippets?

Os Snippets vão permitir que os clientes migrem suas cargas de trabalho existentes para a Cloudflare. Eles também vão abrir a possibilidade de vários novos casos de uso para os clientes. Destacamos abaixo três exemplos comuns, porém, há muitos mais para escolher.

Exemplo 1: enviar bots suspeitos para um honeypot

Ao criar Snippets, os clientes poderão acessar os recursos da Cloudflare disponíveis no tempo de execução do Workers, como o campo de pontuação de bots. Isso permite que os clientes encaminhem uma solicitação HTTP para um honeypot ou usem a função Javascript RegExp para alterar a construção do URL que é enviado de volta ao usuário final quando o tráfego recebe uma pontuação de bot abaixo de um determinado limite, por exemplo, 29 e inferior.

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

Exemplo 2: modificação de cookies

Outro caso de uso comum que prevemos que os Snippets abordem é a modificação de cookies. O uso pode variar de simplesmente definir uma expiração em cinco minutos usando as funções JavaScript getTime e setTime até definir um cookie dinâmico com base nos atributos de solicitação do usuário para fins de teste 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=/`
    );
…

Exemplo 3: gerenciamento de consulta de URI

Os clientes também podem implantar o Cloudflare Snippets para fazer operações complexas, como unir o valor da consulta de URI para remover ou injetar, de forma seletiva, parâmetros adicionais. A manipulação da string de consulta geralmente é feita usando Transform Rules. No entanto, com Transform Rules, a ação set/ é efetivamente uma ação de replace. Esta ação, quando aplicada à string de consulta do URI, removerá todo o valor, se houver, e o definirá como especificado pelo usuário, substituindo-o. Este é um problema para os clientes que desejam injetar de forma seletiva parâmetros de consulta específicos para correspondência de tráfego. Como definir uma consulta adicional, por exemplo ?utm_campaign=facebook quando plataformas comuns de rede social são detectadas no agente do usuário. Com os Snippets, os clientes poderão fazer essa remoção e inserção seletiva usando uma simples parte de JavaScript, por exemplo.

…
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 ansiosos para ver quais outros casos de uso o Cloudflare Snippets desbloqueia para nossos clientes.

Vocês vão parar de adicionar ações aos conjuntos de regras?

A resposta simples é não. Vamos continuar a desenvolver nossas ações sem código no mecanismo do conjunto de regras, desenvolvendo novos produtos para atender às necessidades do cliente

Pode parecer óbvio, mas um componente essencial para a melhoria dos recursos é conversar com os clientes. Conversar com os usuários do Snippets nos ajudará a entender quais casos de uso reais os Snippets ajudam a resolver e destacar as lacunas de recursos que temos em nosso conjunto de produtos. Podemos então analisar se faz sentido produzir esse caso de uso ou deixar que ele precise do Snippets.

Também entendemos que nem todos são desenvolvedores de software. Portanto, estamos explorando como podemos tornar os Snippets acessíveis a todos, criando modelos selecionáveis disponíveis em uma biblioteca que pode ser copiada e modificada pelos clientes, com o mínimo de conhecimento de codificação necessário. Com o Snippets, poderoso não significa difícil.

Como acessar o Cloudflare Snippets

O Snippets está atualmente em desenvolvimento. Você pode se inscrever aqui para entrar na lista de espera para acesso.

Esperamos começar a admitir usuários no beta fechado no início de 2023, com um beta aberto a seguir.

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 (PT)Snippets (PT)JavaScript (PT)Português

Follow on X

Cloudflare|@cloudflare

Related posts

April 02, 2024 1:00 PM

Trazer Python para o Workers usando Pyodide e WebAssembly

Apresentamos a compatibilidade com Python para o Cloudflare Workers, agora em versão beta aberta. Renovamos nossos sistemas para oferecer a compatibilidade com Python, a partir do próprio tempo de execução dos Workers até a forma como o Workers é implantado na rede da Cloudflare...