Skyrock.com : 5 milliards de pages vues par mois grâce au libre


Skyrock Serveurs
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.

Infrastructure Web de Skyrock

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.

Mysql Scale out

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.


14 Commentaires pour "Skyrock.com : 5 milliards de pages vues par mois grâce au libre"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Très intéressant comme article !

    RépondreRépondre
    MathieuLF , le 23 mars 2009 à 15:54
  •  

    Je confirme. :D
    Tu nous fais la meme pour l'université de Rennes?

    RépondreRépondre
    hype , le 23 mars 2009 à 21:44
  •  

    @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.

    RépondreRépondre
    pti-seb , le 24 mars 2009 à 00:54
  •  

    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.

    RépondreRépondre
    SiM07 , le 24 mars 2009 à 01:37
  •  

    Une analyse du même genre pour Twitter serait fascinant :]

    RépondreRépondre
    MathieuLF , le 24 mars 2009 à 17:00
  •  

    @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.

    RépondreRépondre
    pti-seb , le 24 mars 2009 à 17:08
  •  

    http://developers.facebook.com/opensource.php

    On notera qu'eux aussi utilisent memcache :)

    RépondreRépondre
    SiM07 , le 24 mars 2009 à 17:56
  •  

    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

    RépondreRépondre
    TitaX , le 28 mars 2009 à 14:27
  •  

    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.

    RépondreRépondre
    kidrek , le 29 mars 2009 à 15:32
  •  

    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).

    RépondreRépondre
    Telos , le 14 avril 2009 à 15:07
  •  

    Comment détruire les serveurs Skyrock ??

    RépondreRépondre
    azerta , le 19 mai 2009 à 20:16
  •  

    ça fait rever tout ça, je veux la meme chose hihi

    RépondreRépondre
    chat , le 22 septembre 2009 à 12:57
  •  

    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

    RépondreRépondre
    Tom , le 5 mai 2010 à 11:54
  •  

    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 € ;-)

    RépondreRépondre
    eBuildy , le 24 avril 2012 à 11:43
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum