Qu’est-ce que Varnish ?
Varnish est un proxy inverse HTTP de mise en cache, indépendant de toute plateforme, qui accélère les plateformes web.
Examinons cela plus en détail :
Indépendant de toute plateforme
Varnish est un logiciel qui fonctionne sur du matériel standard, des machines virtuelles, des conteneurs, sur le cloud et sur site.
Mise en cache
Varnish accélère la diffusion HTTP en mettant en cache du contenu et en le servant à plusieurs clients.
HTTP
Varnish traite les requêtes et les réponses HTTP, et peut donc accélérer la diffusion de tout contenu utilisant le protocole HTTP.
Proxy inverse
Varnish établit un lien entre les clients et les serveurs HTTP (serveur source ou backend) et agit comme un proxy entre eux.
Comment fonctionne Varnish
Varnish exploite les mécanismes de mise en cache HTTP pour mettre en cache et servir rapidement des versions mises en cache de pages web, de segments vidéo, d'API et de tout autre contenu qui transite par HTTP. Lorsqu'un utilisateur demande un élément de contenu, Varnish en stocke une copie dans sa mémoire et éventuellement sur le disque. Lorsqu'un autre utilisateur demande le même contenu, Varnish fournit la copie stockée à la vitesse de l'éclair, en évitant le processus de génération et de diffusion à partir de la source, qui exige beaucoup de ressources. Cela réduit la charge du serveur et offre aux utilisateurs une expérience plus rapide.
Langage de configuration Varnish
Varnish se singularise par le fait que le traitement des requêtes et le comportement de la mise en cache peuvent être modifiés de manière significative et optimisés par un langage spécifique : le Langage de Configuration Varnish (VCL). Adoptant le style des langages C, C++ et Java, il propose des sous-programmes, des instructions conditionnelles if-else et des appels de fonction. Le code VCL s'accroche à l'automate fini de Varnish et vous donne le contrôle à chaque étape du processus de traitement des requêtes. Étant donné que le langage VCL est transposé en C et compilé en code machine, au lieu d'être interprété au moment de l'exécution, il est ultrarapide.
Définir les politiques de mise en cache
La flexibilité de VCL est sans précédent. Cela offre un contrôle total sur les politiques de mise en cache pour permettre des expériences de mise en cache personnalisées, l'intégration à d'autres systèmes et l'informatique en périphérie de réseau. Les fonctionnalités du langage VCL comprennent les éléments suivants :
- Traitement et l'acheminement des requêtes
- Manipulation des requêtes et des réponses
- Équilibrage des charges et surveillance de l'état
- Contrôles du cache
- Assainissement des requêtes
- Edge-side Includes (ESI)
- Gestion des cookies
- Authentification
- Contournement du cache
- Détermination de la durée de vie du cache
- Manipulation des en-têtes
- Équilibrage des charges
- Invalidation du cache
Modules Varnish (VMOD)
Une bibliothèque complète de modules enfichables étend le comportement par défaut de Varnish. Ces modules Varnish, ou VMOD, ajoutent une grande variété de fonctionnalités et exposent un ensemble de fonctions qui peuvent être consultées directement à partir du VCL. Voici quelques exemples de VMOD :
- Purge avancée / Invalidation
- Transformation de contenu
- Compression de contenu / d'image
- Chiffrement
- Détection d'appareil
- Accès au système de fichiers
- Analyse de fichiers JSON
- JWT
- Accès à la mémoire de stockage / MSE
- Informations TLS / TLS en cours
- Limitation de la bande passante / Contrôle du débit du trafic
- Efficacité de l'outil de monitoring Prometheus
Fonctionnalités de Varnish Enterprise
Varnish Enterprise offre un ensemble de fonctionnalités plus vaste que celles du logiciel libre Varnish Cache. Les principales fonctionnalités de Varnish Enterprise sont les suivantes :
- Massive Storage Engine (MSE). Mise en cache sur disque à l'aide de l'ES directe qui augmente la capacité du cache de manière rentable et permet la persistance des données en cache.
- Varnish High Availability (VHA). Permet de répliquer les objets mis en cache sur plusieurs serveurs Varnish
- HTTPS et terminaison TLS/SSL intégrée pour le client et le backend
- Console de gestion et de surveillance basée sur navigateur appelée Varnish Controller
- Fusion des requêtes. Combine plusieurs requêtes relatives au même objet en une seule requête du backend
- Journalisation La journalisation complète fournit un flux d'informations, avec des mécanismes de filtrage et des limites de débit pour réduire les entrées de journal stockées par intervalle de temps
- Statistiques. Riche ensemble de compteurs en temps réel, avec des statistiques par proportion de trafic et des exportations directes au format JSON ou Prometheus
- Mode « Grâce ». Fournit un contenu légèrement obsolète aux clients tout en envoyant des demandes de revalidation asynchrones pour télécharger la dernière version. Aussi appelé « stale-while-revalidate »
- Invalidation avancée du cache
Architecture de Varnish
Un logiciel efficace permet de passer au niveau supérieur. C'est pourquoi le moteur de mise en cache de Varnish est léger et ne contient que les fonctionnalités nécessaires à son fonctionnement. Varnish est également multithreadé, de sorte que chaque connexion de client est gérée par un worker thread séparé. Un autre objectif est de rendre l'utilisation des ressources aussi efficace que possible grâce à une allocation optimale de la mémoire, tandis que le chemin d'accès rapide hautement optimisé minimise les changements de contexte, le verrouillage et les allocations/désallocations de mémoire. Varnish Enterprise prend également en charge les API NUMA (Non-Uniform Memory Access) nécessaires pour obtenir les meilleures performances des serveurs disposant de plus d'un nœud NUMA.