L’infrastructure de Facebook : les chiffres clés
Facebook est une vraie machine de guerre : on a pu voir récemment que c’était le site le plus visité au monde, et tout ça seulement après quelques années. Contrairement à d’autres « supergrands » (Google, Microsoft, Apple, Youtube, etc.) un certain nombre d’informations filtrent lors de conférences, et dans des documents officiels.
J’ai visionné plusieurs heures de vidéos de conférences (long mais super intéressant) et ait compilé les informations. Vu la masse de détails obtenus, j’ai décidé de publier deux articles :
- celui-ci, présentant les chiffres clés sur l’infrastructure de Facebook,
- un second (à venir) : comment Facebook gère quotidiennement son (immense) infrastructure ?
En extrapolant
- certains graphiques d’évolution,
- des chiffres passés,
- des indications fournies pendant des conférences,
on estime entre 60 000 et 100 000 le nombre de serveurs de Facebook . Cependant, ce chiffre ne tient pas compte de deux nouveaux datacenters actuellement en cours construction (Oregon et Caroline du Nord).
Mais qu’est-ce qui peut bien tourner sur cette infrastructure ?
Données générales :
- 500 millions d’utilisateurs actifs (un utilisateur actif est un utilisateur qui se connecte au moins une fois par mois),
- 50% des utilisateurs se connectent au moins une fois par jour, soit 250 millions de personnes tout de même,
- 690 milliards de pages vues par mois,
- 6 milliards de contenus partagés par semaine (statuts, photos, liens, vidéos),
- 3 milliards de photos uploadées par mois, pour plus d’un pétaoctet de stockage uniquement destiné aux photos (chaque photo existe en 4 tailles),
- un dernier chiffre, le plus parlant peut-être : 16 milliards de minutes sont passées par jour sur Facebook. Ça représente 11 millions de jours ou encore plus de 30 000 années qui sont passées par jour sur le réseau social, c’est juste énorme !
Données techniques :
- plus de 300 To (téraoctets) de données en cache en RAM avec Memcached,
- 25 To (téraoctets) de log par jour,
- un ingénieur Facebook pour 1,1 millions d’utilisateurs. A titre de comparaison, Google emploi un ingénieur pour 190 000 utilisateurs,
- un opérateur Facebook pour 2,3 millions d’utilisateurs.
Quelques chiffres intéressants sur MySQL :
- 13 millions de requêtes par seconde en pic,
- 38 Go/s de trafic MySQL en pic,
- temps de réponse moyen en lecture : 4 ms,
- temps de réponse moyen en écriture : 5 ms,
- 450 millions de lignes lues par seconde en pic,
- 3,5 millions de lignes modifiées par seconde en pic,
- 5,2 millions d’I/O (disques) InnoDB par seconde.
Qui a d’autres chiffres intéressants et récents à partager ?
Dans le prochain article sur le sujet, je traiterai de la gestion quotidienne d’une infrastructure de cette taille.
Sources :
Commentaire by Eroan — 24 novembre 2010 @ 14:49
Tout simplement hallucinant ! Quand je compare ça aux chiffres de mon portail d’actualité deux-roues qu’on peut déjà considérer comme un gros site (plus de 20 000 visites jour), ça a de quoi choquer !
La question que je me pose c’est : est-ce que le jeu en vaut la chandelle ? En voyant autant de serveurs et d’énergie consommée, je ne peux m’empêcher de penser aux conséquences sur le plan environnemental…
Commentaire by Romain — 24 novembre 2010 @ 15:11
Oui, effectivement, ça a des conséquences relativement importante en terme de dissipation d’énergie et en alimentation électrique. On ne parle même pas du recyclage de tous ces matériels.
Cependant, d’après ce que j’ai compris (j’en parlerai dans le prochain article je pense), les 2 nouveaux datacenters seraient relativement « green ».
Commentaire by guillaume — 24 novembre 2010 @ 16:51
Un chiffre me perturbe, le nombre de PV par mois.
Celui-ci s’élève à 690 millions alors que la ligne du dessus nous donne 250 millions d’utilisateurs connectés chaque jour, ce qui veut dire au moins 1 PV par utilisateur… On explose donc le nombre de PV/mois!
Les millions ne doivent-ils pas être des milliards???
Commentaire by Romain — 24 novembre 2010 @ 17:41
@Guillaume > Autant pour moi, il commence à y avoir tellement de zéros dans ces chiffres que j’en ai loupé 3 ! ^^
Commentaire by Soso — 24 novembre 2010 @ 23:38
Ca s’écrit « au temps pour moi »
J’avais déjà une idée de ce que représentent les serveurs de Facebook, le travail d’optimisation qu’il y a derrière et je sais donc l’apprécier à sa juste valeur. Mais bon, c’est parce que je suis informaticien moi-même que je me pose ce genre de questions… La plupart des gens que je connais trouvent que Facebook, c’est lent et ils pestent quand une page peine à arriver ou plante !
J’avais lu des articles intéressants également sur l’infrastructure logicielle très spéciale de Facebook. Dans le genre costaud aussi, ça peut être un sujet intéressant à approfondir.
Enfin, oui, je trouve que le jeu en vaut la chandelle, bien sûr ! Après Google ou Wikipedia, je trouve que Facebook a fait entrer le web dans un autre niveau de « partage ». Après, je ne sais pas si tout se fait dans les règles de l’Art par notre ami Mark Z. mais c’est un autre débat !
Commentaire by Romain — 25 novembre 2010 @ 9:18
@soso > On peut dire « autant pour moi » ou « au temps pour moi », les deux sont justes dans la langue française…
Commentaire by Soso — 25 novembre 2010 @ 17:23
Je viens de retrouver le fameux article sur l’archi logicielle de Facebook !
http://royal.pingdom.com/2010/.....-facebook/
@Romain > Ah OK, je te crois sur parole, alors « autant pour moi » !
Commentaire by Netdoor — 26 novembre 2010 @ 16:38
C’est la preuve que MySQL est une très bonne bases de données pour ce type d’architecture surtout si elle est couplée à memcached et un key-value store efficace (cassandra, mongodb).
Ping by Les 1000 sites les plus visités dans le monde « wOueb by Romain DECKER / Another IT Guy Blog — 27 novembre 2010 @ 18:29
[...] Facebook (bien sûr), normal avec leurs statistiques, [...]
Commentaire by RJ45Hotplugger — 29 novembre 2010 @ 12:07
Avec tous ces téras de données à la pelle c’est ces messieurs du stockage EMC & consorts qui doivent prier pour que Facebook grossisse encore encore et encore
Commentaire by fb251 — 30 novembre 2010 @ 11:14
Malgré des chiffres impressionnants compte tenu de l’échelle, il y en un autre, calculé à partir des informations de la conférence fin 2009 à l’université de Californie, et là c’est tout de suite moins glamour :
- 30000 serveurs,
- 200000000000 pages affichées par mois (attention, on ne parle pas de hits mais de pages).
On en déduit que toute cette belle infrastructure permet de servir en moyenne 2,57 pages par seconde et par serveur, accessoirement la consommation électrique équivaut à la production électrique du Tchad (10 millions d’habitants) et l’équivalent en rejets CO2 annuels correspond à la masse de 10 A380 au décollage à pleine charge…
Commentaire by rookmoot — 30 novembre 2010 @ 12:39
Ce n’est plus tout à fait vrai pour l’architecture logiciels de Facebook, aujourd’hui ils utilisent Tornado, un serveur web python créé spécialement pour de la haute distribution. On peut noter que sur une même instance on peut faire tourner environ 100 000 clients à un instant T.
Si vous êtes vous même développeur, je vous laisse vous renseigner plus en détails, je l’ai testé et c’est vrai que ca vaut le détour
Commentaire by Romain — 30 novembre 2010 @ 14:49
@fb251 > Forcément, ça consomme beaucoup de puissance électrique. Par exemple Google consomme 1% de la consomme électrique mondiale.
@rookmoot > J’avais déjà jeté un oeil à Tornado, c’est prévu dans la suite des articles…
Commentaire by fb251 — 30 novembre 2010 @ 14:54
Hum @rookmoot permettez moi d’être dubitatif. Tout d’abord 100000 clients sur une même instance avec 64500 sockets disponibles il faudra m’expliquer surtout avec le TIME_WAIT ou alors c’est un bench « hello world » avec les keepalive auquel cas bof.
Dans la vie réelle on plafonne sur une machine (pour du dynamique) à environ 10000 requêtes par seconde et pas en Python mais avec du code natif sous nginx.
Facebook a optimisé ses applications avec son compilateur « hiphop php », néanmoins le gain comparativement à une architecture LAMP n’est pas d’un ordre de grandeur. Je maintiens donc que la productivité de l’infrastructure Facebook a un rendement très médiocre.
Commentaire by Romain — 30 novembre 2010 @ 15:26
@fb251 > Je ne pense pas qu’on puisse juger du rendement d’une infrastructure sans être impliqué dans la gestion de celle-ci.
En dehors des pages vues, il y a tous les hits générés par les modules Ajax, la communauté d’applications qui vit, les serveurs et clusters nécessaires au fonctionnement et au pilotage de ceci (logs, monitoring, développement, tests), etc.
Commentaire by fb251 — 30 novembre 2010 @ 16:23
Facebook a eu à gérer une croissance monstrueuse, dans ces cas là on ne peut se permettre de revenir à la planche à dessin, soit. Néanmoins et même en prenant en compte la multiplicité de l’usage des serveurs, il n’empêche que *l’ordre de grandeur* que je donne (2,57 pages / seconde / serveur) interpelle.
Qu’une architecture de cette ampleur soit délicate à mettre en œuvre dans les règles de l’art (redondance, failover, hot backup…) c’est évident, néanmoins on pourrait s’attendre à des pertes de mise à l’échelle (scalability) moindres.
On peut le regarder sous l’angle économique, écologique voire informatique cet ordre de grandeur révèle des aberrations.
Commentaire by Willy — 21 décembre 2010 @ 7:10
11 millions de jour passés par jour sur le site, ça équivaut à dire que 11 millions de personnes ne vivent que pour ce site, 24h/24, ou 22 millions de personnes à raison de 12h par jour. Ca veut dire que l’existence du site a rendu totalement esclaves toutes ces personnes, que les autres nourrissent en travaillant. Alors après on pourra parler des dictatures qui disparaissent… en fait elles réapparaissent sous une autre forme
Commentaire by Nona Mills — 22 décembre 2010 @ 23:26
[...] Facebook (bien sûr), normal avec leurs statistiques, [...]
Commentaire by LinKuFF — 5 janvier 2011 @ 19:00
oO impressionnant ! 11 millions de jour passés par jour ça représente tout de même 63 minutes/personnes (si on garde le chiffre de 250 millions de visiteurs par jour) !
Commentaire by payday loan — 3 juillet 2011 @ 16:22
Your not the typical blog novelist, dude. A person have actually something impressive to include in virtual reality. Such a fantastic web log. I’ll return for much more.