Facebookが今日(米国時間11/5)、Proxygenをオープンソースにする、と発表した。それはC++で書かれたHTTPライブラリで、同社が使っているHTTPサーバも含まれている。Facebookは最近いろんなものをオープンソースにしてきたが、その多くはモバイルデベロッパ向けだった。しかし今日の発表は、もっと広い範囲のデベロッパが関心を持つだろう。
Facebookによると、Proxygenはそもそも最初から、ApacheやnginxのようなHTTP/プロキシサーバに置き換わるものを志向していない。“彼らのプロジェクトはCで書かれたきわめて自由度の高いHTTPサーバを作って高いパフォーマンスを提供することが目的だが、構成(〜設定)の項目や値が途方に暮れるほど多い”、Facebookの技術者Daniel SommermannとAlan Frindellが今日の発表声明の中でこう書いている。“逆にわれわれは、C++によるパフォーマンスの良いHTTPフレームワークを目標とし、サーバもクライアントのコードも妥当なデフォルトで間に合うよう努めた。そして、既存のアプリケーションへの統合が容易であることも”。
それでも、このフレームワークを使うとイベントドリブンのサーバを手早くセットアップでき、HTTPとSPDYのリクエストを処理できる。特殊な機能を持ったWebサーバを作りたいデベロッパが、そのベースとしてProxygenのコードベースを利用することもあるだろう。
SommermannとFrindellによると、Proxygenは2011年に始まったプロジェクトから進化したもので、当初は自由なカスタマイズのできるリバースプロキシロードバランサだった。
FacebookはそのHTTPスタックとしてApacheやnginx、Varnishなどを使うこともできたはずだが、技術者たちは、独自のフレームワークを作った方がFacebookの既存のインフラストラクチャやツールとのより深い統合が可能だ、と主張した。たとえば、Facebook自身が作ったApache Thriftなどがその典型的な例だ(今ではGitHubで入手できる)。
チームは今、このフレームワークをFacebookの今の大きさに合わせてスケールアップする方法を模索しており、また、ほかのツールでの再利用にも努めている。たとえばHaystackやHHVM、Facebookのロードバランサ、同社のモバイルインフラストラクチャなども、何らかの形でProxygenを利用している。
これまでにProxygenは、“何兆という天文学的な数のHTTP(S)/SPDYリクエストを処理してきた”から、相当現場で鍛えられたコードであることは確かだ。そのソースコードはここにあり、Proxygenの詳細な説明がここにある。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))