17
Ver1.1 2013/02/21 Etsuji Nakai NII dodai-deploy2.0 project クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

Ver1.1 2013/02/21Etsuji Nakai

NII dodai-deploy2.0 project

クラウドアプリケーションのマルチプロセス・プログラミングモデルを実現する「Data Center Kernel」

Page 2: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

2

NII dodai-deploy2.0 project

$ who am i

–The author of “Professional Linux Systems” series.• Available only in Japanese. Translation offering from publishers are welcomed ;-)

Professional Linux SystemsTechnology for Next Decade

Professional Linux SystemsDeployment and Management

Professional Linux SystemsNetwork Management

Etsuji Nakai– Senior solution architect and cloud

evangelist at Red Hat.– Working for NII (National Institute of

Informatics Japan) as a cloud technology consultant.

Page 3: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

「クラウドアプリケーション」の3形態

Page 4: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

4

NII dodai-deploy2.0 project

クラウドアプリケーション = PaaS上のアプリケーション ?

PaaSの特徴– 開発者にはクラウドを(なるべく)意識しないプログラミングモデルを提供– 実行環境の最適化はPaaS基盤が自動管理

• ユーザによるコントロールの自由度は少ない– つまり「トラディショナルなアプリケーション開発者」を支える自動化機構

クラウド基盤

PaaS基盤

アプリケーションコード

実行コンテナ

アプリケーションコード

実行コンテナ

開発者が用意するのは「クラウドを意識しない」アプリケーションコード

実行環境の最適化はPaaS基盤が自動管理

オートスケール/ 負荷分散など

Page 5: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

5

NII dodai-deploy2.0 project

クラウドアプリケーション = クラウド管理ツール?

RightScale/Scalar/CloudFormsなどのクラウド管理ツールの特徴– クラウド管理者に実行環境の自動化/最適化ロジックを実装するためのDSLを提供– 管理者はVMインスタンス内のアプリケーションコードの開発には関わらない– つまり、「開発済みのアプリケーション」に対する運用の効率化を支える自動化機構

クラウド基盤

アプリケーションコード

VMインスタンス

アプリケーションコード

実行環境の最適化ロジックをクラウド管理者がプログラミングクラウド管理者は、

VMインスタンス内のアプリケーションの開発には関わらない

オートスケール/ 負荷分散など

VMインスタンス

クラウド管理ツール

自動化スクリプト

クラウドAPI

Page 6: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

6

NII dodai-deploy2.0 project

本当の意味のクラウドアプリケーションとは?

PaaSモデルとクラウド管理ツールモデルは、考え方が分断されており、これらを融合/選択する包括的な利用モデルはまだ見当たらない。

– より汎用的で、どちらの使い方もできて、さらに、今までにない使い方を生み出すようなモデルは無いのだろうか?

ヒント– PaaS基盤よりも汎用的なクラウド基盤自動化/管理層を用意して、このレイヤーでクラ

ウド上のリソース(VMイメージ/ VMインスタンス等)を抽象化する。– 専用の管理ツールから自動化を行うのではなく、汎用的なプログラムコードからの自動

化を実現するAPI/ライブラリを用意する。– このプログラムコードの実行場所は任意に選択可能。

• 専用マシンで実行してもよい→ クラウド管理ツール的利用法

• アプリケーションが実行されるVMインスタンス内で実行してもよい→ 「クラウドをあえて意識したプログラミングモデル」を提供するPaaS的な利用法

Page 7: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

7

NII dodai-deploy2.0 project

汎用的な「クラウドアプリケーション」のモデルイメージ

クラウド基盤

汎用的なクラウド基盤自動化/管理層

アプリケーションコード

VMインスタンス

自動化Library

クラウド管理ツール

管理サーバ

自動化Library

クラウドAPI

クラウド管理ツール的な自動化自立分散的な自動化

アプリケーションコード

VMインスタンス

自動化Library

オートスケール/ 負荷分散など

アプリケーションコード内部にも自動化の機構を組み込んでしまう

それぞれの利用方式に対して必要なAPIの種類は異なる

自立分散のために、VMインスタンスリストなどのグローバル情報はこの層で保持する

Page 8: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

「Data Center Kernel」とは?

Page 9: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

9

NII dodai-deploy2.0 project

提案

「自立分散的な自動化」を咀嚼して理解しやすくするように、リソースの抽象化をトラディショナルなOS(オペレーティングシステム)のリソースモデルにマッピングしてみる。

– 汎用的なクラウド基盤自動化/管理層 → Linuxカーネル– VMインスタンス → プロセス– 自動化ライブラリ → glibc– 自動化ライブラリからの呼び出し → システムコール – クラウドAPI → デバイスドライバ呼び出し

Page 10: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

10

NII dodai-deploy2.0 project

つまりこんな感じ?

クラウド基盤

Data Center Kernel

アプリケーションコード

VMインスタンス

libdck

クラウド管理ツール

管理サーバ

libdck

デバイスドライバ

システムコール

アプリケーションコード

VMインスタンス

libdck

fork / fork&exec

