Dapr を利用したマイクロサービス API

Azure Container Apps には、シンプルで移植性が高く、回復性があり、セキュリティで保護されたマイクロサービスの作成と実装に役立つ Distributed Application Runtime (Dapr) を利用する API が用意されています。 Dapr は、抽象化レイヤーとしての Azure Container Apps と連携して、メンテナンスが少ないスケーラブルなプラットフォームを提供します。 Azure Container Apps では、マイクロサービスのシナリオ向けに特に作成されたフル マネージドの Dapr API、コンポーネント、機能を選択できます。 コンテナー アプリ環境で普通に Dapr を有効にして構成するだけです。

マイクロサービス API はコンテナー アプリでどのように動作するか

Dapr 対応のコンテナー アプリソリューション用に構成されたDapr コンポーネント、それらの間の通信を呼び出す Dapr サイドカーを使って、コンテナー アプリ環境用にマイクロサービス API を構成します。 次の図は、pub/sub API を例として使って、これらの主要な概念を示したものです。

Dapr の pub/sub およびそれが Container Apps 内でどのように動作するかを示す図。

Label Dapr 設定 説明
1 Dapr が有効になっている Container Apps Dapr は、Dapr の一連の引数を構成することで、コンテナー アプリ レベルで有効になります。 これらの値は、複数のリビジョン モードで実行されている場合に、特定のコンテナー アプリのすべてのリビジョンに適用されます。
2 Dapr Dapr のフル マネージド API は、Dapr サイドカーを介して各コンテナー アプリに公開されます。 Dapr API は、HTTP または gRPC を介してコンテナー アプリから呼び出すことができます。 Dapr サイドカーは、HTTP ポート 3500 と gRPC ポート 50001 で実行されます。
3 Dapr コンポーネントの構成 Dapr では、機能がコンポーネントとして提供されるモジュール設計を使用します。 Dapr コンポーネントは、複数のコンテナー アプリ間で共有できます。 スコープ配列で提供される Dapr アプリ識別子によって、実行時に特定のコンポーネントを読み込む Dapr 対応コンテナー アプリが決まります。

サポートされている Dapr API、コンポーネント、ツール

マネージド API

Azure Container Apps では、一般公開されているマネージド Dapr API (構成要素) が提供されます。 これらの API はフル マネージドであり、運用環境での使用がサポートされています。

"アルファ版" Dapr API と機能の使用について詳しくは、Dapr に関する FAQ を参照してください

Dapr API を示す図。

API 状態 説明
サービス間の呼び出し GA 自動 mTLS 認証と暗号化を使用して、サービスを検出し、信頼性の高いサービス間呼び出しを実行します。 Azure Container Apps での Dapr サービス呼び出しに関する既知の制限事項を参照してください。
状態管理 GA トランザクションと CRUD 操作の状態管理機能を提供します。
pub/sub GA パブリッシャーとサブスクライバーのコンテナー アプリが中間メッセージ ブローカーを介して相互通信できるようにします。 外部コンポーネントの JSON ファイルを使って、トピックへの宣言型サブスクリプションを作成することもできます。 宣言型 pub/sub API の詳細を確認します。
バインド GA イベントに基づいてアプリケーションをトリガーする
アクター GA Dapr のアクターは、迅速にスケーリングするように設計された、メッセージ駆動型のシングル スレッドの作業単位です。 たとえば、ワークロードにバーストが多い状況などです。
可観測性 GA Application Insights バックエンドにトレース情報を送信します。
シークレット GA アプリケーション コードからシークレットにアクセスするか、Dapr コンポーネントのセキュリティで保護された値を参照します。
Configuration GA サポートされている構成ストアのアプリケーション構成項目を取得してサブスクライブします。

互換性のある SDK

Dapr の最新のクライアント SDK パッケージは、Azure Container Apps と互換性があります。 サポートされている GA の Dapr API のどれでも、次の Dapr クライアント SDK バージョンで使用できます。

Language SDK バージョン
Java 1.12.0
Go 1.11.0
Python 1.14.0
.NET 1.14.0
JavaScript 3.3.1
Rust 0.15.1

Note

現在、Dapr サーバー拡張機能、アクター、ワークフロー SDK パッケージは、Azure Container Apps と互換性がありません。 すべての Dapr SDK パッケージの詳細については、こちらをご覧ください。

レベル 1 とレベル 2 のコンポーネント

Dapr コンポーネントのサブセットがサポートされています。 そのサブセット内で、Dapr コンポーネントはレベル 1 またはレベル 2 の 2 つのサポート カテゴリに分かれます。

  • レベル 1 コンポーネント: クリティカルな (セキュリティまたは重大な回帰) シナリオですぐに調査を受ける安定したコンポーネント。 それ以外の場合、Microsoft はオープンソースと共同で作業し、修正プログラムまたは次回の通常リリースで対処します。
  • レベル 2 コンポーネント: 安定した状態ではないか、サード パーティのプロバイダーに関するものであるため、低い優先順位で調査されるコンポーネント。

レベル 1 のコンポーネント

API コンポーネント Type
状態管理 Azure Cosmos DB
Azure Blob Storage v1
Azure Table Storage
Microsoft SQL Server
state.azure.cosmosdb
state.azure.blobstorage
state.azure.tablestorage
state.sqlserver
パブリッシュとサブスクライブ Azure Service Bus キュー
Azure Service Bus トピック
Azure Event Hubs
pubsub.azure.servicebus.queues
pubsub.azure.servicebus.topics
pubsub.azure.eventhubs
バインド Azure Storage キュー
Azure Service Bus キュー
Azure Blob Storage
Azure Event Hubs
bindings.azure.storagequeues
bindings.azure.servicebusqueues
bindings.azure.blobstorage
bindings.azure.eventhubs
シークレットの管理 Azure Key Vault secretstores.azure.keyvault

レベル 2 のコンポーネント

API コンポーネント Type
状態管理 PostgreSQL
MySQL、MariaDB
Redis
state.postgresql
state.mysql
state.redis
パブリッシュとサブスクライブ Apache Kafka
Redis Streams
pubsub.kafka
pubsub.redis
バインド Azure Event Grid
Azure Cosmos DB
Apache Kafka
PostgreSQL
Redis
Cron
bindings.azure.eventgrid
bindings.azure.cosmosdb
bindings.kafka
bindings.postgresql
bindings.redis
bindings.cron
構成 PostgreSQL
Redis
configuration.postgresql
configuration.redis

ツール

Azure Container Apps では、SDK や CLI などの Dapr オープン ソース ツールとの互換性が保証されます。

制限事項

  • Dapr 構成仕様: Dapr 構成仕様を使用する必要があるすべての機能。
  • Dapr 有効化ガイドに記載されていない Dapr サイドカーの注釈
  • API とコンポーネントのサポート: この記事で GA、Tier 1、または Tier 2 としてリストされている Dapr API とコンポーネントのみが Azure Container Apps でサポートされます。
  • アクターのリマインダー: リマインダーが常にアクティブになり、正しく起動されるためには、1 以上の minReplicas が必要です。
  • ジョブ: ジョブでは、Dapr はサポートされていません。

次のステップ