MesosphereがMesosベースの'データセンタオペレーティングシステム'用SDKをリリース

Mesosphere Incは,同社のMesosを使用したDatacenter Operating System(DCOS)上で動作するデータセンタサービスを開発する,Mesosphere Software Development Kit(SDK)をリリースした。Mesosphereブログの説明によれば,SDKは現時点でJava, Go, Pythonをサポート対象としている。DCOSのweb UI,またはコマンドラインインターフェースを通じてサービスをパッケージ化することができる。パッケージ化されたサービスは,クラスタ全体にインストレーションし,実行することが可能だ。

Mesosphere DCOSは,データセンタあるいはクラウド内のマシンのクラスタ全体を対象に,サービスやアプリケーションの実行が可能な,データセンタ規模のオペレーティングシステムである。Apache Mesosクラスタマネージャを中心に,多数のオープンソースあるいはプロプライエタリなコンポーネントを組み合わせている。カスタムWeb UIとCLIツーリングを通じて,サービスのデプロイや管理を行うことができる。

MesosphereのWebサイトによれば,DCOSは現在,2つのバージョンが提供されている。無償のクラウドライセンスを含み,Amazon Web Serviceで動作する(Microsoft AzureやGoogle Cloud Platformにも対応予定)コミュニティエディションと,オンプレミスあるいはパブリッククラウドで動作し,24時間365日のサポートが付属するコマーシャルエンタープライズエディションだ。

既存のスケジューラ,あるいはMesos用語で言うフレームワークの数は多く,さまざまな種類のアプリケーションを実行することができる。長時間稼働する(マイクロ)サービス用のMesosphere Marathon,バッチ処理を実行するChronos,大規模データ処理用のSpark,データストレージのためのCassandra,他にも多数のものがある。MesosphereのWebサイトにはDCOSの目的として,標準的なMesosクラスタを使用する場合に比較して,これらフレームワークをよりシンプルに分離あるいは管理可能にするため,と説明されている。Mesosphere SDKのリリースは,開発者が自身でフレームワークやデータセンタサービスを開発する場合の障壁を低くすることを意図したものだ。

InfoQでは,同社データセンタアプリケーションアーキテクトのMichael Hausenblas氏と話をする機会を得て,MesosやDCOS,新しいMesosphere SDKについて氏に質問した。

InfoQ: MesosphereやTwitter, Appleなど多くの企業が,Mesos上でフレームワークを開発しています。SparkはMesos用に開発された最初のフレームワークのひとつです。 Mesosの歴史や,フレームワーク開発がこれほど開発者を引き付ける理由について,InfoQの読者に説明して頂けますか?

Hausenblas: Mesosのストーリは2009年に始まりました。カリフォルニア大学バークレー校の博士課程の学生で,AMPlabでクラスタのリソース共有とスケジューリングを研究していたBenjamin Hindman, Andy Konwinski, Matei Zahariaの3名がMesosを開発したのです。まったく新しい分散システムをMesos上にどれほど短期間で構築できるか,ということを実証するため,Sparkはわずか1,300行のコードで開発されました。Sparkは長い週末を利用してBenの両親のスキー小屋で作った,Mesosのサンプルアプリケーションでした。

これが現在では,週末に分散システムを構築できるような,‘データセンタ開発者’の新しいクラスを生み出すに至っています。車輪の再発明をするのではなく,Mesosの提供するクラスタリソースの共有プリミティブを活用ことで,これが可能になったのです。この結果,ネットワークコードがほとんど必要なくなり,開発サイクルの短期化が実現すると同時に,フォールトトレランスやスケーラビリティをMesosに任せることが可能になりました。

ご存知と思いますが,Benjamin Hindmanは現在,Mesosを支援する企業でMesosphereのチーフアーキテクトを務めていますし,Andy KonwinskiとMatei ZahariaはSparkの開発企業の共同創設者です。このエコシステムを囲んで,今後,さらに多くの企業が現れてくるでしょう。

InfoQ: Apache MesosとDCOSの違いは何ですか?

Hausenblas: Mesosphere DCOSは,データセンタやクラウドの全マシンを対象としてプールし,あたかもひとつの巨大なコンピュータのように動作する,まったく新しいタイプのオペレーティングシステムです。一方のMesosはApacheのオープンプロジェクトで,このオペレーティングシステム内のカーネルにあたります。これはちょうど,Linuxの世界の状況と同じようなものです。Linuxのカーネルはそれ自体ではあまり使い道がありません。システムサービスやカーネル周りのツーリングを加えて完全なプロダクトになった,Ubuntuのようなディストリビューションがあるのはそのためです。これと同じことを,私たちはデータセンタで行ったのです。私たちはMesosカーネルを,initシステム(marathon)やファイルシステム(HDFS),アプリケーションのパッケージングとデプロイメントシステム,グラフィカルUIとCLIなど,多数のコンポーネントでラップしました。これらすべてがDCOSを構成しています。MesosとMesosphereを対比した議論については,https://mesosphere.com/blog/2015/07/09/watch-matt-trifiro-explain-the-difference-between-mesos-and-mesosphere/を参照してください。

