チーフエンジニア兼主席研究員の松本(まつもとりー)(@matsumotory) です。2018年7月23日から5日間に渡って開催された、COMPSAC 2018: The 42nd IEEE International Conference on Computers, Software & Applications Staying Smarter in a Smarting Worldにおいて併設で開催されたADMNET 2018: The 6th IEEE International COMPSAC Workshop on Architecture, Design, Deployment and Management of Networks and Applicationsで、ペパボ研究所の松本が1件の発表を行いましたので、論文(国際会議予稿)とスライドと共に簡単に紹介します。その後、COMPSAC2018に参加した感想を述べます。
ペパボ研究所としては、残念ながらCOMPSAC2018のメインシンポジウムにおいてのacceptには至りませんでしたが、併設の国際ワークショップに登壇するという、初の国際会議での発表となりました。ペパボ研究所として国際化を進めながら、我々の研究開発している技術の正しさと広がり、そしてその普遍性をグローバルな水準で問うという意味では、我々にとっての大きな一歩になりました。
Large-scale Certificate Management on Multi-tenant Web Servers
高集積マルチテナント方式によるWebホスティングサービスでは、高集積にホストを収容することで、ハードウェアコストや運用コストを低減し低価格化を実現するために、単一のサーバプロセス群で複数のホストを管理する必要があります。 ここでいう単一のサーバプロセス群とは、ホスト毎にサーバプロセスを起動させるわけではなく、複数のホストでサーバプロセスを共有することを示します。 実際にサーバプロセスの処理を行うプロセスは、ホスト数には依存しないものの、Web サーバの実装によっては数十から数百存在することがあります。 従来のWebサーバソフトウェアはHTTPSで通信を行うために、サーバ起動時に、サーバ証明書とペアとなる秘密鍵をホストごとに読み込んでおく必要があります。 しかし、そのような仕組みでは、高集積マルチテナント方式でのメリットである性能と低価格化の両立が難しくなります。 なぜなら、高集積にホストを収容すると、大量のサーバ証明書の読み込みによってサーバプロセスの起動に多くの時間を要したり、サーバプロセスのメモリ使用量がホスト数に依存して増加したりするからです。 また、サーバ証明書をファイルで管理する必要があり、複数のWebサーバによる処理の分散や可用性の担保にも支障をきたします。
本論文では、高集積マルチテナント方式によるWebサーバにおいて、Webサーバプロセス起動時にサーバ証明書と秘密鍵を読み込んでおくのではなく、SSL/TLSハンドシェイク時において、リクエストのあったホスト名を元に、リクエスト単位で対応するサーバ証明書と秘密鍵のデータをデータベースから動的に取得することで、Webサーバプロセスのメモリ消費量を大幅に低減する効率的なサーバ証明書の管理アーキテクチャを提案しました。 SSL/TLSハンドシェイク時における証明書と秘密鍵の動的な読み込みは、筆者らが開発したnginxをmrubyで拡張できるngx_mrubyに、証明書の取り扱いを制御できる機能追加を行うことで対応しました。 サーバ証明書と秘密鍵はKVSの一種であるRedisに保存しておき、mrubyのコードによってホスト名に対応した証明書と秘密鍵を取得するようにしました。 本手法は、HTTPS通信を終端するWebサーバとして広く使われているnginxに対して、ngx_mrubyを用いることによりnginx本体を変更することなく簡単に組み込めるため、実用的であるといえます。 また、実装は既にOSSとして公開済みです。
実験から、TLSのハンドシェイク時のCPU使用時間のコストと比較し、動的に証明書を読み込む処理はコストの低い処理となるため、実用上問題にならない性能がでることを示しました。 さらに、プロダクション環境で実験を行い、メモリ32GBytes 搭載したサーバであれば、今後証明書数が20万以上になった場合に、前述したメモリ使用量の観点では計算上、500GBytes 以上のメモリが追加で必要であることから、32GBytes メモリを搭載したサーバも追加で 15 台以上必要です。 一方で、提案手法では、メモリ使用量が証明書数にほとんど依存していないことから、メモリ使用量の観点では、1 台でも処理できると見積もることができました。提案手法によって、今後のHTTPS通信が当たり前となる状況において、必要なサーバ台数も大幅に削減できることがわかりました。
Proceeding
スライド
過去に日本語で発表したスライドはこちらです
COMPSAC2018に参加して思ったこと
ペパボ研究所としてCOMPSAC2018に参加し、併設のワークショップとはいえ、きちんと英語で論文を書いて査読を通し、英語で発表をしながら全ての質疑を英語で行えたということはとても良い経験になりました。質疑の中では、プロダクションにおける従来手法の実験で、証明書数がほとんど増えていない理由や、提案手法がTLSハンドシェイク単位で証明書を読み込んだ後のメモリ保持期間やその扱いにおける議論が行われました。とはいえ、まだまだ正しい英語ですばやく回答をできていなかったので、セッション終了後にも質問頂いた先生に改めて説明するなどしました。これらの経験からも、明確に英語で議論を行うスキルが、研究の成長に対して足かせになっていることは明白なので、これからもっと論文を英語で書いて英語で発表し、最も重要である英語の質疑応答を積極的に行っていきたいと思います。
5日間参加する中で最も印象に残ったセッションは、IEEEの歴代Presidentによるパネルディスカッションでした。その中で「IEEEコミュニテイの良いところは、会社や大学、あるいは一般的な社会においては、何かと立場や役職等があるけれど、COMPSACのようなカンファレンスに世界中から研究者や技術者が集まった時には、彼らは皆平等で何の壁もなく、立場など気にせず自由に研究開発に対して議論し、研究を育て、研究を広げていくことができる。自分たちはそういうコミュニティが好きだし、だから自分はここにいる。」と仰っていて、ああ、なんて自分は小さな世界にいたんだ、と改めて思わされ、非常に感銘を受けました。もっともっと、そのような壁を気にすることなく、グローバルな基準でコンピュータ・サイエンスに関する技術、ひいては科学を育てていく場所が今ここに、目の前にあって、自分はそこにいるんだ、ということを身をもって実感することができました。
本エントリの最初に、国際化に向けての大きな一歩を踏み出したと述べました。しかし、自分はCOMPSAC2018のメインシンポジウムにおいてはrejectされたことを、今も昨日のことのように覚えていて、悔しい気持ちしかありません。また、COMPSACのメインシンポジウムで登壇している皆さんの研究内容の高度さ、そして質疑応答での高度な掛け合いは、その思いを更に強くさせられました。ペパボ研究所の国際化に向けて、ペパボのプロダクトをグローバルな水準でより素晴らしいものにするべく技術の正しさと広がりを進めていくためには、僕自身の今のスキルが上限になってしまってはペパボ研究所の先なんてありえません。もっと正確に英語で論文を書けるようにし、もっと学び、もっと手を動かし、もっと深く思考し、我々の技術をトップカンファレンスのようなグローバルな水準で問い続け育てていく、これらを進めるためにも、これからもただひたすら自分のエンジニア・研究者としてのスキルを高めていくと改めて心に誓うきっかけになりました。
世界は広い。でも、ようやくそこに一歩踏み出せそうな気がします。
【PR】パートナー積極採用中!
ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。