Abonnez-vous pour recevoir des notifications sur les nouveaux articles :

Le Supercloud le plus programmable grâce à Cloudflare Snippets

17/11/2022

Lecture: 9 min.
The most programmable Supercloud with Cloudflare Snippets

Votre trafic, comme vous l'aimez

Cloudflare est utilisée par une clientèle très diversifiée. Nous proposons des produits simples d'utilisation, adaptés à toutes sortes d'opérations, de la définition d'en-têtes HTTP à la réécriture de chemins d'URI et à l'exécution de redirections d'URL. Parfois, ces fonctionnalités prêtes à l'emploi ne répondent pas aux besoins de clients qui, au-delà d'ajouter un en-tête HTTP, doivent effectuer des calculs avancés pour générer le résultat. Aujourd'hui, ces clients devraient créer une demande de fonctionnalité et attendre qu'elle soit mise en œuvre, écrire une instance Cloudflare Workers ou conserver cette modification « dans l'état d'origine », sur leur infrastructure.

Pour simplifier cette situation, nous sommes ravis d'annoncer la solution Cloudflare Snippets. Snippets offre une nouvelle façon d'appliquer au trafic des modifications que les utilisateurs ne peuvent pas effectuer avec nos produits, ou qu'ils souhaitent mettre en œuvre au travers d'une approche programmatique. Mieux encore, l'immense majorité des clients ne devra s'acquitter d'aucun coût supplémentaire pour utiliser Snippets.

