Skyrock.com : 5 milliards de pages vues par mois grâce au libre
![]()
Skyrock est une célèbre station de radio FM française. Au fil des années, elle est également devenue un acteur incontournable du web, et ceci grâce à sa plateforme de Skyblog. Ouverte en 2002, elle affiche aujourd'hui des mensurations impressionnantes : 23 millions de blogs, 4,7 milliards de pages vues et pas moins de 150 millions de visites uniques par mois.
01informatique a réalisé une enquête sur l'architecture utilisée afin de faire face à ce trafic assez exceptionnel. Et on y apprend beaucoup de choses, notamment l'utilisation de logiciels libres uniquement.

Travaillant actuellement dans le même domaine (je m'occupe en partie de gérer les serveurs web de l'Université de Rennes 1, avec environ 120 millions de pages vues par mois), je me suis intéressé d'assez près à cette infrastructure.
1. L'architecture réseau et les serveurs de cache
L'architecture de cette plateforme commence avec la présence de répartiteurs ZXTM de Zeus (load balancing) et ServerIron (commutateur) de Foundry Networks. Ces équipements permettent essentiellement de diriger les requêtes HTTP vers les serveurs de cache.
En second niveau, on notera la présence 16 groupes de deux machines Squid. Pour ceux qui ne connaissent pas, Squid est un serveur proxy de cache très performant. Il est capable de gérer les protocoles FTP, HTTP, HTTPS. Les pages internet demandées par les utilisateurs sont stockées en local sur ces serveurs, ce qui permet d'économiser de la bande passante, mais aussi de moins solliciter les serveurs web hébergeant les sites.
Lorsqu'une mise à jour est effectuée sur un article, le contenu de l'ensemble des serveurs cache et des reverse-proxies Squid est actualisé à l'aide du protocole IGMP (Internet Group Management Protocol).
2. Les Serveurs web
Derrière ces serveurs mandataires, on trouve les serveurs web. Lorsque les pages demandées ne sont pas disponibles dans le cache, les pages HTML sont générées depuis les scripts PHP via des serveurs Apache. Les scripts Javascript et les feuilles de style CSS sont quant à eux servis par des serveurs NginX.
Personnellement, j'ai pas très bien compris pourquoi ils ont séparé les fichiers php, des scipts javascript et CSS. NginX étant un serveur russe de Load balancing plus performant qu'Apache (utilisé par de très gros sites), je suppose qu'ils auraient aimé n'utiliser que lui. Mais comme il ne gère pas le php, l'utilisation d'Apache est dans ce cas incontournable, ce qui explique sûrement pourquoi ils l'utilisent le moins possible.
3. Le stockage des données
Coté données, on notera l'utilisation d'une grappe de stockage Isilon pour les images et la musique des blogs et une grappe de stockage MogileFS (un système de fichiers distribués Open Source) pour les images des autres sites.
En ce qui concerne les bases de données, il y en aurait 75, toutes propulsées par MySQL 5.0. Les administrateurs auraient opté pour une architecture de type Scale-Out, avec un maître et plusieurs esclaves. Un système de réplication entre les différents serveurs serait en place pour faciliter une reprise d'activité rapide en cas de défaillance matérielle.
Il y aurait ainsi pas moins de 20 000 requêtes par seconde et le résultat de chacune d'entre elles serait sauvegardé dans un cache distribué de 324 Go de mémoire vive (utilisation du Query Cache de MySQL ?), créé à l'aide du logiciel Memcache sur un cluster Linux 64 bits.
Toutes ces informations semblent indiquer qu'ils n'utilisent pas le système de cluster propre à mySQL, appelé NdbCluster. Choix qui me paraît assez normal, le produit étant encore trop jeune au jour d'aujourd'hui.
Pour finir, on remarquera l'utilisation d'un serveur dédié Sharedance pour la gestion des sessions.



Créé en 2005, Tux-planet est un site qui a pour ambition de regrouper des articles sur Linux et le monde des logiciels libres. 





