Comment fonctionne Facebook

Facebook est un merveilleux exemple de l'effet de réseau, dans lequel la valeur d'un réseau pour un utilisateur est exponentiellement proportionnelle au nombre d'autres utilisateurs de ce réseau.





Le pouvoir de Facebook découle de ce que Jeff Rothschild, son vice-président de la technologie, appelle le graphe social – la somme des connexions extrêmement diverses entre les utilisateurs du site et leurs amis ; entre les personnes et les événements ; entre les événements et les photos ; entre les photos et les personnes ; et entre un grand nombre d'objets discrets liés par des métadonnées les décrivant et leurs connexions.

Le business des réseaux sociaux

Cette histoire faisait partie de notre numéro de juillet 2008

  • Voir le reste du numéro
  • S'abonner

Facebook gère des centres de données à Santa Clara, en Californie ; San Francisco ; et la Virginie du Nord. Les centres sont construits sur le dos de trois niveaux de serveurs x86 chargés de logiciels open source, certains que Facebook a lui-même créés.



Regardons l'installation principale, à Santa Clara, puis montrons comment elle interagit avec ses frères et sœurs.

Le niveau supérieur du réseau Facebook est composé des serveurs Web qui créent les pages Web que les utilisateurs voient, la plupart avec huit cœurs exécutant Linux 64 bits et Apache. De nombreuses pages et fonctionnalités du réseau social sont créées à l'aide de PHP, un langage de script informatique spécialisé dans les fonctions simples et automatisées. Mais Facebook développe également des applications de base complexes en utilisant une variété de langages informatiques complets, notamment C++, Java, Python et Ruby. Pour gérer la complexité de cette approche, la société a créé Thrift, un cadre d'application qui permet aux programmes compilés à partir de différents langages de fonctionner ensemble.

Le niveau inférieur se compose de serveurs Linux à huit cœurs exécutant MySQL, une application de serveur de base de données open source. Rothschild estime que Facebook dispose d'environ 800 serveurs de ce type distribuant environ 40 téraoctets de données utilisateur. Ce niveau stocke toutes les métadonnées sur chaque objet de la base de données, comme une personne, une photo ou un événement.



Le niveau intermédiaire consiste en des serveurs de mise en cache. Même 800 serveurs de bases de données ne peuvent pas fournir toutes les données nécessaires : Facebook reçoit 15 millions de requêtes par seconde pour les données et les connexions. Des serveurs de cache en vrac, exécutant Linux et le logiciel open source Memcache, comblent le vide. Environ 95% des requêtes de données peuvent être remplies à partir des 15 téraoctets de RAM des serveurs de cache, de sorte que seulement 500 000 requêtes par seconde doivent être transmises aux bases de données MySQL et à leurs disques durs relativement lents.

Les photos, vidéos et autres objets qui peuplent le niveau Web sont stockés dans des fichiers distincts au sein du centre de données.

L'installation de San Francisco réplique les niveaux Web et de cache, ainsi que les fichiers avec les objets de base de données, mais elle utilise le niveau de base de données MySQL de Santa Clara.



Le centre de données de Virginie est trop éloigné pour partager des bases de données MySQL : avec 70 millisecondes de retard Internet, à peu près, cela ne fonctionnera tout simplement pas. Ainsi, il duplique complètement l'installation de Santa Clara, en utilisant la réplication MySQL pour maintenir les niveaux de base de données synchronisés.

Quelle est la prochaine étape pour la technologie de Facebook ? D'une part, dit Rothschild, la société a découvert que les interruptions sur les contrôleurs Ethernet des serveurs, qui permettent aux serveurs de traiter une myriade de demandes arrivant en même temps, constituent un goulot d'étranglement, car elles sont généralement gérées par un seul cœur. Facebook a donc réécrit les pilotes des contrôleurs pour les adapter aux systèmes multicœurs. Facebook expérimente également des disques SSD, qui pourraient accélérer les performances du niveau base de données MySQL d'un facteur 100.

Étant donné que Facebook se développe et que les connexions se développent de manière exponentielle, le site aura bientôt besoin de ces performances.



cacher