Microsoft、マイクロサービス構築を容易にする「Distributed Application Runtime」を発表:任意の言語とフレームワークを利用可能
Microsoftは、クラウドとエッジで動作する分散アプリケーションの構築を容易にするサーバレスランタイム「Distributed Application Runtime」(Dapr)を発表した。移植可能でイベント駆動型のオープンソースソフトウェアである。
Microsoftは2019年10月16日(米国時間)、「Distributed Application Runtime」(Dapr)を発表した。Daprは、クラウドとエッジで動作する、耐障害性のあるステートレス、またはステートフルなマイクロサービスアプリケーションの構築を容易にする、移植可能でイベント駆動型のオープンソースサーバレスランタイム。Daprの開発は現在、α版の段階にある。
MicrosoftはDaprにより、新規にコードを作成するか、既存コードを移行するかにかかわらず、全ての開発者が任意の言語とフレームワークを使って、移植可能なマイクロサービスアプリケーションを簡単に構築できるようにすることを目指している。
Daprは、マイクロサービスアプリケーション構築のベストプラクティスを、一連のオープンなビルディングブロックとして体系化したものだ。これらのビルディングブロックにより、自分の選んだ言語とフレームワークで移植可能なアプリケーションを作成できる。
各ビルディングブロックは独立しており、そのいずれか、または全てを、自分が作成するアプリケーションに利用できる。
Microsoftが掲げるDaprの目標は次の通り。
- 開発者が任意の言語やフレームワークを使って、分散アプリケーションを作成できるようにする
- ベストプラクティスを体系化したビルディングブロックを提供することで、開発者がマイクロサービスアプリケーションの開発で直面する困難な問題を解決する
- コミュニティー主導でオープン、さらにベンダー中立で新しいコントリビューターを求める
- オープンAPIを通じて整合性と移植性を提供する
- クラウドとエッジ全体にわたって特定プラットフォームに依存しない
- 拡張性を確保し、ベンダーロックインに陥ることなく、接続可能なコンポーネントを提供する
- 高いパフォーマンスを提供し、軽量であることから、IoTとエッジのシナリオが可能になる
- ランタイムに依存することなく、既存コードへ段階的に導入できるようにする
Daprの仕組みは?
Daprは、サイドカーコンテナ/プロセスを各コンピュートユニットに導入する。サイドカーは、標準的なHTTPまたはgRPCプロトコルでイベントトリガとやりとりし、コンピュートユニットと通信する。これにより、Daprは、開発者にフレームワークやライブラリのインポートを要求することなく、既存の全てのプログラミング言語をサポートする。今後実装される新しいプログラミング言語にも対応するという。
Daprは、GET、POSTなどの標準HTTP動詞、またはgRPCインタフェースにより、ビルトインステート管理や信頼できるメッセージング(少なくとも1回デリバリーを実行)、トリガー、バインディングといった機能を提供する。そのため、開発者は同じプログラミングパラダイムに従って、ステートレスやステートフル、アクターモデルのサービスを作成できる。整合性モデルやスレッドモデル、メッセージデリバリーパターンを自由に選択できる。
Daprは、マシンやIoTデバイス上でスタンドアロンバイナリとして実行され、クラウドやオンプレミスで、任意のシステムに導入可能なコンテナとしてKubernetes上で動作する。
Daprは、接続可能なステートストアとメッセージバス(RedisやgRPCなど)を使用し、gRPCを使ったDapr間の直接通信や非同期パブリッシュ/サブスクライブ通信など、幅広い通信方法を提供する。これらの通信方法は、少なくとも1回デリバリーするセマンティクスを採用し、デリバリーが保証されている。
なぜDaprが必要なのか?
高性能でスケーラブル、かつ信頼性の高い分散アプリケーションを作り上げるのは難しい。そこでDaprでは、実証済みのパターンとプラクティスを提供する。
イベント駆動型セマンティクスとアクターセマンティクスを、単純で整合性のあるプログラミングモデルに統合することが目標だ。さらにMicrosoftによると、「フレームワークにロックインされていない全てのプログラミング言語をサポートする」という。
Daprではスレッド化や並列制御、パーティショニング、スケーリングなどの低レベルのプリミティブは公開されていない。代わりに、使い慣れた任意のWebフレームワークを使用して単純なWebサーバを実装することでコードを作成できる。
Daprは、スレッド化モデルと状態整合性モデルに柔軟性がある。必要に応じてマルチスレッドを活用し、さまざまな整合性モデルを選択できる。Daprに柔軟性があることから、制約なく、高度なシナリオを実装できる。
マルチスレッドではなく、他のアクターフレームワークでなじみ深いシングルスレッド呼び出しを利用することもできる。Microsoftは「Daprのユニークな点は、コードを書き直さなくてもこれらのモデル間をシームレスに移行できることだ」としている。
Daprにはどのような機能があるのか?
MicrosoftによればDaprの主な機能は次の通り。
- 接続可能なプロバイダーと、少なくとも1回はデリバリーするセマンティクスを採用したイベント駆動型のパブリッシュ/サブスクライブシステム
- 接続可能なプロバイダーによる入出力のバインディング
- 接続可能なデータストアによる状態管理
- サービス同士の一貫した検出と呼び出し
- オプトイン方式のステートフルモデル(強い整合性または結果整合性、ファーストライトまたはラストライト)
- クロスプラットフォーム仮想アクター
- レート制限
- Open Telemetryを使ったビルトイン分散トレーシング
- 専用OperatorとCRD(Custom Resource Definition)を使用し、Kubernetes上でネイティブに動作
- HTTPとgRPCで全てのプログラミング言語をサポート
- Microsoft AzureやAmazon Web Services(AWS)、Google Cloud Platform(GCP)から提供されるマルチクラウドのオープンコンポーネント(バインディング、パブリッシュ/サブスクライブ、ステート)を利用可能
- プロセスまたはコンテナとして、どこでも動作
- 軽量であり、バイナリサイズは58MB、必要な物理メモリは4MBにとどまる
- サイドカーとして動作し、特別なSDKやライブラリが不要
- 専用CLI(コマンドラインインタフェース)を採用し、開発者が使いやすく、デバッグが容易
- Java、.NET、Go、JavaScript、Python用クライアントを用意
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
マイクロサービスが注目される理由 導入検討に向けて気を付けるべきポイント
特集「マイクロサービス入門」第2回目は、マイクロサービスが注目される背景と、企業がこれからマイクロサービスの導入を検討するに当たって、考えておくべきポイントをオイシックス・ラ・大地で技術顧問を務める寺田佳央氏が解説します。「マイクロサービスに出遅れた」ところは、先人から何を学べるか
これまでマイクロサービスアーキテクチャに取り組んだ組織の多くは、試行錯誤を重ねて、自らの組織における最適解を見いだしている。いま、マイクロサービスを考える人たちは、先人から何を学べばいいのだろうか。何が違う? 何が必要? マイクロサービス/サーバレス時代のセキュリティ
従来のモノリシックなアーキテクチャに代わって着目されている「マイクロサービス」や「サーバレス」。これらの新しいアーキテクチャについて、セキュリティの観点からどのようなことに留意すべきなのだろうか。