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

Le Supercloud le plus programmable grâce à Cloudflare Snippets

2022-11-17

Lecture: 8 min.
Cet article est également disponible en English, en 繁體中文, en Deutsch, en 日本語, en Português, en Español et en 简体中文.

Votre trafic, comme vous l'aimez

The most programmable Supercloud with Cloudflare Snippets

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

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).

Offre professionnelle

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

Offre Business

Offres Enterprise

Fragments Snippets disponibles

5 fragments Snippets par zone.

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

20 fragments Snippets par zone.

50 fragments Snippets par zone.

…
{
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 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.

…
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(À 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 HTTPRéponse HTTPCron Triggers

Délai d'exécution maximal

5ms

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

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.

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.

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)SnippetsJavaScript

Suivre sur X

Cloudflare|@cloudflare

Publications associées