Googleのようにデータサービスをスケールするには
Pocket

コンピューティングにおける最大のミステリーの一つに、どうやってGoogleが莫大なサービスを効率よくスケールしているかというのがある。多くの人は、競争におけるGoogleの最大の強みは、自前のデータセンターをうまく運用することで、革新的なサービスを他のベンダが真似できないようなペースで生み出し続ける事ができる点だというだろう。

Googleの秘密のタネは元々BORGと呼ばれていたソフトウェア層で、世界中のデータセンターで実行中のアプリケーションを連動させるものだ。Google検索、Gmail、GoogleMapといった個別のサービスのために動いているクラスターをそれぞれ組み合わせるのではなく、サービス全体の負荷をデータセンター内のすべてのリソースで分配させている方法をとっている。

負荷は細かなタスクに分解され、BORGはそれをCPU、メモリ、ディスクといった単位で余裕のあるリソースに振り分ける。いわばデータセンターを動かすためのOSの様なものだ。

Screen Shot 2014-06-09 at 5.24.29 AMMesosphereは先日、事業立ち上げで1000万ドルの投資を受けたと公表した。同社はアンドレッセン・ホロヴィッツによるスタートアップ企業だ。彼らは自社のソリューションが、Googleのようにサービスをスケーリングしたいが、BORGのようなものを開発するための人的リソースを持たない企業に対する回答になると考えている。

Mesosphereのソリューションは、オープンソースのApache Mesosがベースになっている。アーキテクチャ的には分散配置されたデータセンター・クラウドのリソースを最大限活用するという意味で、Googleと同じ考えに基づいている。

MesosphereのCEOで共同設立者のフローリアン・レイバート(@flo) に、スケールアウトを望む世界中の企業に対してトレンド(とGoogle)に追いつくチャンスを提供するための戦略について話を聞いた。

Googleが産み出したものを活用する

RW: Mesosphereで取り組んでいる基本的な問題とは何ですか?

FL: 多くの環境でスケーリングは失敗しています。クラウドにしてもそうです。そこで我々はGoogleがBORGを用いたのと同じ手法で問題を解決しました。

GoogleのBORGは、世界中のデータセンターのリソースをプールし、ハードウェアを最大限活用することができます。これにより、顧客への新しいサービスの展開が簡単になり、開発者もスケーリングについて頭を悩ませる必要はありません。

私達がApache Mesosを使ってやっているのも同じ事で、Twitterからシステムエラー画面を追いやる事ができたのもこれによるものです。

Twitter程度の規模であれば、30分くらいで再現してみせることができます!

他にもHubspotはAmazon AWS上のMesosで稼働しています。AirBnb、E-bay、Netflix、OpenTable、銀行等の企業に対し、新しくシンプルなアプローチでデータセンターやクラウドをスケーリングさせる事も可能です。私達はデータセンターを一台のマシンのように扱わせることができるのです。

正解は仮想化ではない

RW: 私は仮想化がこういった問題を解決するものだと思っていましたが?

FL: 10年前、仮想化はデータセンターのサーバーの統合とコストの抑制に実に役に立ちました。

しかしながら仮想マシン(VM)が登場した頃から、時代およびアプリケーションの性質は大きく変化しました。サーバーは18ヶ月ごとに処理能力が約二倍に向上するというムーアの法則に従います。仮想マシンでは益々強力になるサーバーに、幾つもの小規模なアプリケーションを(手動で)配置する事ができます。

今日びのアプリケーションは最初から、VMがあまり意味を成さない様な分散的なシステム前提で開発されます。私達はアプリケーションを複数のマシンに分散させるよりも、全てのマシンを集約させ、アプリケーションに対して一まとまりのリソースとして見えるようにします。そうなると、これまで複数のVM上でアプリケーションが作られ、配置、拡張され、動かされてきたやり方が違ってきます。

我々のシステムはハードウェアをひとまとまりのリソースとするのであって、今あるハードウェアをスケールアップするということではありません。

RW: そのアプローチの主な利点は何ですか?

FL: オペレーションおよびビジネスにおいて重要な利点があります。まず、もしあなたが昔ながらのVMベースでのデータセンター運用を行っていたとします。Mesoを導入する事によって、ハードの利用効率を3~5倍に引き上げることができます。Googleは、既存のハードの利用効率を上げることで、新たに巨大なデータセンターを立ち上げるためのコストを削減できると示唆してくれています。

もしパブリッククラウドの運用をしているとしても、Mezoは同じく役に立つでしょう。顧客であるHubspotはAWS上でインフラを稼働していますが、Mezosに乗り換えてからというもの、Amazonへの支払いが半分になりました。

Google並の効率をコードの書き直しなしで

RW: ちょっと待って下さい、もしMezoに処理を移行する場合、ソフト全てを書きなおす必要があるのではないですか?

FL: いいえ、我々が作ったMarathonと呼ばれるレイヤーがあります。これはアプリケーションを起動、停止、スケールするためのREST APIを提供します。実行中のタスクの状態は、Mezosに保存、抽象化されます。この事は開発者からすれば、LinuxのアプリをMezos上で動かす場合、アプリに何の変更もなしに動かせるということです。Ruby on RailsアプリやJBossの様なエンタープライズアプリサーバが稼働し、自動的に復旧・スケールの調整を行うという事を想像してみてください。

未来はコンテナ化の中にある

RW: この技術が目指すものとは? これはどの様にアプリケーションの性質を変えるのでしょう?

FL: 業界はかつての全てが静的に定められていた環境から、PaaSやコンテナレジストリにより定義付けられた、静的なリソースがプールされたような環境に移りつつあるのだと思います。

過去に構築されたWebアプリ等について考えてみてください。人々は状況に応じてより多くのプロセスやメモリを使いたがり、いらなくなればそれらのリソースを手放しました。そしてアプリケーションにはライフサイクルというものがあります。Mezosが提供するのはそういう事を行う仕組みなのです。

トップ画像提供:Robert Scoble(Flickrより), CC 2.0

Pocket