Microsoftは、クラウドとエッジで動作する分散アプリケーションの構築を容易にするサーバレスランタイム「Distributed Application Runtime」(Dapr)を発表した。移植可能でイベント駆動型のオープンソースソフトウェアである。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは2019年10月16日(米国時間)、「Distributed Application Runtime」(Dapr)を発表した。Daprは、クラウドとエッジで動作する、耐障害性のあるステートレス、またはステートフルなマイクロサービスアプリケーションの構築を容易にする、移植可能でイベント駆動型のオープンソースサーバレスランタイム。Daprの開発は現在、α版の段階にある。
MicrosoftはDaprにより、新規にコードを作成するか、既存コードを移行するかにかかわらず、全ての開発者が任意の言語とフレームワークを使って、移植可能なマイクロサービスアプリケーションを簡単に構築できるようにすることを目指している。
Daprは、マイクロサービスアプリケーション構築のベストプラクティスを、一連のオープンなビルディングブロックとして体系化したものだ。これらのビルディングブロックにより、自分の選んだ言語とフレームワークで移植可能なアプリケーションを作成できる。
各ビルディングブロックは独立しており、そのいずれか、または全てを、自分が作成するアプリケーションに利用できる。
Microsoftが掲げるDaprの目標は次の通り。
Daprは、サイドカーコンテナ/プロセスを各コンピュートユニットに導入する。サイドカーは、標準的なHTTPまたはgRPCプロトコルでイベントトリガとやりとりし、コンピュートユニットと通信する。これにより、Daprは、開発者にフレームワークやライブラリのインポートを要求することなく、既存の全てのプログラミング言語をサポートする。今後実装される新しいプログラミング言語にも対応するという。
Daprは、GET、POSTなどの標準HTTP動詞、またはgRPCインタフェースにより、ビルトインステート管理や信頼できるメッセージング(少なくとも1回デリバリーを実行)、トリガー、バインディングといった機能を提供する。そのため、開発者は同じプログラミングパラダイムに従って、ステートレスやステートフル、アクターモデルのサービスを作成できる。整合性モデルやスレッドモデル、メッセージデリバリーパターンを自由に選択できる。
Daprは、マシンやIoTデバイス上でスタンドアロンバイナリとして実行され、クラウドやオンプレミスで、任意のシステムに導入可能なコンテナとしてKubernetes上で動作する。
Daprは、接続可能なステートストアとメッセージバス(RedisやgRPCなど)を使用し、gRPCを使ったDapr間の直接通信や非同期パブリッシュ/サブスクライブ通信など、幅広い通信方法を提供する。これらの通信方法は、少なくとも1回デリバリーするセマンティクスを採用し、デリバリーが保証されている。
高性能でスケーラブル、かつ信頼性の高い分散アプリケーションを作り上げるのは難しい。そこでDaprでは、実証済みのパターンとプラクティスを提供する。
イベント駆動型セマンティクスとアクターセマンティクスを、単純で整合性のあるプログラミングモデルに統合することが目標だ。さらにMicrosoftによると、「フレームワークにロックインされていない全てのプログラミング言語をサポートする」という。
Daprではスレッド化や並列制御、パーティショニング、スケーリングなどの低レベルのプリミティブは公開されていない。代わりに、使い慣れた任意のWebフレームワークを使用して単純なWebサーバを実装することでコードを作成できる。
Daprは、スレッド化モデルと状態整合性モデルに柔軟性がある。必要に応じてマルチスレッドを活用し、さまざまな整合性モデルを選択できる。Daprに柔軟性があることから、制約なく、高度なシナリオを実装できる。
マルチスレッドではなく、他のアクターフレームワークでなじみ深いシングルスレッド呼び出しを利用することもできる。Microsoftは「Daprのユニークな点は、コードを書き直さなくてもこれらのモデル間をシームレスに移行できることだ」としている。
MicrosoftによればDaprの主な機能は次の通り。
Copyright © ITmedia, Inc. All Rights Reserved.