Facebook publie «Proxygen» une bibliothèque C++ HTTP
La plateforme supporte déjà HTTP/1.1, SPDY/3 et SPDY/3.1

Facebook viens de publier Proxygen, un ensemble de bibliothèque C ++ qui permettent de construire son propre serveur HTTP, avec une facilité extrême pour l’intégrer dans des applications existantes. La plateforme est compatible avec HTTP/1.1, SPDY/3 et SPDY/3.1. Le support de HTTP/2 est en cours de développement et ne devrait pas tarder à voir le jour.

Le développement du projet a débuté en 2011. « Nous avions initialement prévu de faire une librairie pour générer des proxys, d’où le nom de Proxygen », annonce Facebook, « mais il y avait une variété d’outils qui fournissaient des fonctionnalités similaires à l’époque (Apache, nginx, HAProxy, vernis…), nous nous sommes donc dirigés vers une direction différente ».

Proxygen, est publié en open source sous licence BSD, il comprend le noyau C ++ utilisé en interne par Facebook comme base pour la construction de nombreux serveurs HTTP, les proxys et les clients. Actuellement, plus d'une douzaine de sous-systèmes du réseau social l’utilisent, y compris l’infrastructure de photos Haystack, et la machine virtuelle HHVM destinée pour exécuter des programmes PHP, les équilibreurs de charge, et une partie l’infrastructure mobile.

« Proxygen nous a permis de développer rapidement de nouvelles fonctionnalités, et de voir les résultats très rapidement ». L’utilisation reste assez facile, un exemple de code pour un serveur d’écho est donné sur ce lien.

Notez qu'actuellement, le projet a été testé seulement sur Ubuntu 14.04 mais devrait normalement fonctionner sur d'autres versions et plates-formes, à part Mac OS X dont la prise en charge est incomplète. Il nécessite au minimum une mémoire de 2 Go.

Le code source est disponible sur GitHub, l’équipe de développement de Facebook invite tout le monde à y contribuer.

Page GitHub du projet
Exemple de code pour un serveur d'echo

Source : Blog Facebook Developers, Page officielle du projet, GitHub

Et vous ?

Qu’en pensez-vous ?
Allez-vous l'utiliser pour vos futures projets ?