Les utilisateurs ont désormais le choix. Exécuter l'action au moyen d'une règle. Ou, si davantage de fonctionnalités sont requises, écrire un fragment de code Snippet.  Aucune de ces approches n'entraînera de délai, et aucune n'entraînera de frais supplémentaires (un plafond d'utilisation équitable élevé sera appliqué, cependant). La solution Snippets permet aux utilisateurs d'accomplir ce qu'ils veulent, quand ils le veulent. Et tout cela, sur Cloudflare.

Snippets prendra en charge l'importation de code écrit dans différents langages, tels que JavaScript (moderne), VCL (ancien) et les fichiers .htaccess d'Apache (ancienne version). Ceci permettra aux clients d'effectuer la migration du code opérationnel existant vers notre plateforme, tout en consolidant leurs opérations JavaScript.

Nous vous invitons à utiliser le formulaire d'inscription pour rejoindre la liste d'attente de Snippets, si vous souhaitez tester cette solution. Nous espérons commencer à accepter des utilisateurs dans la version bêta fermée début 2023.

Pourquoi développer Snippets ?

Au cours des 18 derniers mois, nous avons publié un certain nombre de nouveaux produits de gestion des règles, tels que Transform Rules, Cache Rules, Origin Rules, Config Rules et Redirect Rules. Ces nouveaux produits permettent aux clients de mieux contrôler la manière dont nous traitons leur trafic lorsqu'il transite sur notre réseau mondial. Jusqu'à présent, les réactions à ces produits ont été extrêmement positives. Cependant, nos clients ont parfois besoin de solutions plus complexes que ce que permettent d'accomplir des fonctionnalités prêtes à l'emploi.

Il existe toujours des scénarios d'utilisation dans lesquels un produit ne fournit pas la fonctionnalité dont un client a besoin dans une situation particulière.  Par exemple, bien que des milliers de nos clients utilisent maintenant Transform  Rules pour résoudre leurs scénarios d'utilisation de modification d'en-têtes HTTP, il reste un petit nombre de scénarios d'utilisation qui ne peuvent pas être résolus, tels que la définition de délais d'expiration dynamiques avec des cookies ou le hachage de jetons avec une clé.

C'est ici que Cloudflare Snippets s'avère utile. Les clients n'auront plus besoin d'utiliser toutes les fonctionnalités de la plateforme Cloudflare Workers pour gérer ces scénarios d'utilisation relativement simples. Ils n'auront pas non plus besoin d'attendre que nous répondions à leurs demandes de fonctionnalités. Au lieu de cela, ils pourront exécuter un fragment (un « Snippet ») de JavaScript.

Effectuer la migration de l'ancien code vers Snippets

Varnish Control Language (VCL) est uniquement utilisé dans le contexte de Varnish. Lancé il y a environ 16 ans, ce langage a historiquement été utilisé pour la configuration du trafic et du routage sur les réseaux de diffusion de contenu, car il était extensible à un grand nombre de scénarios d'utilisation différents.

De nombreuses entreprises utilisent encore VCL pour définir des actions de routage et de modification du trafic. Tandis que d'autres fournisseurs abandonnent la prise en charge de VCL, nous voulons continuer à assurer la prise en charge de ceux parmi vous qui se sont familiarisés avec son utilisation.

Snippets n'exécutera pas du code VCL pur. Au lieu de cela, le code VCL sera converti en règles ou fragments Snippets offrant une maintenance aisée. À cette fin, nous développons un convertisseur VCL simple d'utilisation, accessible en libre-service, qui analyse le code VCL transféré et génère automatiquement des suggestions de fragments Snippets  – et, si une correspondance est identifiée, génère également des suggestions de règles pour des produits tels que Transform Rules ou Cache Rules.

À l'origine, cette démarche était traitée par le projet Turpentine, une suite d'outils utilisée par les employés de Cloudflare pour analyser le code VCL d'un client et le convertir en suggestion de configuration JavaScript. Ce JavaScript pouvait ensuite être chargé dans une instance Workers ou une série d'instances Workers.

Snippets reprend et étend l'idée et les principes de Turpentine. Elle les étend considérablement. En intégrant directement un analyseur syntaxique dans le tableau de bord, la solution donne directement le pouvoir et le choix aux utilisateurs. Vous pouvez nous demander d'effectuer la migration du code compatible vers Rules, puis transférer le code restant vers Snippets, ou vous pouvez nous demander d'effectuer la migration de l'ensemble de votre code vers Snippets. C'est à vous de décider.

Nous prodiguerons le même traitement aux fichiers de configuration htaccess d'Apache et NGINX , l'objectif étant que les utilisateurs transfèrent simplement les fichiers depuis la configuration Apache ou NGINX de leur site web, puis que nous générions des suggestions de fragments Snippets et/ou de règles.

L'époque où vous deviez utiliser l'ancien code pour exécuter des tâches opérationnelles touche à sa fin. Snippets permet aux utilisateurs d'effectuer la migration de ces charges de travail vers Cloudflare, et ainsi, de se concentrer sur des aspects plus importants de leur entreprise que la maintenance d'anciens systèmes.

La différence entre Snippets et Workers

La plupart des lecteurs connaissent déjà Cloudflare Workers, notre puissante plateforme de développement qui permet aux entreprises d'exécuter et de construire des solutions et produits complets sur le réseau mondial de Cloudflare. Snippets est également construit sur cette plateforme, mais présente quelques différences essentielles.

La première différence majeure est qu'un fragment Snippet s'exécutera sous forme de nouvelles phases dans Ruleset Engine, à l'instar de Transform Rules et de Cache Rules. Les clients pourront sélectionner et exécuter un fragment Snippet pour n'importe quel filtre de moteur d'ensembles de règles. Ils pourront ainsi exécuter un fragment Snippet pour chaque requête ou filtrer le trafic HTTP en fonction des champs que nous proposons – par exemple, le trafic présentant un certain score de bot, provenant d'un pays particulier ou associé à un cookie spécifique. Les fragments Snippets seront additifs, ce qui signifie que les utilisateurs peuvent déployer un fragment Snippet pour ajouter un en-tête HTTP, un autre fragment Snippet pour réécrire l'URL, et que ces deux fragments seront exécutés s'ils correspondent :

Autre différence majeure : la solution Cloudflare Snippets est disponible avec tous les niveaux d'offres, sans coût supplémentaire. 99 % des utilisateurs ne verseront jamais le moindre centime pour utiliser cette solution. Cela permettra aux clients d'effectuer la migration de leurs charges de travail simples depuis les solutions anciennes, telles que VCL, vers la plateforme Cloudflare, et ainsi, de réduire activement leurs dépenses mensuelles.

Offre gratuite Offre professionnelle Offre Business Offres Enterprise
Fragments Snippets disponibles 5 fragments Snippets par zone. 20 fragments Snippets par zone. 50 fragments Snippets par zone. 200 fragments Snippets par zone* (Les clients peuvent s'adresser à l'équipe Customer Success pour demander une augmentation de cette valeur.)

Cloudflare Snippets permet de créer des fragments plus légers que les instances Workers, avec un temps d'exécution maximal de 5 ms, une mémoire maximale de 2 Mo et une taille totale de package de 32 Ko. Cette empreinte relativement réduite nous permet de proposer ce service sans coût supplémentaire à 99 % des utilisateurs, tout en ayant l'assurance qu'il permet de traiter les scénarios d'utilisation identifiés, tels que la modification d'en-têtes HTTP, la réécriture d'URL et le routage du trafic, qui ne nécessitent pas les puissantes ressources qu'offre Cloudflare Workers.

Cloudflare Snippets Cloudflare Workers Unbound
(À titre de comparaison)
Prise en charge du runtime JavaScript JavaScript et WASM
Emplacement d'exécution Monde –tous sites de Cloudflare Monde –tous sites de Cloudflare
Déclencheurs pris en charge Filtres de moteurs d'ensembles de règles Requête HTTP
Réponse HTTP
Cron Triggers
Délai d'exécution maximal 5ms 30 secondes HTTP
15 Minutes (Cron Trigger)
Mémoire maximale 2 Mo 128 Mo
Taille totale du package 32 Ko 5 Mo
Variables d'environnement 8/fragment Snippet 64/instance Workers
Taille de variable d'environnement 1 Ko 5 Ko
Sous-requêtes 1/requête 1 000/requête
Prise en charge de Terraform
Prise en charge de Wrangler
Cron Triggers
Référentiel clé-valeur
Durable Objects
Intégration de R2

Que pourrez-vous développer avec Cloudflare Snippets ?

Snippets permettra aux clients d'effectuer la migration de leurs charges de travail existantes vers Cloudflare. La solution permettra également aux clients de répondre à différents nouveaux scénarios d'utilisation. Nous vous présentons trois exemples courants ci-dessous, mais il en existe beaucoup d'autres.

Exemple n° 1 : attirer des bots suspects avec un honeypot

Lors de la création de fragments Snippets, les clients auront accès aux fonctionnalités de Cloudflare disponibles dans le runtime Workers, notamment au champ de score de bot. Cela permettra aux clients de transférer une requête HTTP vers un honeypot ou d'utiliser la fonction Javascript RegExp pour modifier la construction de l'URL renvoyée à l'utilisateur final si le trafic reçoit un score de bot inférieur à un certain seuil, par exemple 29 ou moins.

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

Exemple 2 : modification de cookies

La modification de cookies est un autre scénario d'utilisation courant que nous prévoyons de résoudre avec Snippets. L'utilisation peut aller de la définition d'un délai d'expiration de cinq minutes avec les fonctions JavaScript getTime et setTime à la définition d'un cookie dynamique en fonction des attributs d'une requête d'utilisateur, dans le cadre de tests 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=/`
    );
