Facebook livre son serveur HTTP C++ en open source

Facebook livre son serveur HTTP C++ en open source Le réseau social frappe de nouveau un grand coup en matière de technos Web. Il livre les sources de l'infrastructure HTTP C++ qui supporte une partie de sa plateforme.

Décidément Facebook aime jouer la transparence en matière d'infrastructure. Le réseau social s'était déjà fait remarquer pour avoir initié le projet Open Compute, via lequel il a pu depuis partager les spécifications de ses datacenters (voici sa dernière contribution sur le sujet). En 2013, le groupe a récidivé en publiant les sources d'un compilateur JIT pour PHP, alias HHVM. Face aux performances revendiquées et les tests réalisés par certains développeurs (comme celui-ci), Zend, qui reste l'un des principaux orchestrateur sdu projet PHP avait rapidement contre-attaqué en proposant une évolution du langage PHP (lire notre interview d'Andi Gutmans de Zend Technologies).

Un serveur HTTP pour publier des services C++

Le géant du réseau social fait donc encore un pas de plus dans ce sens de l'ouverture. Il livre en open source (sous licence BSD) la librairie C++ HTTP, et son serveur associé, qu'il utilise pour supporter une partie de sa plateforme. Avec cette solution baptisée Proxygen, "notre objectif n'est pas de proposer une alternative à Apache ou nginx, des serveurs HTTP flexibles écrits en C qui affichent de bonnes performances. Notre infrastructure est dessinée pour déployer des services C++ via HTTP. Ce qui lui permet donc de s'intégrer facilement à des applications existantes", souligne Facebook. Le groupe présente ce framework comme inédit. Prenant en charge HTTP/2, il tire profit du protocole d'accélération SPDY/3.1 - qui, rappelons-le, est conçu pour prioriser et multiplexer les transferts de fichiers composant une page web 

Proxygen : un socle pour développer le très stratégique HHVM

Lancé par Facebook en 2009, le projet Proxygen était centré initialement sur le développement d'un outil d'équilibrage de charge reposant sur un reverse proxy HTTP. "Mais il a considérablement évolué depuis. Il propose désormais des fonctionnalités très similaires à une grande variété d'outils : Apache, nginx, HAProxy, Varnish, etc.", explique-t-on chez Facebook. 

Un intérêt pour proposer des applications SaaS

Pourquoi Facebook a-t-il développé Proxygen ? D'abord, bénéficier d'un serveur HTTP maison était plus raisonnable pour le réseau social, compte tenu du caractère stratégique de cette brique pour maintenir son service. Ensuite, grâce à Proxygen, le groupe a pu plus facilement combiner son serveur à d'autres briques maison (autour de l'administration, de la supervision...). Enfin, internaliser un tel projet lui a permis d'accélérer l'intégration de fonctionnalités clé pour lui : SPDY, mais aussi les WebSockets, ses algorithmes de planification des tâches... Enfin, Facebook s'est servi de cette infrastructure pour unifier sa plateforme de développement et de déploiement autour d'un standard interne unique. 

"Actuellement, plus d'une douzaine de systèmes internes sont construits sur le cœur de code de Proxygen, ce qui inclut le format de compression Haystack (qui repose sur SPYD), HHVM, des outil d'équilibrage de charge HTTP, ou encore une partie de notre infrastructure mobile", indiquent Daniel Sommermann et Alan Frindell, deux ingénieurs de Facebook dans un post assez détaillé.

Naturellement, les résultats des tests de performance présentés par le géant sont plutôt bons. En versant cette infrastructure HTTP en open source, le groupe entend bien sûr attirer d'autres acteurs dans son sillage, dans l'optique de mutualiser les développements de Proxygen. D'ailleurs, Facebook ne s'en cache pas, et a lancé un appel explicite à des contributeurs potentiels. Considérant l'architecture de la solution proposée, les grands fournisseurs de solutions en mode SaaS pourraient être intéressés. A suivre.

  Le code de Proxygen est disponible sur GitHub