InfoQ: データセンタオペレーティングシステム上でデータセンタサービスを開発する作業は,パーソナルコンピュータ上のオペレーティングシステムでネイティブに動作するアプリ開発や,モバイルOS上のモバイルアプリと比較して,どのように違うのでしょう?

Hausenblas: そのまま当てはまります。PCの時代に戻って考えると,MacOSやWindowsといったオペレーティングシステムがあって,ハードウェアやマルチコアプロセッサを抽象化していました。開発の短期化や下位ハードウェアの活用を可能にする,パワフルなAPIやプリミティブを使うことで,開発者はデスクトップアプリを短期間で開発できるようになり,オペレータ(エンドユーザ)は何十ものアプリケーションを簡単に同時実行できるようになったのです。

今日のデータセンタオペレーティングシステムがそれらと違うのは,異なるフォームファクタを対象とするアプリケーションを開発している点にあります。データセンタでは,ラップトップPCの4つのコアではなく,ラックに収まった40,000台のコアを相手にプログラムしなくてはなりません。ですが,実際には同じことです。最初にメモリ割り当てを要求します。タスクを起動します。ハードウェアを抽象化して,アプリケーション開発用の共通APIを提供します。違うのは規模だけです。

もっと明確に言うならば,データセンタ開発者がメインストリームになっても,ネイティブなデータセンタサービスを記述する必要はほとんどない,ということです。Marathonのようなツールを活用すれば,アプリケーションやデータセンタのワークロードが開発できます。実際にデータセンタサービスを開発する必要があれば,FAQを参照してみてください。それ以外,アプリケーションの見地からは,本当に単純な話です – もっとも単純な例として,JARファイルを使用したJavaアプリケーションやPythonスクリプトのような既存のアプリケーションを実行したいのであれば,修正の必要はまったくありません。もう少し複雑な状況として,例えばDpckerイメージベースのようなマイクロサービス指向のアプリケーションを開発する場合には,サービスディスカバリにMesos-DNSを,コンテナをローンチおよびオーケストレーションするコンポーネントとしてMarathonを使用することができます。

InfoQ: SDK自体について教えてください – どのようなタイプのものを定義して,SDKと呼んでいるのでしょう?

Hausenblas: Mesosphere SDK(Software Development Kit)は,DCOS開発者が,さまざまな言語(Java, Go, Python)を使った新しいデータセンタサービスをもっと簡単に開発して,CLI上のコマンドひとつでインストール可能なパッケージとして,それらのアプリケーションを配布できることを意図したものです。Mesos APIを公開するだけでなく,DCOSエクステンションやサービス構築用のライブラリ(スケジューラ開発,実行等),アルファ版/ベータ版/製品版の認証のためのチェックリスト,開発手順書なども提供します。アプリケーション開発を成功させる上で重要であるコミュニティも,Develop Programを中心として形成され,成長を続けています。非常に強固なコミュニティです。

InfoQ: オペレーティングシステムを抽象化し,これらのサービスを公開することによって,最終的な利益を受けるのは誰なのでしょう?フレームワーク開発者でしょうか,あるいはそれらのサービス上に構築されたアプリケーションを利用するエンドユーザでしょうか?

Hausenblas: 分散アプリケーションを構築する上で,マシンというのは適切な抽象化レベルではありません。IPアドレスやローカルストレージといった,マシン固有の詳細の考慮を余儀なくされるからです。ですから,仮想的あるいは物理的レベルのマシンをすべて組み合わせて,ひとつのリソースプールにするのです。DCOSはタスクの自動配置やサービスディスカバリ,タスク調整のためのメッセージングを行う,組込みプリミティブを提供します。これらのコードを自分で作成(テスト,デバッグ)する必要がなくなりますから,開発労力が大幅が軽減され,より優れたユーザエクスペリエンスを迅速に提供できるようになります。データセンタをオペレーティングシステムとして抽象化することで,データセンタ規模の新製品を短期間で市場に投入することが可能になります。これがオペレーティングシステムのもたらす変化です。iOSやAndroidを使わずにUberを開発し,提供することを想像してみてください。何年も何年もかかるはずです。