システムコール

Page 11: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

11

NII dodai-deploy2.0 project

さらに類推を進めると・・・

この類推のもとで、DC Kenrelに必要な機能 / APIを洗い出してみる。– マシンイメージのビルドデータ → ソースコード– マシンイメージ → バイナリ実行ファイル

• ビルドデータを「make」するとマシンイメージができる• lsコマンドでマシンイメージ一覧が取得できる

– VMインスタンス → プロセス• psコマンドでVMインスタンス一覧が取得できる• fork / fork&exec命令でVMインスタンスの起動ができる• upstart/initスクリプトで関連するVMインスタンスの連携起動ができる

– VMの稼働状況/負荷状況 → プロセス負荷• topコマンドでVMの負荷情報が取得できる

– etc.....

つまり、DC Kernelに必要な機能は・・・– vmイメージ作成/管理機能、VMインスタンス起動/管理機能、VMインスタンスのモニ

タリング機能、etc...• 結果的には従来の自動化ツールが持っている/今後実装されるであろう機能にほぼ一致• しかしながら、従来の自動化ツールをベースに機能追加するよりも、こちらの方がより自然な

モデルで汎用的なプラットホームを実装できるはず。

Page 12: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

12

NII dodai-deploy2.0 project

Data Center Kernelモデルの可能性

VMインスタンス内部のアプリケーションコードからオートスケールなどの処理が実施可能

– VMインスタンス内部でしか取れない負荷情報に基づいたより精緻なリソース配分–単なる負荷状況ではなく、アプリケーションロジックから推定される必要リソース量に

基づく「プロアクティブ」なリソース配分• Hadoop MapReduceは、データ量の均等割による分散しかできないが、これであれば、アプリ

ケーションコードがデータを解析中に自発的にスケールすることも可能

プログラミングモデルが、従来のOS上の「マルチプロセス/マルチスレッドプログラミング」に近くなる。

– このモデルから見ると、従来のクラウド上の自動化は、「シングルタスクシステム用のアプリを擬似マルチタスク化していた」ような制限があるように思える。このモデルでしか実現できない、新しいクラウドアプリケーションのパラダイムが開けると素晴らしい。

Page 13: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

13

NII dodai-deploy2.0 project

Data Center Kernelモデルの可能性

自動化ライブラリ(glibc)の改変による抽象度の高い自動化を提供可能– DC Kernel自体に埋め込まないので、アプリケーションごとにライブラリの差し替えが

可能。• アプリケーションの特性に応じて最適なライブラリを選択可能• より「インテリジェント」な自動化機構を研究/開発する共通プラットホームとなり得る

複数クラウドをDC Kernelで束ねることで、「場所を意識しないアプリケーション実行」が可能に

– 適切なクラウドの選択ロジックなどは、自動化ライブラリのレイヤで実装可能

Page 14: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

14

NII dodai-deploy2.0 project

その他のアイデア

VMイメージの提供モデル– アプリケーションとVMイメージが蜜結合するので、VMイメージは、全世界共通のUUIDで管理する必要がある。

– 利用するクラウドに必要UUIDのイメージがあればそれを利用。– ない場合は、ビルドデータから自前でmakeして配置するか、「イメージストア」から

バイナリを購入して、利用するクラウドに配置する。

クラウド管理ツール的な使い方の例 〜 複数VM連携デプロイ機能の実装– Upstartのようなイベントベースのフロー管理ツールで、イベントの発生に応じてアク

ションを発生する。– イベントの種類やアクションの種類は、さらなる検討が必要。

クラウド管理ツール的な使い方の例 〜 DC Kernel専用シェルの実装– DC KernelのAPI(システムコール)を直接呼ぶ代わりに、シェルのように、コマンド

ラインで各種操作ができるツールがあると便利。クラウド自動化の「シェルスクリプト」が書けるようになると良い。

Page 15: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

15

NII dodai-deploy2.0 project

コンポーネントスタックの整理

IaaS Infra

dck

dckapp

libdck

dckemu

dcktool

libdck 本来はIaaS基盤が提供するべきだが、既存のIaaSでは未実装の機能を代替として提供するモジュール

AWS / OpenStack / Eucalyputus / Wakame VDCなどの既存の

IaaS基盤を前提とする

DCKを前提としたアプリケーション DCKを容易に利用するためのツール

Data Center Kernel本体

DCKを前提としたアプリケーション

DCKのAPIを呼び出すライブラリ

ユーザ

Page 16: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

16

NII dodai-deploy2.0 project

各コンポーネントスタックで実装するもののアイデア

dcktool–dcksh–dckinit

dckapp–Autoscale httpd–Autoscale echo server

dkclib–Ontology based resource assignment library

dck–

dckemu–Shared memory service–Network virtualization service

IaaS–AWS/OpenStack/Eucalyptus/Wakame VDC/etc...

Page 17: クラウドアプリケーションの マルチプロセス・プログラミングモデル を実現する「Data Center Kernel」

Etsuji NakaiTwitter @enakai00

NII dodai-deploy2.0 project

Thank You!