Lorsque l’on parle de Facebook, on aborde plus régulièrement ses nouveautés, les modifications de son interface et les questionnements sur la vie privée que ses bases techniques. Il en est pourtant question actuellement car les développeurs de Facebook ont réalisé d’importants travaux autour du langage PHP et les résultats en sont basculés dans la communauté open source.
Le site Ars Technica retrace un historique intéressant des étapes qui ont mené du problème de départ vers la solution actuelle. Tout d’abord, les développeurs de Facebook ont travaillé avec le Zend Engine, Zend Technologies étant la société à l’origine du PHP. Le but à cette époque était de basculer une partie de la charge vers des extensions rédigées en C++, ce dernier permettant des performances nettement supérieures. Le 2 février 2010 toutefois, un ingénieur de Facebook, Haiping Zhao, précisait dans un billet que cela provoquait une division des équipes de développement. Problème : une partie des ressources devait être consacrée du même coup au Zend Engine pour le maîtriser pleinement.
Peu après, les ingénieurs partaient dans une direction différente. En gardant comme objectif la production de code C++ depuis du script PHP, ils ont cherché à cartographier le code. Le but ? Analyser facilement ce code et le traduire en C++ optimisé. Pour y parvenir, ils ont créé un nouvel interpréteur baptisé HPHP, pour HipHop. Son rôle était justement la cartographie du code via la production d’un arbre syntaxique abstrait (AST). Comme l'explique Ars Technica, l’un des avantages immédiats du code obtenu était que les développeurs pouvaient y intégrer certains services déjà écrits en C++. Nous avions d'ailleurs abordé HipHop dans nos colonnes pour souligner les gains apportés.
Comme le souligne Ars Technica, la rédaction d’un code PHP en vue de son interprétation par HipHop pose le souci de son débogage. Les outils existants pour ce processus en PHP ne sont pas adaptés au cas HipHop car ils ne sont pas capables de pointer les erreurs potentielles. Les développeurs ont donc créé leur propre interpréteur PHP, baptisé HPHPi, pour deviner plus finement comment le code PHP peut réagir une fois traduit en C++ et compilé. Deux problèmes essentiels sont pourtant apparus :
Dans un billet de l’ingénieur Jason Evans, on apprend ainsi que la HHVM est à l’heure actuelle 60 % plus rapide que l’interpréteur HPHPi. Mais le travail n’est pas terminé : Facebook estime que la machine virtuelle n’est terminée qu’à 90 %. Cela n’empêche pas la firme de basculer tous ses développement vers la HHVM, avec l’objectif très clair d’y faire passer tout l’environnement de production à terme.
De fait, comme Facebook l’avait fait il y aura bientôt deux ans, le code source de la HHVM a été publié sur GitHub, sous licence PHP et Zend. Notez pour les intéressés qu’il ne s’agit en rien d’une version finale et que ce code sera régulièrement mis à jour au fur et à mesure que les développeurs s’avanceront vers une mouture complète.
Dépasser les limitations du PHP
Les problèmes de Facebook résident essentiellement dans les performances. Le PHP est un langage de script qui permet de développer facilement et rapidement un site. Mais Facebook ne peut plus être considéré comme un simple site. Des millions et des millions de pages différentes, toutes créées en PHP, alors que le langage n’a pas été conçu pour une utilisation aussi intensive. La firme cherchait donc évidemment des solutions à ces problèmes de performances.Le site Ars Technica retrace un historique intéressant des étapes qui ont mené du problème de départ vers la solution actuelle. Tout d’abord, les développeurs de Facebook ont travaillé avec le Zend Engine, Zend Technologies étant la société à l’origine du PHP. Le but à cette époque était de basculer une partie de la charge vers des extensions rédigées en C++, ce dernier permettant des performances nettement supérieures. Le 2 février 2010 toutefois, un ingénieur de Facebook, Haiping Zhao, précisait dans un billet que cela provoquait une division des équipes de développement. Problème : une partie des ressources devait être consacrée du même coup au Zend Engine pour le maîtriser pleinement.
Peu après, les ingénieurs partaient dans une direction différente. En gardant comme objectif la production de code C++ depuis du script PHP, ils ont cherché à cartographier le code. Le but ? Analyser facilement ce code et le traduire en C++ optimisé. Pour y parvenir, ils ont créé un nouvel interpréteur baptisé HPHP, pour HipHop. Son rôle était justement la cartographie du code via la production d’un arbre syntaxique abstrait (AST). Comme l'explique Ars Technica, l’un des avantages immédiats du code obtenu était que les développeurs pouvaient y intégrer certains services déjà écrits en C++. Nous avions d'ailleurs abordé HipHop dans nos colonnes pour souligner les gains apportés.
HipHop : de l'interpréteur à la machine virtuelle
Dans la pratique, l’apparition de l’interpréteur HipHop a permis de doubler les performances du code de Facebook. Toutefois, tout n’était pas rose. Comme nous l’indiquions dans notre actualité du 3 février 2010, la traduction du code pouvait sacrifier au cours du processus des fonctions « rarement utilisées » telles que eval(). La raison en est que HipHop reprend la majorité des fonctionnalités de PHP 5.3, mais pas tout, ce qui a créé une nouvelle catégorie de problèmes.Comme le souligne Ars Technica, la rédaction d’un code PHP en vue de son interprétation par HipHop pose le souci de son débogage. Les outils existants pour ce processus en PHP ne sont pas adaptés au cas HipHop car ils ne sont pas capables de pointer les erreurs potentielles. Les développeurs ont donc créé leur propre interpréteur PHP, baptisé HPHPi, pour deviner plus finement comment le code PHP peut réagir une fois traduit en C++ et compilé. Deux problèmes essentiels sont pourtant apparus :
- HPHPi travaille à peu près deux fois plus lentement que l’interpréteur PHP classique
- Certaines différences vis-à-vis du générateur C++ pouvaient provoquer des écarts entre les situations de tests et réelles
Dans un billet de l’ingénieur Jason Evans, on apprend ainsi que la HHVM est à l’heure actuelle 60 % plus rapide que l’interpréteur HPHPi. Mais le travail n’est pas terminé : Facebook estime que la machine virtuelle n’est terminée qu’à 90 %. Cela n’empêche pas la firme de basculer tous ses développement vers la HHVM, avec l’objectif très clair d’y faire passer tout l’environnement de production à terme.
De fait, comme Facebook l’avait fait il y aura bientôt deux ans, le code source de la HHVM a été publié sur GitHub, sous licence PHP et Zend. Notez pour les intéressés qu’il ne s’agit en rien d’une version finale et que ce code sera régulièrement mis à jour au fur et à mesure que les développeurs s’avanceront vers une mouture complète.
Vincent Hermann
le 14 décembre 2011 à 16:56
(19 848
lectures)
Actualités et brèves relatives
- 13 / 12 / 2011 : Données personnelles : l'Europe ne peut sanctionner Facebook
- 13 / 12 / 2011 : Un message SMS ou Facebook peut bloquer Windows Phone 7
- 09 / 12 / 2011 : Facebook / Twitter : Tweets intégrés et bouton d'abonnement universel
- 08 / 12 / 2011 : Facebook met à jour son application pour Android
- 07 / 12 / 2011 : Facebook : DSK et la mort de Ben Laden au top des statuts de 2011
- 06 / 12 / 2011 : (MàJ) Freebox 1.1.4 : Facebook et correctifs pour les Blu-ray 3D
- 28 / 11 / 2011 : Facebook pourrait entrer en bourse en décembre prochain