また,ビジネス的な理由から,データセンタオペレーティングシステムの抽象化を利用する場合もあります。オペレーティングシステムが提供するプラットフォームは,さまざまなインフラストラクチャ全体で動作するアプリケーションの配布を可能にします。これによって開発者は,広範でフリクションのない市場にアクセスして,これらのアプリケーションを配布することができます。私たちはDCOS内に,複雑な分散システム(CassandraやKafka, Spark, Kubernetesなどのような)をパッケージ可能な,極めて高度なパッケージングシステムを構築しました。これにより,開発されたシステムの配布が容易になっただけでなく,システムのインストール,設定,起動といった作業が,ひとつのコマンドで一瞬にできるようになります。これは前例のないことです。当社のCEOであるFlorianは,Aribnbにいた頃,Cassandraを立ち上げるのに3週間を要したと言っています。今では同じCassandraを,コマンドひとつで,2分でインストールできるようになりました。

InfoQ: これらのデータセンタサービスはどこに置かれるのでしょう,InfoQの読者がアクセスするには,どのような方法がありますか?

Hausenblas: データセンタ用のサービスはすべてひとつのリポジトリに置かれています。リポジトリは継続的に拡張,拡大されています。DCOSリポジトリは,大規模な分散システムをパッケージ化して配布する手段のひとつで,DockerHub(コンテナイメージを保存する場所)のような低レベルのコンテナリポジトリと協調して動作します。さらにDCOSリポジトリには,HadoopやKafkaのような分散システムの複雑なインストールや,プロビジョニングを可能にするためのメタデータも保存されています。

新しいデータセンタサービスを開発したら,開発者はそれをDCOSリポジトリに追加します(この操作は無償です)。ひとつのコマンドをインストールした人たちが,そのサービスの顧客あるいは見込み顧客になります。開発者にとっては,Fortune 500企業から新興のスタートアップまで拡張を続けるエコシステムに無理なくアクセスできる訳ですから,本当にエキサイティングです。DCOSプロバイダは,デプロイするプラットフォームや,データセンタアプリの管理を標準化します。これらはいずれも,最新技術を導入しようという企業にとって,これまでは非常に大きなハードルでした。

DCOS用に開発するということは,すなわちMesosコミュニティを対象にすることになります。Mesosphere DCOSがMesos上に構築されているため,アプリはオープンソースMesosコミュニティの一員であることによるメリットを全面的に享受できるだけでなく,ターンキー開発やスケーリング,DCOSのマネジメント機能などを手に入れます。開発者にとってDCOS SDKは,コミュニティとリソースコードの源泉になるのです。ユーザにとっても,アプリの検索やインストールの容易化というメリットがあります。

InfoQ: InfoQ読者がSDKを手に入れるには,どうすればよいのでしょう?

開発プログラム(Developer Program)のメンバになることで,DCOS SDK開発ツールやリポジトリなど,すべてのアクセスが可能になります。拡大を続けるDOCSの開発者コミュニティにもアクセスできるようになります。開発者プログラムに参加すれば,VIPパートナ(VIP Partner)になる資格も得られます。VIPパートナになると,開発者プログラムに加えて,Mesosphere開発者への優先的なアクセス権やDCOSサービスビルドへの早期アクセスの他,認定済DCOSサービスへのコントリビュートも可能になります。開発者プログラムは無償で,すべてオープンです。VIPパートナは招待のみで,限定されたパートナが対象となります。

InfoQ: これまでにSDK用に記述されたサービスの例をあげて頂けますか? それらが特に,Mesosphere DCOSの提供する共通サービスをどのように使っているのかも教えてください。

Hausenblas: 主要なVIPパートナの多くがDCOS用にデータセンタサービスを開発しています。それぞれがアルファ版,ベータ版,製品版という3つのステージに分かれています。サービスの例としてはKafkaや Kubemetes, HDFS, Hadoop, YARN, MemSQL, Cassandra, ArangoDB, Create.io, Spark, Quobyteなどがあります。これらはDCOSに最も要求の多いサービスです。年内には100件を越えると予想しています。随時更新されているDCOSサービスのリストが https://docs.mesosphere.com/reference/servicestatus にありますので,こちらを参照してください。

InfoQ: 今日は時間を頂いて,本当にありがとうございました。他に何か,InfoQ読者に伝えておきたいことがありますか?

Hausenblas: ありがとうございます。すべて伝えられたと思います – SDKへのたくさんのフィードバックを楽しみにしています。それから,新しいデータセンタサービスのコントリビューションも!

DCOS用のMesosphere SDKに関するさらに詳しい情報は,Mesosphereブログで見ることができる。Mesosphere開発者プログラムを通じてSDKにアクセスするための登録は,同社のWebサイトから可能だ。