Au début de cette année, nous avons présenté Cache Reserve. Cache Reserve permet aux utilisateurs de servir du contenu issu du cache de Cloudflare pendant plus longtemps grâce au stockage de données persistent de R2. En servant du contenu issu du cache de Cloudflare, non seulement les opérateurs de sites Web bénéficient d'une baisse de leurs factures liées aux frais de trafic sortant des serveurs d'origine, mais ils permettent aux visiteurs de site Web de profiter quant à eux de chargements de contenu plus rapides.
Cache Reserve existe en version bêta fermée depuis plusieurs mois au cours desquels nous avons recueilli les impressions de nos premiers utilisateurs tout en poursuivant le développement du produit. Après plusieurs vagues d'itérations tenant compte de leurs retours, nous nous réjouissons tout particulièrement d'annoncer aujourd'hui que la solution Cache Reserve passe en bêta ouverte. Les utilisateurs pourront désormais la tester et l'intégrer à leur stratégie de diffusion de contenu sans attente supplémentaire.
Si vous souhaitez constater par vous même les avantages de Cache Reserve et nous faire part de vos impressions ; rendez-vous dans le tableau de bord Cloudflare, accédez à la section consacrée à la mise en cache et activez Cache Reserve à l'aide d'un seul bouton.
Comment Cache Reserve s'intègre-t-il dans le processus global ?
Le contenu servi depuis le cache de Cloudflare commence son parcours dans un serveur d'origine, où se trouve le contenu hébergé. Lorsqu'une requête parvient au serveur d'origine, celui-ci compile le contenu nécessaire à la réponse et l'envoie au visiteur.
La distance entre le visiteur et l'origine peut avoir une incidence sur les performances des ressources dans la mesure où la réponse peut impliquer un parcours très long. C'est également à cette étape-là que des frais sont facturés à l'utilisateur pour la sortie du contenu stocké dans le serveur d'origine avant l'envoi vers le visiteur qui en fait la demande. Ces frais, également appelés « bande passante » ou « frais de trafic sortant » sont des lignes de facturation mensuelle qui sont familières aux utilisateurs hébergeant leur contenu auprès de fournisseurs de cloud.
Le CDN de Cloudflare se trouve entre le serveur d'origine et le visiteur et étudie la réponse du serveur d'origine pour envisager une éventuelle mise en cache. S'il est possible d'ajouter ce contenu au cache de Cloudflare, à la prochaine requête concernant ce contenu, Cloudflare peut répondre avec les ressources mises en cache, ce qui signifie qu'il ne sera pas nécessaire d'envoyer la requête au serveur d'origine et que les frais de trafic sortant seront moins lourds pour nos clients. Nous faisons également en sorte de mettre le contenu en cache dans le datacenter le plus proche du visiteur afin d'améliorer les performances et de raccourcir le temps de transit pour une réponse.
Afin d'être en mesure de conserver les ressources plus longtemps en cache, nous avons lancé il y a quelques années la mise en cache par niveau qui organise l'ensemble de nos plus de 250 datacenters au monde selon une hiérarchie à plusieurs niveaux ; les niveaux inférieurs sont généralement plus proches des visiteurs et les niveaux supérieurs plus proches des serveurs d'origine. Lorsqu'une requête de contenu ne peut pas être servie depuis un cache de niveau inférieur, le niveau supérieur est consulté avant d'aller en dernier recours chercher le contenu directement dans le serveur d'origine. L'organisation de nos datacenters en niveaux nous a permis de conserver du contenu en cache là où il est nécessaire et pendant plus longtemps en multipliant les caches présents entre la requête du visiteur et le serveur d'origine.
À quoi sont liés les défauts de cache ?Il y a défaut de cache lorsque Cloudflare ne peut pas servir le contenu depuis le cache et qu'il doit s'adresser au serveur d'origine pour en récupérer une nouvelle copie. Cela peut se produire lorsqu'un client définit un paramètre cache-control précisant une date à laquelle le contenu devient obsolète et doit être validé de nouveau. L'autre élément en jeu (la durée de mise en cache souhaitée par le réseau) est un peu plus complexe et peut varier en fonction de critères d'expulsion.
Les CDN doivent décider s'il est nécessaire de vider le contenu rapidement pour optimiser l'espace pour les autres ressources lorsque l'espace de cache est rempli. Chez Cloudflare, nous préférons l'expulsion en fonction de ce qui a fait l'objet des requêtes les plus récentes dans le contenu mis en cache, ce que nous permet l'algorithme appelé « utilisé le moins récemment » ou LRU (pour Least recently used). Cela signifie que même si le paramètre cache-control indique qu'un élément de contenu doit être mis en cache pendant de nombreux jours, il pourra être nécessaire de l'expulser plus tôt (si c'est le moins demandé dans le cache) pour mettre en cache du contenu plus populaire.
Cela fonctionne bien pour la plupart des clients et des visiteurs de sites Web, mais cela provoque souvent une certaine confusion chez les personnes qui ne comprennent pas pourquoi il se produit un défaut de contenu inattendu.à Si l'expulsion n'avait pas lieu, le contenu devrait être mis en cache dans les datacenters plus éloignés des visiteurs à l'origine de la requête de données, au détriment des performances de la ressource et du fonctionnement du réseau de Cloudflare.
Il arrive toutefois que certains clients disposent de bibliothèques de contenu si vastes qu'une partie du contenu ne fait l'objet d'aucune requête pendant de longues périodes. En cas d'utilisation traditionnelle du cache, ces ressources ont des chances d'être expulsées, puis servies depuis le serveur d'origine lors de la requête suivante. Pour que des ressources restent en cache, il faut qu'elles restent populaires dans Internet, ce qui est d'autant plus difficile que la popularité sur internet varie constamment. L'expulsion du contenu qui devient inactif implique des frais de trafic sortant supplémentaires pour le client si ce contenu doit être récupéré auprès du serveur d'origine de manière répétée.
Voilà Cache ReserveC'est là qu'intervient Cache Reserve. Cache Reserve fait office de datacenter de niveau « ultime » pour le contenu qui sans lui aurait été expulsé du cache. Une fois admis dans Cache Reserve, le contenu peut être conservé pendant beaucoup plus longtemps, 30 jours par défaut. Si une autre requête est émise pendant cette période, celle-ci peut être prolongée de 30 jours supplémentaires (et ainsi de suite) ou jusqu'à ce que le paramètre cache-control précise que nous ne devons plus servir ce contenu en provenance du cache. Cache Reserve fait office de filet de sécurité pour sauvegarder l'ensemble du contenu pouvant être mis en cache ; ainsi les clients n'ont plus à craindre d'expulsions indésirables du cache ni de frais de trafic sortant du serveur d'origine.
Comment Cache Reserve permet des économies de trafic sortant ?
La promesse de Cache Reserve est la suivante, les taux d'accès vont augmenter tandis que les frais de trafic sortant des serveurs d'origine vont diminuer pour les contenus de niche qui sont rarement demandés et risquent d'être expulsés du cache.
Toutefois, d'autres économies de trafic sortant sont associées au produit. Par exemple, des objets sont inscrits dans Cache Reserve lors des défauts de contenu. Cela signifie que lorsque nous récupérons du contenu auprès du serveur d'origine lorsqu'il y a défaut de cache, nous l'utilisons à la fois pour répondre à une requête et pour inscrire la ressource dans Cache Reserve, les clients n'auront plus de trafic sortant pour servir cette ressource avant longtemps.
Cache Reserve est conçu pour être utilisé avec du cache par niveaux prévu pour protéger au maximum le serveur d'origine. En cas de défaut de cache à la fois dans les niveaux inférieurs et supérieurs, Cache Reserve est consulté et si le contenu y est trouvé, la réponse sera mise en cache dans le niveau inférieur comme le supérieur au passage en direction du visiteur, sans que le serveur d'origine n'ait connaissance de la requête ni qu'il ait besoin de servir des données supplémentaires.
Cache Reserve économise ce trafic sortant du serveur d'origine pour un prix modeste, basé sur les coûts de R2. Pour plus d'informations sur les prix et le fonctionnement de Cache Reserve, consultez la documentation ici.
Déploiement de Cache Reserve sur la plateforme de développement de Cloudflare
Lorsque nous avons annoncé Cache Reserve pour la première fois, les réactions ont été plus que positives. Plus de 20 000 utilisateurs ont voulu accéder à la version bêta et nous avons rapidement découvert plusieurs détails expliquant comment ils souhaitaient utiliser Cache Reserve.
La première grande difficulté à laquelle nous avons été confrontés tenaient au fait que les utilisateurs détestaient autant que nous les frais de trafic sortant et voulaient la garantie qu'un maximum de contenu pouvait être placé dans Cache Reserve. Pendant la période correspondant à la version bêta fermée, nous avons observé 8 000 opérations PUT par seconde sur de longues périodes et des objets servis à un rythme de 3 000 GET par seconde. Nous mettions également en cache des volumes avoisinant les 600 To pour nos grands clients Nous avions déjà l'intention d'ouvrir le produit à quiconque voudrait l'utiliser mais il nous fallait procéder rapidement à quelques changements pour pouvoir nous adapter et répondre à la demande. Nous nous sommes donc adressés à la plateforme pour développeurs de Cloudflare.
Cache Reserve stocke des données sur R2 à l'aide de son API compatible S3. Sous le capot, R3 gère toute la complexité d'un système de stockage d'objets avec nos primitives de développement performantes et évolutives : Workers et Durable Objects. Nous avons décidé d'utiliser les outils de la plateforme de développement car ils nous permettaient de mettre en œuvre rapidement différentes stratégies d'évolutivité. L'avantage qu'il y a à créer sur la plateforme de développement Cloudflare tient à ce que Cache Reserve facilite l'expérimentation, et nous permettait de déterminer la meilleure façon pour nous de répartir la lourde charge que nous observions, sans que les utilisateurs puissent voir la complexité du fonctionnement de Cache Reserve.
Avec un simple bouton, Cache Reserve exécute les fonctions suivantes :
En cas de défaut de cache, Pingora (notre nouveau proxy L7) accède au serveur d'origine pour y récupérer du contenu et écrit la réponse à R2. Dans le même temps, le contenu poursuit son trajet vers le visiteur (qui par conséquent ne subit pas de latence inutile).
Dans R2, un Worker inscrit le contenu dans le stockage de données persistant de R2, tout en conservant un suivi des métadonnées importantes que Pingora envoie à propos de l'objet (par exemple les en-têtes du serveur d'origine, les valeurs de nouveauté et les informations de conservation) à l'aide du stockage Durable Objects.
À la requête suivante pour le même contenu, Pingora cherche où sont stockées les données dans R2 en calculant la clé du cache. Le hachage de la clé du cache détermine à la fois le nom de l'objet dans R2 et le compartiment dans lequel il a été écrit. En effet, chaque ressource de zone est partagée entre plusieurs compartiments pour répartir la charge.
Une fois qu'il a trouvé, Pingora joint les métadonnées correspondantes et envoie le contenu de R2 vers le niveau supérieur le plus proche pour le mettre en cache, puis dans le niveau inférieur, et enfin au visiteur.
C'est magique ! Aucune des opérations mentionnées ci-dessus ne nécessite l'intervention de l'utilisateur. En réunissant R2, Workers, Durable Objects, Pingora, et la mise en cache par niveau, nous avons pu rapidement assembler Cache Reserve et lui apporter les modifications nécessaires pour le déploiement à grande échelle…
Quels sont les projets pour Cache Reserve ?
En plus du travail que nous avons effectué pour déployer à grande échelle Cache Reserve, en le rendant disponible ouvertement nous ouvrons la voie à d'autres fonctionnalités et intégrations au sein de Cloudflare. Nous prévoyons d'offrir aux utilisateurs de Cache Reserve des fonctions d'analyses et de mesures supplémentaires, afin qu'ils puissent savoir avec précision ce qu'il y a dans Cache Reserve et ce que cela permet d'économiser en trafic sortant. Nous projetons également de mettre en place des intégrations encore plus complexes avec R2, ainsi, si les clients souhaitent commencer à gérer leur stockage, la transition est facile. Enfin, nous souhaiterions proposer aux clients davantage d'options qui leur permettraient de contrôler avec précision ce qu'il convient de mettre dans Cache Reserve. Il ne s'agit là que d'un début pour toutes les fonctionnalités qui permettront aux clients de contrôler et personnaliser leur cache sur Cloudflare.
Quels ont été les retours jusqu'à présent ?
En tant que clients de longue date de Cloudflare, nous étions impatients de déployer Cache Reserve par souci d'économie sur les coûts et d'amélioration des performances pour nos utilisateurs finaux. Chez Delivery Hero, nous avons pour priorité de garantir à nos partenaires mondiaux et livreurs une application qui fonctionne de manière optimale. Avec Cache Reserve, notre taux d'accès au cache a été amélioré de 5 , ce qui nous a permis de réduire notre infrastructure et de simplifier les conditions nécessaires au fonctionnement de notre site mondial, le tout avec des économies supplémentaires sur les coûts.Wai Hang Tang, directeur en chef de l'ingénierie Delivery Hero
Anthology utilise le cache mondial de Cloudflare, ce qui améliore drastiquement les performances du contenu de nos utilisateurs finaux dans les écoles et les universités. En actionnant un simple bouton pour activer Cache Reserve, nous avons été en mesure de proposer une expérience remarquable pour les enseignants et les étudiants tout en réduisant des deux tiers notre trafic sortant quotidien.Paul Pearcy, Ingénieur en chef chez Anthology
Chez Enjoei nous cherchons constamment à rendre les sites de nos utilisateurs finaux plus rapides et plus efficaces. Grâce à Cloudflare Cache Reserve nous avons pu améliorer notre taux d'accès au cache Cloudflare Cache Reserve de plus de 10 %, c'est considérable et cela a réduit d'autant les frais liés au trafic sortant du serveur d'origine. Cache Reserve a également enrichi les performances de nombre de nos sites marchands en Amérique du Sud, ce qui en a amélioré le SEO et la visibilité sur Internet (Google, Criteo, Facebook, Tiktok), et la configuration s'est faite en un rien de temps.Elomar Correia, Responsable DevOps SRE | Architecte de solutions d'entreprise chez Enjoei
Dans le secteur des événements en direct, le volume et la demande de notre contenu à mettre en cache peuvent être extrêmement volatils, ce qui engendre des fluctuations imprévisibles dans nos frais liés au trafic sortant. De plus, il est essentiel pour l'expérience du client de pouvoir conserver les données au plus proche des utilisateurs, nos produits étant utilisés dans le cadre de conventions ou festivals de musiques qui donnent lieu à un trafic intense dans des contextes de faible bande passante. Cache Reserve nous aide à compenser ces deux difficultés avec une incidence minime sur nos équipes d'ingénieurs, ce qui permet de prédire plus facilement les coûts et de réduire plus fortement la latence qu'avec les solutions existantes.Jarrett Hawrylak, Vice-président de l'ingénierie | Billetterie d'entreprise chez Patron Technology
Comment puis-je l'utiliser aujourd'hui ?
Dès aujourd'hui, Cache Reserve est proposé en version bêta ouverte, ce qui signifie qu'il est disponible à toute personne souhaitant l'utiliser.
Pour utiliser Cache Reserve :
Ouvrez la vignette Mise en cache dans le tableau de bord.
Accédez à la page Cache Reserve et sélectionnez le bouton d'activation de la synchronisation du cache (ou le bouton d'achat).
Les clients Enterprise peuvent contacter leur équipe de compte Cloudflare pour accéder à Cache Reserve.
Les clients peuvent vérifier que Cache Reserve fonctionne en consultant les mesures de référence pour connaître la quantité de données mises en cache et le nombre d'opérations observées dans la section Cache Reserve du tableau de bord. Les requêtes spécifiques servies par Cache Reserve sont disponibles à l'aide de Logpush v2 et en cherchant les requêtes HTTP avec le champ « CacheReserveUsed. »
Nous continuerons à nous assurer du traitement rapide des commentaires que vous nous transmettez et à apporter des améliorations nécessaires pour que Cache Reserve soit facile à utiliser, très avantageux et que vous le choisissiez pour réduire les frais liés au trafic de sortie du contenu mis en cache.
Essayez
Nous avons été très heureux de proposer Cache Reserve à davantage de personnes. Il y aura de nouveaux développements intéressants à découvrir autour de Cache Reserve à mesure que nous poursuivrons nos efforts pour vous offrir les outils dont vous avez besoin pour créer un cache parfait.Essayez Cache Reserve dès aujourd'hui et dites-nous ce que vous en pensez.