Cette conférence du directeur technique de facebook, datant d’un peu plus d’un mois, donne un aperçu de l’architecture actuelle du réseau social et des technologies utilisées. La vidéo est en provenance de l’excellent site technique infoq.

Quelques chiffres

  • 8 milliards de minutes passées chaque jours sur facebook par ses utilisateurs
  • 5 milliards d’éléments partagés chaque semaine (status update, photo, lien etc..)
  • 3 milliards de photos uploadées chaque mois
  • 400 millions d’utilisateurs

Scale des réseaux sociaux

Les données de tous les utilisateurs sont inter-connectées, et chacun peut potentiellement accéder aux données de n’importe quel autre: le partitionnement horizontal, par utilisateur n’est pas possible dans ce type d’application.

Architectures en 5 éléments principaux

  • Load balancer
  • PHP
  • memcache
  • services
  • MySQL

Services

Tout est basé sur thrift.

  • Permet d’implémenter des services sans s’occuper de la couche transport (et sérialisation).
  • Language agnostique: c++, java, Erlang , Python (chez facebook)

MySQL? no joins!

  • mysql comme service de stockage clé/valeur: même si ce n’est pas aussi simple, c’est l’idée principale.
  • pas de joins: les données sont répartis sur des milliers de serveurs, la récupération de données séparées se fait sur la couche supérieur (PHP)
  • index des db/datas sur la couche PHP: un gros index tout en cache mappe les ids des users et db sur les noeuds mysql eux même.

Open source

  • participation active à des projets majeurs
  • distribution de projets internes

Voici les idées principales. Je vous conseil de regarder la vidéo: si vous avez le temps cad une heure!