…

Exemple 3 : gestion de requête d'URI

Les clients peuvent également déployer la solution Cloudflare Snippets pour effectuer des opérations complexes, telles que l'ajout d'une valeur de requête d'URI afin de permettre la suppression ou l'injection sélective de paramètres supplémentaires. La manipulation de chaînes de requêtes se déroule généralement dans Transform Rules. Avec Transform Rules, cependant, l'action set/ est concrètement une action replace. Cette action, lorsqu'elle est appliquée à une chaîne de requête d'URI, supprime l'ensemble de la valeur, le cas échéant, et la remplace entièrement par la valeur spécifiée par l'utilisateur. Ceci pose un problème aux clients qui souhaitent injecter sélectivement des paramètres de requête spécifiques dans le trafic correspondant à un modèle – par exemple, en définissant une requête supplémentaire telle que ?utm_campaign=facebook lorsqu'une plateforme de réseau social courante est détectée dans l'agent utilisateur. Avec Snippets, les clients pourront effectuer cette suppression et cette insertion sélectives avec un simple fragment JavaScript.

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

Nous sommes impatients de découvrir les autres scénarios d'utilisation que la solution Cloudflare Snippets permettra à nos clients de résoudre.

Arrêterez-vous d'ajouter des actions aux ensembles de règles ?

