インタビュー

「GMOペパボ研究所」設立、ガチな学術研究でホスティングサービス差別化、所長・栗林健太郎氏、主席研究員・松本亮介氏

 レンタルサーバーの「ロリポップ!」やドメイン取得サービス「ムームードメイン」、国内最大のハンドメイドマーケット「minne」などを運営するGMOペパボ株式会社が7月1日、「GMOペパボ研究所」を開設した。所長にGMOペパボ執行役員CTOの栗林健太郎氏が就任するともに、ウェブサーバーにRuby処理系を組み込むmod_mruby/ngx_mrubyの開発などで知られる松本亮介氏が専任で所属する。研究所を開設した目的や取り組む内容について2人に話を聞いた。

学術の世界でも新規性が認められる技術を開発

――「GMOペパボ研究所」を開設した目的を教えてください。

栗林氏:
 「学術の世界でも新規性が認められることをする」という、ガチな研究が目的です。そのような研究所を作るのは大企業が多いのですが、GMOペパボは従業員数が約300人の中堅規模の会社です。

 我々はウェブサービスを十数年間続けてきて、いろいろな浮き沈みを見てきました。今は要素技術がコモディティとしてそろってきて、それらを使ってサービスを動かせます。しかし、それだけでは新しいサービスを作ってもすぐに真似されて体力勝負になり、時間の経過に耐えられません。そこで、「事業を差別化できる、アカデミズムの水準で新しい技術」を作っていきたいということで、研究所を設立しました。

GMOペパボ研究所所長/GMOペパボ株式会社執行役員CTOの栗林健太郎氏

――松本さんは2015年に入社とのことですが、研究所設立を想定してのことでしょうか。

松本氏:
 いえ。自分の技術を生かす場所としてGMOペパボに入社して、あとから栗林と話をしている中で研究所を作ることになりました。今も研究寄りの仕事をしていて、それを正式な組織にするイメージです。ホスティングについて、セキュリティや基盤としての性能などを研究し、サービスに生かすと同時に、論文やジャーナル(論文誌論文)でも発表しています。

――学会の世界を知らないので、ホスティングの運用についての技術が学術論文になるというのは意外でした。

松本氏:
 以前は、インターネットに関する技術を組み合わせてシステムを作るといった内容は研究になりづらかったのですが、数年前ほどから研究になるようになってきました。

――ちなみに、松本さんは福岡在住とのことですが、研究所の拠点は福岡でしょうか。

栗林氏:
 拠点は設けておりません。あえていうと、インターネット上でしょうか。

松本氏:
 栗林との日ごろの会話もほとんどSlack上です(笑)。

モジュール版PHPで万単位のユーザーの共用サーバーに対応

――今までも研究寄りの仕事をしていたとのことですが、これまでの成果は?

松本氏:
 セキュリティや高速化、安定化の研究で、いろいろ論文を書きました。ただし、我々は論文を書いて終わりではなく、サービスとして実装してお客様に届けるところまでが仕事です。そうした技術を2015年から順次、「ロリポップ!」に適用しており、「次世代ホスティング」と呼んでいます。

GMOペパボ研究所主席研究員/GMOペパボ株式会社シニア・プリンシパルエンジニアの松本亮介氏

――「次世代ホスティング」とはどのようなものでしょうか。

栗林氏:
 共有サーバーは、1台のサーバーにたくさんのユーザーを収容するので、コストを抑えられることと、事業者がサーバーの運用管理をしてくれることがメリットです。その一方で、同じサーバーで無茶をする人が1人いると、みんなが迷惑するというのが弱点です。

 例えると、共有サーバーはマンションのようなもので、1つの建物に多くの世帯が入って、管理会社が掃除などをしてくれます。しかし、隣の人が騒がしいと迷惑します。その解決策の1つとして、例えば壁を10mぐらいに厚くすると騒音は解決しますが、収容効率は落ち、価格が上がります。これがだいたいVPSに相当します。

 そこで我々は、壁は薄いが隣の人の声が聞こえないテクノロジーを開発して、それを次世代ホスティングの一要素としています。

