Azure Container Apps で Azure Functions を使用してイベント ドリブンワークロードとバッチ ワークロードを実行する

Azure Container Apps 上の Azure Functions は、サービスとしての関数 (FaaS) の生産性と、コンテナー化されたホスティングの柔軟性を組み合わせたものです。 この統合により、最終的な開始時刻と終了時刻で有限のワークロードを処理する機能を維持しながら、イベントドリブン関数を継続的なサービスとしてデプロイできます。

このプラットフォームでは、豊富な一連のトリガーとバインドが使用され、高度な Azure Container Apps 機能が組み込まれており、コンテナー化されたほぼすべてのワークロードを実行できます。

主な利点

Azure Container Apps で Azure Functions を実行する主な利点は次のとおりです。

  • 統合プラットフォーム: 1 つのプラットフォームでイベント ドリブンワークロードと有限ワークロードの両方を実行する

  • 柔軟なホスティング: 高度なデプロイ機能を備えたコンテナー化された環境を使用する

  • 包括的なトリガー: HTTP、タイマー、ストレージ、Event Hubs、Cosmos DB、Service Bus トリガーのサポート

  • スケーラブルなアーキテクチャ: トラフィックの分割とリビジョン管理による自動スケーリング

一般的なユース ケース

Azure Container Apps 上の Azure Functions は、迅速なスケーリング、柔軟なデプロイ、Azure サービスとのシームレスな統合を必要とするイベントドリブン、バッチ、API のワークロードに最適です。 次の表では、一般的なシナリオに関連する実装と根拠について詳しく説明します。

シナリオの種類 Implementation 根拠
タスクをスケジュールする データ クリーンアップ コードの実行やレポートの生成など、定義済みの時間間隔でコードを実行するタイマー トリガーを使用します。 タイマー トリガーにより、特定の定期的な間隔でコードが確実に実行され、個別のタスク期間が定義されます。
バッチ処理またはストリーム処理 Event Hubs トリガーを使用して、IoT またはイベント ソース ストリームからデータをキャプチャおよび変換するか、永続的な実行パターン (ファンアウト/ファンインなど) を使用して BLOB またはキュー トリガーを使用して大規模なデータセットを処理します。 関数は、イベントが到着するとすぐにデータを効率的に処理および変換します。
機械学習
(推論/処理)
関数は、キューからデータをプルするか、バインディングを使用してサービスと統合することで、AI 推論を実行できます。 GPU のサポートは、コンピューティング集中型の機械学習ワークロード向けに Azure Container Apps で利用できます。 関数は、モデル処理に必要な複雑なロジックをラップし、Azure Container Apps で利用できる高度に最適化されたハードウェア リソースを活用できます。
イベント駆動型ワークロード
(個別)
キュー ストレージ トリガーまたは Service Bus トリガーを使用します。このトリガーでは、メッセージ到着によって処理がすぐにトリガーされます。 Durable Functions では、このワークロードを調整できます。 Functions は、メッセージやイベントへの即時応答、メッセージ キューの管理、およびイベント ストリームの処理に優れています。
オンデマンド処理 HTTP トリガーを Webhook または API として使用して、要求に応じて処理を開始します。 非同期処理の場合、HTTP トリガーはキューによってトリガーされる関数に実際の作業を延期できます。 HTTP エンドポイントを使用すると、任意のワークロードを手動またはプログラムで開始し、オンデマンドで実行できます。
CI/CD ランナー
(エージェントの実行)
通常はコンテナー化されたタスクですが、必要なトリガー ロジック (キュー イベントなど) は Functions で管理できます。 コンテナー化された関数自体は、イベントに応答して必要なコードを実行します。 関数は、外部 CI/CD プラットフォームによってトリガーされるコードを実行するために必要なイベント処理、スケーリング、実行環境を提供します。

さらに、次のシナリオでは重要な機能がサポートされています。

イベント駆動処理

  • さまざまな Azure サービスからのリアルタイム データ処理
  • HTTP によってトリガーされる API と Webhook
  • タイマー ベースのスケジュールされたタスク
  • メッセージキュー処理

有限およびバッチ ワークロード

  • データ変換と ETL プロセス
  • ファイルの処理と検証
  • スケジュールされたメンテナンス タスク
  • 1 回限りのデータ移行ジョブ

拡張機能

次の高度なシナリオでは、Azure Container Apps 上の Azure Functions が機能します。

GPU で高速化されたワークロード

特殊なハードウェア要件をサポートすることで、Azure Container Apps 上の Azure Functions は、次のような高度なコンピューティング機能を必要とするワークロードを実行できます。

  • GPU 対応コンピューティング: AI および機械学習ワークロード用のサーバーレス GPU リソース

  • 専用ワークロード プロファイル: 集中型アプリケーション向けのハイ パフォーマンス コンピューティング

  • 柔軟なスケーリング: 需要に基づいて GPU リソースをスケーリングする

複雑なステートフル ワークフロー

Azure Container Apps 上の Azure Functions では、次のような Durable Functions を使用した高度なワークフロー管理がサポートされています。

  • ステートフル オーケストレーション: 複雑で実行時間の長いプロセスを管理する

  • 人間の対話パターン: 承認ワークフローとユーザー入力のサポート

  • 監視と可観測性: ワークフロー実行のための組み込まれた追跡

  • 処理時間の延長: 標準の制限を超えるプロセスを処理する

スケーラブルな Web API

カスタムイングレス、トラフィック管理などの高度な機能を使用できます。

  • カスタム イングレス設定: 高度なトラフィック ルーティングと負荷分散

  • 高可用性: 組み込みの冗長性とフェールオーバー

  • パフォーマンスの最適化: トラフィック パターンに基づく自動スケーリング

高度なデプロイ戦略

Azure Container Apps 上の Azure Functions には、次のような高度なデプロイ管理機能が用意されています。

  • 複数リビジョンのサポート: 複数のバージョンを同時に実行する

  • トラフィック分割: 段階的なロールアウトと A/B テスト

  • ブルーグリーンデプロイ: ダウンタイムゼロの更新

  • ロールバック機能: 以前のバージョンへの迅速な復帰

マイクロサービスの統合

Azure Container Apps 上の Azure Functions では、次のようなネイティブ Dapr 統合が提供されます。

  • サービス呼び出し: サービス間の通信をセキュリティで保護する
  • Pub/Sub メッセージング: 非同期イベント駆動型通信
  • 状態管理: サービス間での分散状態
  • 可観測性: 組み込みの監視とトレース

次のステップ