Mesosは、サーバのクラスタを効率的に管理し、リソースの隔離も行うオープンソースのプロジェクトだ。今は主に、プロジェクトの生誕の地であるTwitterとAirbnbなどで使われている。Googleにも”Borg”と呼ばれるよく似たシステムがあり、それはMesosが登場するかなり前に単独で開発され、データセンターの稼働の最適化に利用されてきた。
今Mesosは、TwitterとAirbnbのエンジニアだったFlorian Leibertと元AirbnbのエンジニアTobias Knaupが作ったスタートアップMesosphereで開発されている。オープンソース系のスタートアップの例に漏れずMesosphereも、関連サービスを将来的な収益源として考えているが、Leibertによると、今はMesosのエコシステムの育成と、そのコンセプトの普及に注力している。
Mesosは今ではApache Foundationがホストしているが、発端はカ大バークリー校の研究プロジェクトで、研究グループの一人、当時博士課程の学生だったBenjamin Hindmanが、それをのちにTwitterに持ち込んだ(彼は今Twitterの上級技術者だ)。
Mesosの基本的な考え方は単純明快だが、それはかなり前に時流から外れてしまっていた。それはつまり、アプリケーションの各部向けにそれぞれ専用のサーバクラスタをセットアップするのではなく、むしろサーバのプールを作っておいて、それを各部…Hadoop、Webサーバ、etc.…が共有し自分を動かす、という今のMesosのアーキテクチャだ。アプリケーションはお互いを邪魔することなく、むしろリソースを必要に応じて動的に割り当てる。たとえばビッグデータ分析の仕事が終わったら、リソースをトラフィックの多いWebサーバに回す、とか。
もっと概念化して言うと、Leibertの説明では、いろんなプロセスが並行で動くデータセンターをマルチコアのCPUにたとえると、Mesosはいわば、そのCPUの動作を管理するオペレーティングシステムのカーネルだ。オペレーティングシステムはカーネルの外側にいろんな実働部隊を要するが、今それらの部位の開発にMesosphereは取り組んでいる。たとえばAirbnb時代にLeiberが作りChronosと名づけたスケジューラは、伝統的なcronに代わって、Mesos上で動く各サービスの開始と停止(とエラー処理)を自動化する。またMarathonは、いわばMesosにおけるinit.dとして、始動プロセスの役を担う。その後のサービス(Chronosなど)が利用する、開始、停止、スケーリングなどの基本的なプロセス管理タスクは、MarathonがAPIとして提供する。
背後でChronosとMarathonが動くことを前提として、チームは今日(米国時間9/26)、Mesosが動かして管理するアプリケーションコンテナDockerを発表した。デベロッパは自分のアプリケーションをこの軽量でポータブルなコンテナに収めることによって、展開を…新しいマシン上の展開でも…自動化できる。つまりMesosのレベルで言えば、クラスタ上のアプリケーションの展開が大幅に簡易化される。彼らのブログ記事によると、“アプリケーションをDockerに入れてMesosに渡すことにより、オンプレミスやクラウド上の多様なアプリケーションを展開し動かすための、真にエラスティックで効率的で首尾一貫性のあるプラットホームが約束される”。Leibertによると、アプリケーションがDockerを着ているとクラスタ全域にわたるサービスの発見が容易になる。つまり、クラスタをセットアップしたらそれで終わり、ではなく、いろんなサーバがお互いを見つけられる必要があるのだ。
Mesosなどクラスタシステム上のサービス~アプリケーションをDockerのようなもので抽象化することは、Leibertによると、過去にもいろんな人が試みたが、その実現はとても困難だった。しかしMesosphereの6人のチームは、Mesosを誰よりも熟知しているので、アプリケーションコンテナの組み込みに成功できた。
以上のようなビルディングブロックが揃ったところで、チームが次に挑戦するのは、Mesosを新人ユーザでも使いこなせるための、ユーザフレンドリーなユーザインタフェイスの構築だ。その仕様は、Mesosのコミュニティからの要望に基づき、またその具体的な部位もユーザからの求めに応じて加えていく予定だ。
[原文へ]
(翻訳:iwatani(a.k.a. hiwa))