Lorsque vous êtes une entreprise de la taille de Facebook, avec plus de deux milliards d'utilisateurs dans le monde sur des millions de serveurs, ces derniers exploitent un certain nombre de systèmes, allant des serveurs web frontaux aux agrégateurs de flux d'actualités en passant par les applications de messagerie et de vidéo en direct. Pour assurer le bon fonctionnement de ces serveurs, des milliers de changements de configuration sont effectués chaque jour. L’administration de ces systèmes n’est pas une mince affaire. 

Comme pour la plupart des choses avec les géants du web qui font face à des problèmes d'échelle auxquels peu d'entreprises sont confrontés, il a été nécessaire de déployer un outil spécifique. Facebook a donc développé une solution baptisée Location Aware Delivery (LAD) reposant sur une architecture peer-to-peer pour gérer la distribution des changements de configuration à des millions de serveurs, comme l’explique dans un billet de blog Ali Haider Zavari, ingénieur logiciel chez Facebook

De 5 à 100 Mo pour le fichier de config

Avant de mettre en service LAD, l'entreprise utilisait un outil open source appelé Zoo Keeper pour distribuer les données de configuration, et bien que cet outil fonctionnait, il ne donnait pas entière satisfaction aux administrateurs de Facebook. Notamment avec la limite de 5 Mo – contre 100 Mo avec LAD - imposée pour la taille des fichiers de configurations distribués vers 2 500 serveurs à la fois. Facebook voulait créer un outil qui surmonte ces limitations, sépare les données du mécanisme de distribution, avec un temps de latence de moins de cinq secondes et supportant 10 fois plus de fichiers que Zoo Keeper. LAD est également capable de prendre en charge 40 000 abonnés par distributeur contre 2 500 abonnés auparavant.

La figure ci-dessus montre comment LAD organise les proxies dans un arbre de distribution, qui est essentiellement un réseau peer-to-peer bien organisé.

La solution LAD créée par les développeurs de Facebook se compose de plusieurs parties : un proxy qui se trouve sur chaque serveur Facebook et fournit des fichiers de configuration à toute machine qui le souhaite ou qui en a besoin. La deuxième pièce est un distributeur qui, comme son nom l'indique, fournit des informations de configuration. Il y parvient en vérifiant les nouvelles mises à jour, et quand il les trouve, il crée une arborescence de distribution pour un ensemble de machines, qui sont à la recherche d'une mise à jour. « En tirant parti d'une architecture de type arborescence, LAD s'assure que les mises à jour ne sont poussées que vers les proxies intéressés plutôt que vers toutes les machines. De plus, une machine mère peut envoyer directement des mises à jour à ses affilés, ce qui garantit qu'aucune machine près de la racine n'est submergée », souligne Ali Haider Zavari.