松本氏:
 「次世代ホスティング」では、収容効率をそのままに、いかにシステムを安定させるかということを考えました。1つは、プログラムをいかに高速かつリソースを食わずに動かすかです。もう1つは、リソースを食うプログラムやプログラムの暴走をいかに自動的に抑え込むかです。

 高速に動かす方法としては、共用サーバーでモジュール版PHPをセキュアに動かす技術を開発しました。PHPには、ウェブサーバーに組み込むモジュール版と、ウェブサーバーから起動するCGI版があって、CGI版では大幅にパフォーマンスが落ちます。しかし、モジュール版PHPではユーザーごとの権限の分離ができないため、共用サーバーではCGI版PHPが使われます。

 今までもモジュール版PHPのセキュリティ分離の技術はありましたが、それでは多くても1サーバーで1000ユーザーぐらいまでしか対応できませんでした。また、(既存研究もありましたが)どこかしら穴があってセキュリティが担保できていませんでした。

 そこで、我々が研究として取り組み、1サーバーで万単位のユーザーを収容し、セキュリティも担保された技術を開発しました。OSの進化も利用して、OSに追加されたセキュリティの機構をうまく使っています。この技術は「スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ」という論文にもして、国際会議でも発表しました。同時にオープンソースで公開しています。ソースを公開しているので海外からも質問が来て、先日はロシアのホスティング事業者からメールをもらいました(笑)。

サーバーのリソース制御を柔軟に

――もう1つの、リソースの制御はどのようなものでしょうか。

松本氏:
 暴走プログラムへの対応などについては継続して取り組んでいます。2015年12月にリリースした同時アクセス数拡張機能から順次導入しているところで、「GMOペパボ研究所」の次の研究テーマである「なめらかなシステム」ともつながっています。「なめらかなシステム」については後で説明します。

 まず、共用サーバーは大勢で使っているので性能が不利なように思えますが、サーバーマシンは専用サーバーのものより性能のいいマシンを使っています。そのため、もし空いていれば、実は性能がいい。

 これまでの共用サーバーでは、あらかじめ1人あたりのリソースを分離する制御をしていました。そのため、状況によってはリソースが空きまくっている。そこで、空いているときは自由に使ってもらい、枯渇してくると制限する仕組みを開発しています。実装はできていますが、まだチューニングが必要で、フェーズ的には半分ぐらいですね。

 リソース制御については、「リクエスト単位で仮想的にコンピュータリソースを分離するWebサーバのリソース制御アーキテクチャ」という論文を発表しています。これまでOSレベルやプロセスレベルの分離はできていましたが、リクエストに対してリソース制御ができれば細かい制御ができるというものです。

――そのほか、「次世代ホスティング」では、SNI(注:1台のサーバーで複数のSSL証明書を運用する技術)とそれによるHTTP/2なども対応していく予定ですよね。

松本氏:
 そのあたりは研究としての新規性はあまりありませんが、ngx_mruby(注:組み込みRuby言語処理系でウェブサーバーを制御する技術)など、すでに論文(「スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡張支援機構」)を書いた技術の応用ではあります。技術者としてはとても便利な機能です。

「次世代ホスティング」の一環として、すでにレンタルサーバー「ロリポップ!」において、モジュール版PHPによるレスポンスの高速化や、突発的なアクセス集中などによる503エラー発生を回避できるリソース制御機能の提供を行っている

サーバーの「ふるまい」から自律制御する研究

――次のテーマという「なめらかなシステム」について教えてください。

栗林氏:
 私は今のインターネットサービスには3つの課題があると考えています。1つめは、対象を細かく認識していないこと。サービスでいえば、ユーザーかユーザーでないかとか、あるいはどのプランのユーザーかぐらいまでしか認識していない。サーバー管理でいえば、サーバーの処理が重くなったぐらいしか認識していない。

 2つめは、もう少し細かく認識しようとしても、人間の手間がかかること。ユーザーの望むことを知ろうとすると、アンケートなどユーザーに手間をかけてしまう。サービスに対して自分がユーザーであることを示すにも、ユーザーとパスワードが必要になる。サーバー管理も、職人技で調べないといけない。

 3つめは、サービス提供側から見て、もっとサービスをよくしたい。例えば、リアル店舗では、なじみだとおまけしてくれたりしますが、それはウェブサービスではできない。これは、1つめの点で挙げたように、プランなど雑な区分でしか見ていないからでもあります。あるいは、レンタルサーバーでいうと、リソース制御で話したように空いていればどんどんリソースを使ってもらう、というのもこの区分です。

 この3つを解決したいというのが「なめらかなシステム」です。ユーザーの壁や、ユーザーとサーバーの壁、サーバーとサーバーの壁をなくして、親切にしたい。分かりやすいのは、行動追跡によるレコメンデーションやパーソナライズですね。

 「なめらかなシステム」ができれば、他と差別化となる技術で、簡単にマネできないと思っています。

