Exemple de réussite

Maillage de services de Criteo avec Consul et HAProxy Enterprise

Réduction des coûts
Surveillance intégrale du réseau
Prise en charge du maillage de services

Présentation de Criteo

Né dans une pépinière de jeunes entreprises à Paris, Criteo est devenu un leader mondial du marketing, à la tête de 29 bureaux dans le monde. La société utilise l'apprentissage automatique, le big data et la créativité de ses 2 800 employés pour publier des milliards d'annonces publicitaires par an. Grâce à ses services, les entreprises font connaître leur marque, ciblent mieux leur public et se font remarquer.

Les résultats en bref

Réduction des coûts
Surveillance intégrale du réseau
Prise en charge du maillage de services

La situation

Criteo fait généralement figure de pionnier technologique. Grâce à leurs connaissances de pointe, ses ingénieurs et ses architectes sont en mesure de sélectionner les meilleurs logiciels de leur catégorie, d'automatiser l'infrastructure, d'adopter des plateformes de conteneurs et, plus généralement, d'héberger des systèmes en libre-service faciles à utiliser. La raison pratique derrière ces initiatives est simple : disposer d'une infrastructure qui prenne en charge le volume de trafic de Criteo (plusieurs millions de requêtes à la seconde) et offrir au service de R&D la possibilité de déployer rapidement et d'essayer de nouvelles idées en évitant les heurts au maximum.

Les développeurs avaient obtenu une évolutivité considérable en concevant l'architecture au moyen de microservices. Ils sont ainsi parvenus à une optimisation à un niveau très fin en augmentant le nombre de nœuds pour tout service, indépendamment des autres. Toutefois, ils rencontraient des difficultés pour connecter leurs applications web frontales avec les microservices de traitement. Ils ont d'abord eu recours à des bibliothèques personnalisées pour assurer la fonction de messagerie entre les couches, mais cette solution est devenue intenable.

legacycriteosolution1x-1

Infrastructure de Criteo en 2013, lorsque cette société accédait à la catégorie des principaux annonceurs au monde

Une couche comportant les répartiteurs de charge HAProxy Enterprise a ensuite été ajoutée entre les applications et les services de traitement, mais cela a accru la latence. Or, pour la plateforme publicitaire de Criteo, chaque milliseconde compte. Il a donc fallu une nouvelle approche pour parvenir à une latence minime. L'équipe de Criteo a donc commencé à rechercher comment relier ses applications et ses services de façon plus harmonieuse.

Les objectifs

Pour les ingénieurs de Criteo, le meilleur moyen de résoudre le problème était de placer un proxy près de chaque microservice grâce à un maillage de services. Dans le cas de Criteo, les bibliothèques existantes côté client seraient remplacées. Acheminer le trafic vers une couche supplémentaire de répartiteurs de charge aurait rajouté un hop. Une application communiquant directement avec un microservice et relayant les messages via un proxy side-car local était préférable.

updatedcriteosolution2a1x

Dans la solution actuelle de Criteo, un microservice en contacte un autre en utilisant le protocole SPOP (Stream Processing Offload Protocol) de HAProxy Enterprise

Consul, de HashiCorp, qui servait à gérer la configuration de tous les proxies, conservait les tables de routage et les transmettait à chaque nœud. Dès qu'un nouveau microservice se connectait, Consul notifiait l'ensemble des machines et tous les proxies synchronisaient les nouvelles informations. Toutefois, le proxy par défaut inclus dans Consul, Envoy Proxy, ne répondait pas à leurs besoins.

Nous rencontrions des difficultés avec Envoy, notamment lors de son déploiement sur tous les systèmes. La communication directe avec l'équipe HAProxy Technologies représentait un avantage déterminant pour nous.

La solution

Le répartiteur de charge F5 avait déjà été remplacé par HAProxy Enterprise. Ce répartiteur de charge pouvait gérer des millions de requêtes à la seconde, fournissait d'excellents journaux et indicateurs, et proposait de nombreuses fonctionnalités, dont le déchargement TLS et la limitation de débit. Il aurait été parfaitement adapté pour remplir la fonction de proxy side-car, mais cette option n'était pas disponible dans Consul. Il a donc été décidé de bâtir l'intégration entre Consul et HAProxy Enterprise.

Les ingénieurs de Criteo ont choisi HAProxy Enterprise, car il complète la plateforme open source HAProxy avec des modules et une assistance technique pointue. L'équipe a écrit son propre code pour rassembler les informations de routage de Consul et les appliquer à HAProxy Enterprise. La souplesse du langage de configuration de HAProxy Enterprise a rendu tout ceci possible, en leur ouvrant l'accès à toutes les fonctionnalités nécessaires. HAProxy Data Plane API leur a rendu la tâche encore plus facile. En effet, elle permet de configurer HAProxy Enterprise au moyen de commandes HTTP, autrement dit, par programmation.

criteo-talk-main-image-2

Pierre Souchay lors de son intervention à la HAProxyConf 2019

Nous avons dû résoudre un autre problème : lorsqu'un microservice en contacte un autre, les répartiteurs de charge qui se trouvent entre eux doivent décider s'ils autorisent la communication. En effet, certains microservices ne devraient pas pouvoir se connecter à d'autres pour des raisons de sécurité. Criteo a eu recours au protocole SPOP (Stream Processing Offload Protocol) exclusif de HAProxy Enterprise pour exécuter en parallèle un programme de vérification. SPOP autorise la diffusion immédiate du trafic vers un programme externe aux fins d'inspection et de traitement en temps réel des données qui passent par le répartiteur de charge. L'équipe a développé un module qui vérifie les droits d'accès du service à l'origine de la communication.

Une fois le projet terminé, HAProxy Enterprise était devenu le composant central du maillage de services de Criteo reposant sur Consul, acheminant le trafic d'environ 270 000 nœuds de services. Grâce à cette unification, l'équipe disposait des fonctions dont elle avait besoin, telles que le chiffrement TLS entre services et la limitation de débit, tout en maintenant une latence très basse. Depuis lors, Criteo a ouvert le code source de son implémentation et en a confié la gestion à HAProxy Technologies.

Les résultats

Criteo a renforcé les performances et la sécurité entre ses microservices en développant un maillage de services dont HAProxy Enterprise est le répartiteur de charge côté client. Tout le trafic du réseau bénéficie du chiffrement TLS, d'un traitement rapide et d'autres fonctionnalités de HAProxy Enterprise telles que la limitation de débit et l'observabilité. Aujourd'hui, HAProxy Enterprise gère des millions de requêtes à la seconde pour Criteo, qui profite ainsi d'une infrastructure en libre-service toujours plus facile à utiliser.

Pour en savoir plus sur les cas d'utilisation de HAProxy, consultez la page Exemples de réussite.

Nos spécialistes HAProxy sauront vous proposer la solution la plus adaptée en termes de déploiement, d’échelle et de sécurité.

Contacter nos spécialistes