Assine para receber notificações de novos posts:

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

2022-11-17

8 min. de leitura
Este post também está disponível em English, 繁體中文, Français, Deutsch, 日本語, Español e 简体中文.

Seu tráfego, do jeito que você gosta

The most programmable Supercloud with Cloudflare Snippets

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

Free Plans Pro Plans Business Plans Enterprise Plans
Snippets available 5 Snippets per zone. 20 Snippets per zone. 50 Snippets per zone. 200 Snippets per zone*
(Customers can speak with their Customer Success team to have this increased).

Planos Pro

Cloudflare Snippets Cloudflare Workers Unbound
(For comparison)
Runtime support JavaScript JavaScript and WASM
Execution location Global - All Cloudflare locations Global - All Cloudflare locations
Triggers supported Ruleset Engine Filters HTTP Request
HTTP Response
Cron Triggers
Maximum execution time 5ms 30 Seconds HTTP
15 Minutes (Cron Trigger)
Maximum memory 2MB 128MB
Total package size 32KB 5MB
Environment variables 8/Snippet 64/Worker
Environment variable size 1KB 5KB
Subrequests 1/request 1000/request
Terraform Support
Wrangler Support
Cron Triggers
Key Value Store
Durable Objects
R2 Integration

Planos Business

Planos Enterprise

Snippets disponíveis

5 Snippets por zona.

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

20 Snippets por zona.

50 Snippets por zona.

…
{
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=/`
    );
…

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.

…
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)
…
}

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 HTTPResposta HTTPCron Triggers

Tempo máximo de execução

5ms

30 segundos HTTP15 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.

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.

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.

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.

Protegemos redes corporativas inteiras, ajudamos os clientes a criarem aplicativos em escala de internet com eficiência, aceleramos qualquer site ou aplicativo de internet, evitamos os ataques de DDoS, mantemos os invasores afastados e podemos ajudar você em sua jornada rumo ao Zero Trust.

Acesse 1.1.1.1 a partir de qualquer dispositivo para começar a usar nosso aplicativo gratuito que torna sua internet mais rápida e mais segura.

Para saber mais sobre nossa missão de construir uma internet melhor, comece aqui. Se estiver procurando uma nova carreira para trilhar, confira nossas vagas disponíveis.
Developer WeekSnippetsJavaScript

Seguir no X

Cloudflare|@cloudflare

Posts relacionados