今週のはじめに、マイクロソフトリサーチはクラウドコンピューティングのためのフレームワーク、コードネームOrleansについての論文を発表した。 このフレームワークは、PC、スマートフォン、組み込みデバイスといったクライアントを用いて利用するクラウドコンピューティングに狙いを定めたものだ。 Orleansにおいての基本的な前提は、永続性、レプリケーション、一貫性に対する宣言的仕様をもつアクターのようなモデル上での、並行処理パターンと軽量トランザクションである。
グレイン(grain)と呼ぶ処理の論理的単位をもとに作られたシンプルなプログラミングモデルである。グレインはメッセージを送ることだけによって通信し、プライベートな状態をもつものだ …
全体として、システムは明確なグレインアクティベーションにおいて複数のリクエストを同時に処理できるが、これらの処理は、グレインが状態の変更を永続ストレージにコミットし、それをグローバルな可視状態にする明確に定義されたポイント以外では、独立している
Orleansに関する定義まとめ:
- グレイン(Grain) – 分離、配布、永続性のアトミックな単位。
- アクティベーション(Activations) – サービスへ並行にくる複数の独立したリクエストを処理するグレインを複数インスタンス化すること。
- グレインドメイン(Grain Domain) – 直接アクセス可能なグレインの集合の範囲を決める論理的に独立なワークスペース。 階層的かつ、ネスト可能構造をもつ。
- プロミス(Promises) –将来的な処理の完了の保証を表現する非同期的なプリミティブ。
- ターン(Turns) – 1つのグレインアクティベーションが実行される別々の作業ユニットのこと。グレインアクティベーションは次のユニットに進む前に各ユニットを終了させる
マイクロソフトリサーチチームはOrleansをスケーリング、マルチテナント性、信頼性と可用性に対する必要性に対処することを狙ったクラウドコンピューティングパターンとして構築した。 その狙いは、そのアプリケーションが時間とともに変化する際にグレインモデルが自らが表現している分割データストア(sharded data store)およびその生来の柔軟性を模倣することにある。 さらに、可用性と信頼性に対処するために、処理およびデータとして表されているグレインを利用する際に、ロジックの一貫性および分離性を保つ一方で、システム内にビルトインされたフェイルオーバの仕組みも提供する。
Orleansには3つの主要なコンポーネントがある。出版されたOrleans: A Framework for Cloud Computingに概要が書かれているプログラミングモデルあるいはフレームワーク、プログラミング言語とそのツールサポート、そして、ランタイムシステムである。 現状、OrleansはC#のサポートを提供しており、F#のサポートも活発に作業中である。 ランタイムは永続性、レプリケーション、一貫性、そして、バージョン管理、デバッグ、配布、モニタリングに対する完全なライフサイクル管理といった主要なクラウドコンピューティング機能を提供する。 チームはチャンネル9上で、非公式の議論を展開している。そこでは、論理的なアーキテクチャを順を追って説明している。
Orleansの内部について初めて公開されたが、この情報はトランスポート層においてソフトウェア開発の世界がエンタープライズコンピューティングからインターネットスケールのコンピューティングに移行する際に、どのようにクラウドスケールのアプリケーションのアーキテクチャを設計し構築するかに関して、非常に示唆に富むものである。