14 Commentaires pour "Skyrock.com : 5 milliards de pages vues par mois grâce au libre"
Flux des commentaires de cet article Ajouter un commentaireTrès intéressant comme article !
Je confirme.
Tu nous fais la meme pour l'université de Rennes?
@hype : un jour peut-être. A Rennes 1 la problèmatique n'est pas vraiment la même. On a beaucoup de serveurs applicatifs (Tomcat, Java) et quelques serveur Php. Notre soucis c'est plutôt la haute disponibilité, plutôt que la charge, étant donnée que nos utilisateurs on besoin de ces services en ligne 24h/24h.
NginX est un serveur très performant pour délivrer des statiques. En fait à contrario d'apache il utilise des threads et non des processus, d'où un gain de performance notable.
En fait pour délibrer les statics, JS, CSS etc. il y a 2 grands choix, Lighttpd (qui supporte aussi php mais là n'est pas la question) ou NginX très à la mode actuellement.
Memcache est un serveur de cache, spécialiser dans le stockage d'objet. Au dernière nouvelle que j'avais, Skyrock utilisait memcache pour stocker les sessions utilisateurs (il suffit de modifier php.ini, c'est assez simple). A priori mais ce n'est que mon avis, il sérialise dans les objets de résultat avant de les stocker en PHP.
En alternative, lorsqu'on a un peu moins de charge, on peut utiliser également le cache APC. C'est ce qu'on utilise chez 20mn. Perso, j'ai trouvé très intéressant l'usage qu'ils ont des triggers pour les performances, on en implémente pas assez souvent pour ce genre d'action à mon avis.
Sinon également très content de voir qu'ils utilisent Smarty, qui là encore à sans doute été choisi pour sa possibilité de faire du cache.
Une analyse du même genre pour Twitter serait fascinant :]
@MathieuLF : pour facebook aussi. Vu qu'ils sont miroir Fedora, on peut supposer qu'ils utilisent énormément de logiciels libres pour faire tourner leur infrastructure.
http://developers.facebook.com/opensource.php
On notera qu'eux aussi utilisent memcache
Les ServerIron de Foundry (qui n'est d'ailleurs plus Foundry mais Brocade maintenant, à cause du rachat) ne sont pas des commutateurs à proprement dit, ce sont de vrais LoadBalancers capable de balancer un trafic en fonction de multiples critères (charge CPU, trafic, préférence etc etc) sur plusieurs serveurs.
Bien évidement ils ont une fonctionnalité de switching car la pluspart du temps ils sont utilisés en mode "coupure" (transparent), mais on ne peut pas les réduire à de "vulgaire" commutateur.
TitaX
Sympa l'article, très instructif.
Si je puis me permettre,voici une autre alternative pour la gestion de cache sur les scripts php, lighttpd avec php5 et xcache (extension de php) développé également par l'équipe de lighttpd.
A noter que Nginx supporte le PHP de ma méme maniére que Lighttpd cad par l'utilisation de fastCGI. Il est aussi a noter que Nginx utilise un modéle de gestion des connexion evenementielle tout comme Lighttpd, on peut le faire forker pour mieu répartir l'utilistion du processeur dans le cas de machine SMP ou pour contourner les limitations de l'OS (avoir plus de 1024 connexion en utilisant select).
Comment détruire les serveurs Skyrock ??
ça fait rever tout ça, je veux la meme chose hihi
Vraiment très intéressant, par contre je suis assez surpris qu'on ne parle que des technologies serveurs pour améliorer les performances, coûts etc etc ....
L'utilisation de Javascript, AJAX permet de diminuer considérablement les requêtes servers, Facebook est le meilleur exemple (sans aller jusqu'aux HTTP services en python ;-(.
Par exemple, le principe de pure pages HTML avec des services AJAX pour les zones "dynamiques" permet de cacher la page en pure HTML pour tout le monde sans condition !
Egalement la technologie Flash, avec le peer to peer qui permet d'utiliser la bande passante de vos utilisateurs une architecture cloud (on pourrait appeler ça, du Social Cloud Computing !)
Par contre, content de voir que Php est toujours la
J'ai tavailler avec un gars qui ne jurait que par J2EE grrrrrrrr
Pourquoi garder Apache ? Le Php sous Nginx est 100 fois plus rapide !
Bizzare leur archi de bases mysql, maintenant ils ont du tout remplacer par un système distribué type hadoop.
Utilisation de Smarty .. Ou comment ralentir par le code son archi à 1 000 000 €