Facebook, le plus gros réseau social (plus de 400 millions !), tourne plutôt bien, avec peu d’interruptions de services. Quelle est la clé de son succès technique ? Un article américain nous explique quels sont les logiciels qui font (bien) tourner Facebook… Et nous rappelle que la quasi-totalité de ces services sont distribués en Open-Source.
Cet article est basé sur Exploring the software behind Facebook de Pingdom.
La base
Historiquement, Facebook a été développée en « LAMP » (Linux, Apache, MySQL, PHP). À ce jour, Facebook utilise toujours cette architecture, mais l’a optimisée pour ses propres besoins :
- La version de Linux utilisée par Facebook est largement optimisé, notamment pour sa couche réseau ;
- Le PHP de Facebook est pré-compilé pour de meilleurs performances, notamment au travers d’un transcripteur PHP-C++ appelé HipHop ;
- MySQL n’est utilisé que comme stockage de paires clés / valeurs ;
- Le langage Erlang est utilisé pour le chat (comme c’est également le cas pour ejabber de Process One) ;
- Un système de gestion de pages dynamique, BigPipe, qui permet de découper les pages servies aux utilisateurs en petits morceaux calculés indépendamment les uns des autres ;
- Enfin, Thrift est outil qui permet de standardiser la communication entre programmes écrits en différents langage et distribués sur des machines différentes ;
La gestion des données
La valeur de Facebook réside avant tout dans les données qu’il gère, il n’est donc pas surprenant de constater le soin apporté par la société aux choix de ses outils :
- Haystack (« Botte de foin » en anglais) est le logiciel servant à stocker et afficher les photos et gros objets binaires. Il s’agit pour simplifier d’un gros système de fichiers (et le seul élément de la liste à ne pas être Open-Source) ;
- Cassandra est un système de gestion de base de données distribué, de type « NoSQL » (non-relationnel) ;
- Hadoop et Hive sont des outils de requêtage de données distribués ;
Optimisation et gestion de la production
Au delà de cette architecture de base, de nombreux mécanismes de cache et d’optimisation sont utilisés par Facebook. Ainsi :
- Varnish est un gestionnaire de cache HTTP (appelé aussi « reverse proxy »). Il est utilisé pour garder en cache des éléments servis fréquemment et ne pas surcharger les serveurs qui effectuent des opérations complexes ;
- Un gestionnaire de logs, Scribe, est utilisé pour centraliser tous les logs émis par les nombreux services qui composent Facebook ;
- MemCached est un système de cache distribué ; il permet de bénéficier de performances proches d’un stockage en RAM, mais réparti sur plusieurs machines ;
Le dénominateur commun : L’Open-Source
Quel est le point commun entre tous ces services ? Ils sont tous disponibles en Open-Source. Libre à vous de les télécharger, de les installer et de les déployer ! Il manquera évidemment ce qui fait la force de Facebook : la glu entre tous ces éléments, et bien entendu… les 400 millions d’utilisateurs qui font vivre tout cela !