Dans un blog pour annoncer la mise en open source de CacheLib, Facebook plante le décor sur la problématique de la mise en cache. Cette dernière « joue un rôle important pour aider les gens à accéder efficacement à leurs informations. Par exemple, quand une application de messagerie se charge, elle met temporairement en cache certains messages, de sorte que l'utilisateur peut rafraîchir la page sans que l'application ne récupère les mêmes messages ». Cela apparait simple comme cela, mais quand on a une infrastructure de la taille de Facebook, c’est tout de suite plus compliqué. L’objectif est de trouver un système de mise en cache capable d’évoluer rapidement, d’être performant avec un coût maîtrisé.

Dans ce cadre, les équipes de Facebook (Sathya Gunasekar, Snehal Khandkar, Dmitry Vinnik et Michael Cheng) expliquent dans le blog « comme le cache traditionnel via la DRAM devient de plus en plus coûteux et nécessite plus de puissance pour monter en charge, des entreprises comme Facebook explorent d’autres solutions matérielles comme les SSD NVMe pour améliorer leur système de mise en cache ». Cette démarche hybride entre DRAM et SSD NVMe est à l’origine du travail sur le moteur CacheLib.

CacheLib, un futur standard de la mise en cache

Le réseau social travaille sur ce sujet depuis 2017 et CacheLib est intégré depuis dans 70 services dont le CDN (content delivery networks), le stockage, le graphe social et les applications nécessitant du cache. Les équipes de Facebook viennent donc de livrer à la communauté sur GitHub le code de ce moteur de mise en cache. Elles ont également publié CacheBench, un outil de benchmarking pour évaluer les performances de mises en cache sur les différents workload en production.

Facebook entend bien faire de sa solution CacheLib et CacheBench, « une norme pour les innovations et l’évaluation comparative de mise en cache ». La firme de Mark Zuckerberg collabore, par exemple, avec des centres universitaires de recherche (Carnegie Mellon, Princeton et Yale) qui ont travaillé sur des prototypes de mise en cache pour des applications industrielles. Des partenariats ont également été noués avec des constructeurs de SSD : Intel, Kioxia, Samsung et Western Digital. Ces efforts doivent être intégrés dans la spécification SSD NVMe Cloud de l’Open Compute Project.