サーバーレスな Functions アプリの操作
この記事では、サーバーレスな Functions アプリケーションに対する Azure の運用に関する考慮事項について説明します。 Functions アプリをサポートするために、運用担当者は次のことを行う必要があります。
- ホスティング構成を理解し、実装します。
- インフラストラクチャのプロビジョニングを自動化することで、将来のスケーラビリティに対応します。
- 可用性とディザスター リカバリーの要件を満たすことで、ビジネス継続性を維持します。
計画
運用を計画するには、ワークロードとその要件を理解したうえで、その要件に最適なオプションを設計して構成します。
ホスティング オプションを選択する
Azure Functions Runtime により、ホスティングにおける柔軟性が提供されます。 ホスティング プランの比較表を使用して、ご自身の要件に最適な選択肢を判断します。
Azure Functions のホスティング プラン
各 Azure Functions プロジェクトは、スケーリングとコストの単位である独自の Functions アプリでデプロイと実行が行われます。 Azure Functions に使用できる 3 つのホスティング プランは、従量課金プラン、Premium プラン、および専用 (App Service) プランです。 ホスティング プランによって、スケーリング動作、使用可能なリソース、および仮想ネットワーク接続などの高度な機能のサポートが決まります。
Azure Kubernetes Service (AKS)
Kubernetes ベースの Functions は、Kubernetes ベースのイベントドリブン自動スケーリング (KEDA) によるイベントドリブン スケーリングを使用して、Docker コンテナーで Functions Runtime を提供します。
ホスティング プランの詳細については、次を参照してください。
- Azure Functions のスケールとホスティング
- 従量課金プラン
- Premium プラン
- 専用 (App Service) プラン
- KEDA を使用した Kubernetes での Azure Functions
- Azure サブスクリプションとサービスの制限、クォータ、制約
スケーリングについて
サーバーレスの従量課金と Premium ホスティング プランでは、自動的に "スケーリング" が行われ、受信イベントの数に基づいて Azure Functions のホスト インスタンスが追加されたり削除されたりします。 スケーリングは複数のディメンションで異なる場合があり、プラン、トリガー、およびコード言語に基づいて動作が異なります。
スケーリングの詳細については、次を参照してください。
コールド スタートを理解して対処する
ホスト インスタンスの数が 0 にスケールダウンすると、次の要求に、"コールド スタート" と呼ばれる、Functions アプリを再起動するための待機時間が追加されます。 コールド スタートは、サーバーレス アーキテクチャの大きな論点であり、Azure Functions のあいまいな点です。
Premium ホスティング プランでは、一部のインスタンスをウォーム状態に保つことでコールド スタートが防止されます。 Functions アプリで依存関係を減らして非同期操作を使用した場合も、コールド スタートの影響を最小限に抑えることができます。 ただし、可用性の要件により、Always On を有効にして専用ホスティング プランでアプリを実行する必要がある場合があります。 専用プランでは専用の仮想マシン (VM) が使用されるため、サーバーレスではありません。
コールド スタートの詳細については、「サーバーレスのコールド スタートについて」を参照してください。
ストレージに関する考慮事項を特定する
すべての Azure Functions アプリは、トリガーの管理や関数実行のログ記録などの操作に関して Azure Storage に依存しています。 Functions アプリを作成するときは、BLOB、キュー、テーブル ストレージがサポートされている汎用の Azure Storage アカウントを作成またはリンクする必要があります。 詳細については、「Azure Functions のストレージに関する考慮事項」を参照してください。
ネットワーク設計に関する考慮事項を特定する
ネットワーク オプションを使用すると、Functions アプリでアクセスを制限したり、インターネットでルーティング可能なアドレスを使用せずにリソースにアクセスしたりできます。 ホスティング プランでは、さまざまなレベルのネットワークの分離が提供されています。 ネットワークの分離要件に最適なオプションを選択します。 詳細については、「Azure Functions のネットワーク オプション」をご覧ください。
Production
アプリケーションを運用で使用するように準備するには、ホスティング プランを簡単に再デプロイし、スケールアウト ルールを適用できるようにします。
ホスティング プランのプロビジョニングを自動化する
コードとしてのインフラストラクチャを使用することで、インフラストラクチャのプロビジョニングを自動化できます。 自動プロビジョニングでは、災害発生時の回復性が向上し、機敏性が増して、必要に応じて迅速にインフラストラクチャを再デプロイすることができます。
自動プロビジョニングの詳細については、次を参照してください。
スケールアウト オプションを構成する
自動スケーリングでは、アプリケーションの負荷を処理するのに適切な量の実行リソースが提供されます。 自動スケーリングでは、負荷の増加に対応するためのリソースを追加し、アイドル状態のリソースを削除することでコストを節約します。
自動スケーリング オプションの詳細については、次を参照してください。
Optimization
アプリケーションが運用環境にある場合は、次のことを確認してください。
- アプリケーションの需要に合わせてホスティング プランをスケーリングできる。
- 事業継続性、可用性、およびディザスター リカバリーに関する計画がある。
- ホスティングとアプリケーションの正常性を監視し、アラートを受け取ることができる。
可用性の要件を実装する
Azure Functions は特定のリージョンで実行されます。 可用性を高めるために、同じ Functions アプリを複数のリージョンにデプロイできます。 複数のリージョンで、Functions は "アクティブ/アクティブ" または "アクティブ/パッシブ" の可用性パターンで実行できます。
Azure Functions の可用性とディザスター リカバリーの詳細については、次を参照してください。
ログ記録、アプリケーションの監視、およびアラートの監視
Azure Monitor の Application Insights とログは、ログ、パフォーマンス、およびエラーのデータを自動的に収集し、パフォーマンスの異常を検出します。 Azure Monitor には、問題を診断し、関数の使用を理解するのに役立つ強力な分析ツールが用意されています。 Application Insights は、パフォーマンスと使いやすさを継続的に向上させるのに役立ちます。
Azure Functions のパフォーマンスの監視と分析について詳しくは、次を参照してください。
- Azure Functions を監視する
- Azure Monitor ログを使用した Azure Functions の監視
- Azure Functions でサポートされる Application Insights の機能
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示