Pour vous répondre simplement, non ! Nous continuerons à développer nos actions sans code dans le moteur d'ensembles de règles, en créant de nouveaux produits afin de répondre aux besoins des clients.

Cela peut paraître évident, mais un aspect essentiel de l'amélioration des fonctionnalités est l'échange avec les clients. Les discussions avec les utilisateurs de Snippets nous aideront à comprendre les scénarios d'utilisation réels que ces fragments aident à résoudre et à révéler les lacunes au sein de notre suite de produits. Nous pourrons ensuite évaluer s'il est judicieux de développer un produit répondant à un scénario d'utilisation particulier ou si nous pouvons le confier à Snippets.

Nous comprenons également que nous ne sommes pas tous développeurs de logiciels. Nous étudions donc comment rendre Snippets accessible à tous en créant des modèles sélectionnables, accessibles depuis une bibliothèque pouvant être copiée et modifiée par les clients, avec une connaissance minimale du codage. Avec Snippets, puissant ne signifiera pas difficile.

Accéder à Cloudflare Snippets

La solution Snippets est actuellement en cours de développement. Vous pouvez vous inscrire ici pour rejoindre la liste d'attente.

Nous espérons commencer à accepter des utilisateurs dans la version bêta fermée début 2023. Une version bêta ouverte suivra.

Nous protégeons des réseaux d'entreprise entiers, aidons nos clients à développer efficacement des applications à l'échelle d'Internet, accélérons tous les sites web ou applications Internet, repoussons les attaques DDoS, tenons les pirates informatiques à distance et pouvons vous accompagner dans votre parcours d'adoption de l'architecture Zero Trust.

Accédez à 1.1.1.1 depuis n'importe quel appareil pour commencer à utiliser notre application gratuite, qui rend votre navigation Internet plus rapide et plus sûre.

Pour en apprendre davantage sur notre mission, à savoir contribuer à bâtir un Internet meilleur, cliquez ici. Si vous cherchez de nouvelles perspectives professionnelles, consultez nos postes vacants.
Developer Week (FR)Snippets (FR)JavaScript (FR)Français

Suivre sur X

Cloudflare|@cloudflare

Publications associées

05 avril 2024 à 13:01

Disponibilité générale de l'API Browser Rendering, déploiement de Cloudflare Snippets et mise à disposition de Workers for Platforms pour l'ensemble des utilisateurs

L'API Browser Rendering est désormais accessible à tous les clients d'une offre Workers payante avec gestion améliorée des sessions...

04 avril 2024 à 13:05

Nouveaux outils pour la sécurité de la production : déploiements graduels, Stack Traces, contrôle du volume de requêtes et nouveaux SDK

Nous annonçons aujourd'hui cinq nouveautés pensées pour mettre davantage de puissance entre vos mains (déploiements graduels, traces d'appels mappées à la source dans Tail Workers, nouvelle API de contrôle du volume de requêtes, nouveaux SDK pour API et mises à jour de Durable Objects)...

03 avril 2024 à 13:30

R2 ajoute les notifications d'événements, la prise en charge des migrations depuis Google Cloud Storage et un niveau de stockage pour accès occasionnel

Nous nous réjouissons d'annonce trois nouvelles fonctionnalités pour Cloudflare R2 : les notifications d'événements, la prise en charge des migrations depuis Google Cloud Storage et un niveau de stockage pour accès occasionnel...