Facebook ouvre le code de Proxygen son serveur HTTP écrit en C++
ven, 07/11/2014 - 17:14
Cette année 2014 aura vu Facebook faire de grosses contributions au monde de l'open source. Après son langage Hack, dérivé de PHP et open source, Facebook vient d'ouvrir le code de Proxygen, son serveur HTTP, écrit en C++.
Au départ, c'était il y a 4 ans , Proxygen était un simple, si l'on peut dire, projet de reverse proxy avec équilibrage de charge.
Mais avec le temps le projet est devenu un serveur HTTP, écrit en C++. La motivation de Facebook pour écrire son propre serveur HTTP est la suivante : si des Apache ou des nginx sont d'excellents serveurs écrit en C, qui offrent des bonnes performances et beaucoup de souplesse, ils sont parfois difficiles à configurer. Pour ses besoins spécifiques, Facebook a donc éprouvé le besoin de se créer un outil spécifique dont les configurations par défaut sont celles qui vont bien. Proxygen supporte le protocole HTTP/2.
L'outil étant spécifique, il contient des fonctionnalités spécifiques, comme le support des WebSocket ou des algorithmes maison pour réagir aux montées en charge.
Facebook met en avant - mais le contraire serait fort étonnant :-) - les performances de son serveur. Sur la page du projet il est expliqué que le code fait grand usage des fonctionnalités dernier cri de C++. Principalement, la nouvelle sémantique de déplacement a été abondamment utilisée au lieu de l'ancienne sémantique de copie, ce qui permet d'éviter la duplication de gros objets en mémoire. Duplication qui est non seulement coûteuse en terme de temps et de ressources, mais aussi potentiellement génératrice de fuites mémoire.
Nul doute que l'examen du code de Proxygen soit passionnant. Mais ce n'est pas que pour satisfaire les geeks que Facebook l'a ouvert. Le réseau social fait par là même appel aux contributions des passionnés.
Le code source de Proxygen est accessible sur GitHub.
Commentaires
A mon sens, FaceBook ferait bien mieux de regarder d'autres solutions bien plus performantes que de développer son propre serveur, qui plus est en C++ alors qu'un bon C ANSI bien classique est plus que suffisant pour réaliser ce genre d'outil. Entre autre, le serveur d'applications web de la société Suisse Trustleap qui s'appelle G-WAN et qui "entère" les performances de tous ses compétiteurs. Mais qu'il est bon de céder à la mode du C++ lorsque l'on ne maîtrise pas le C.