――レンタルサーバーでは、具体的にどのように使っていくのでしょうか。

栗林氏:
 例えばサーバーの監視では、ロードアベレージやディスクI/O、メモリ使用量などのメトリクスを可視化し、閾値を超えたらアラートを上げるという方法をとります。これを、サーバーそのもののメトリクスを取れるようにする、あるいはリクエストの粒度で制御したい、といったことを考えています。

 また、通常は、負荷が閾値以上になったらアラートを上げる、といった設定をします。しかし、その値はすぐに収まるかもしれないし、もっと上がるかもしれない。あるいは、閾値まで達していなくてアラート対象になっていないけれど、これから上がるかもしれない。そうした、今まで運用担当の経験と勘に頼っていたものを、機械で代替できないかと考えています。

松本氏:
 「なめらかなシステム」というコンセプトの下、プログラムが自動でサーバーの「ふるまい」を解析することを目指します。ある対象が同じ値でも、傾向や変化によって違う意味を持ちます。どのタイミングで大きく変化したかなど、挙動に気付いて制御する。しかも、人手でなく自動で対応するものを研究開発しています。

――傾向の変化の検知と、その自動対応の両方が研究対象でしょうか。

松本氏:
 はい。統計的な手法による変化点検出と、ウェブサーバーの自律制御の両方です。

 これを、共有サーバーのリソース制御にも応用したいと考えています。先ほどもお話したように、サーバーのリソースが許す限りは自由に使っていただき、枯渇してきたら制限をかけるようにしたい。ただし、普段はリソースをあまり使っていない人が一瞬だけ多く使うと制限されるようですと、ユーザーから見ると不平等感もあります。

 そこで、ユーザーごとにリソース使用量の変化をスコアリングし、リソースが枯渇してきたらスコアの高い人を優先して制限をかける、というのを自動で制御します。このあたりも論文にしようと考えています。

――サービスへの導入はいつごろを予定していますか。

松本氏:
 自律制御は、今年中に実装できるのではないかと思います。それに関連してもう1つのテーマがあり、両方合わせると3年ぐらいかかる予定です。

 そのビジョンは、生命の観点からウェブシステムを解釈するというものです。自律制御はサーバー1台の制御で、生物でいえば細胞1つの制御に相当します。一方、生物では細胞がたくさんあって、どんどん死んでは新しく生まれて、全体は循環して維持されています。福岡伸一さんの「生物と無生物のあいだ」で書かれた「動的平衡」ですね。

 レンタルサーバーもみんなが好きに使っているとカーネルが落ちたりするので、あえてサーバーを落として作り直すと、安定した「なめらかなシステム」が作れるのではないかと。それにはいろいろ障壁があるので、3年ぐらいかかるだろうと思っています。

ユーザーに届く研究を目指す

――研究所の所員は募集していますか。

栗林氏:
 めちゃめちゃ募集中です。アカデミズムのバックグラウンドある人、運用をバリバリやってきてアカデミズムを取り入れたい人、両方が対象です。

 アカデミズムを指向するのには、弊社が各自のアウトプットを重視していることに関係あります。今、オープンソースソフトウェア(OSS)の開発者がいろいろ在籍していて、RubyコミッターやRailsアプリの作者、書籍の著者などがいます。そうしたアウトプットの1つとして学術の世界があると、OSSの世界と学術の世界とで相互に刺激があって、互いにレベルアップできるのではないかと考えています。

松本氏:
 各自の専門分野はいろいろでいい。私は運用技術が専門ですが、機械学習やデータマイニングなども勉強しなくてはならない。運用技術でなくても、核となる専門領域をもっていれば、応用できると思います。

栗林氏:
 普通は大きな企業に研究所がありますが、我々と同じ規模の会社でも研究開発のアプローチをやっていこう、と呼び掛けたい。研究で終わるのではなく、サービスになってユーザーに届く研究をやりたい。サービスになってユーザーに届く研究をやりたいので、我々ぐらいの規模の会社での研究に意味があると思います。

松本氏:
 学術のほうでも、そういう研究をしたいという人も多い。学術とインターネット業界を垣根なく行き来できるようなことに将来なればいいと思います。