アプリケーションの開発とデプロイ
Azure Functions を使用してサーバーレス アプリケーションを開発およびデプロイするには、パターンとプラクティスを確認し、DevOps パイプラインを構成し、サイト信頼性エンジニアリング (SRE) のベストプラクティスを実装します。
サーバーレス アーキテクチャと Azure Functions の詳細については、次を参照してください。
計画
アプリの開発とデプロイを計画するには、次を実行します。
- 開発環境を準備し、ワークフローを設定します。
- Azure Functions アプリの開発をサポートするためのプロジェクトを構築します。
- アプリのトリガー、バインド、および構成要件を特定します。
イベントドリブン アーキテクチャについて
別のイベントにより、サーバーレス Functions プロジェクト内のすべての関数がトリガーされます。 イベントドリブン アーキテクチャの詳細については、次をご覧ください。
開発環境の準備
Functions を作成するツールを使用して、開発ワークフローと環境を設定します。 開発ツールと Functions コード プロジェクトの構造の詳細については、次を参照してください。
- Azure Functions をローカルでコーディングしてテストする
- Visual Studio Code を使用して Azure Functions を開発する
- Visual Studio を使用する Azure Functions の開発
- Azure Functions Core Tools の操作
- フォルダー構造
開発
使用する開発言語を決定します。 Azure Functions では、C#、F#、PowerShell、JavaScript、TypeScript、Java、および Python がサポートされます。 プロジェクトのすべての関数には、同じ言語が使用されている必要があります。 詳細については、「Azure Functions でサポートされている言語」を参照してください。
トリガーとバインドを定義する
トリガーによって関数が呼び出されます。どの関数にも厳密に 1 つのトリガーがある必要があります。 関数にバインドすると、宣言によって別のリソースが関数に接続されます。 Functions のトリガーとバインドの詳細については、次をご覧ください。
- Azure Functions でのトリガーとバインドの概念
- トリガーを使用して Azure Functions を実行する
- 入力および出力バインディングを使用した Azure Functions のチェーン化
Functions アプリケーションを作成する
Functions は、単一責任の原則に従います。つまり、1 つのことだけを実行します。 Functions の開発の詳細については、次をご覧ください。
ステートフル ワークフローに Durable Functions を使用する
Azure Functions で Durable Functions を使用すると、"オーケストレーター関数" を記述することでサーバーレス環境にステートフル ワークフローを定義し、"エンティティ関数" を記述することでステートフル エンティティを定義することができます。 Durable Functions によって状態、チェックポイント、再起動が管理されることで、ユーザーはビジネス ロジックに専念することができます。 詳細については、「Durable Functions とは」を参照してください。
コールド スタートを理解して対処する
サーバーレス ホスト インスタンスの数が 0 にスケールダウンすると、次の要求に、"コールド スタート" と呼ばれる、Functions アプリを再起動するための待機時間が追加されます。 コールド スタートによるパフォーマンスへの影響を最小限に抑えるには、Functions アプリで起動時に読み込む必要がある依存関係を減らし、可能な限り少数の大規模な同期呼び出しと操作を使用します。 自動スケーリングとコールド スタートの詳細については、サーバーレスな Functions の操作に関する記事を参照してください。
アプリケーション シークレットの管理
セキュリティのため、アプリケーション コードには資格情報を保存しないでください。 Azure Functions で Azure Key Vault を使用してキーと資格情報を格納および取得するには、「App Service と Azure Functions の Key Vault 参照を使用する」を参照してください。
サーバーレス Functions アプリケーションのセキュリティの詳細については、Serverless Functions のセキュリティに関する記事をご覧ください。
デプロイ
サーバーレス Functions アプリケーションを運用で使用するように準備するには、次を実行できることを確認してください。
- アプリケーションのリソース要件を満たす。
- アプリケーションのすべての側面を監視する。
- アプリケーションに関する問題を診断してトラブルシューティングする。
- 運用システムに影響を与えることなく、アプリケーションの新しいバージョンをデプロイする。
デプロイ テクノロジを定義する
デプロイ テクノロジを決定し、スケジュールされたリリースを整理します。 Functions アプリのデプロイによって信頼性の高い、ダウンタイムがゼロのアップグレードを実現する方法の詳細については、「Azure Functions のデプロイ テクノロジ」を参照してください。
使用するリソース接続の数が多くなり過ぎないようにする
Functions アプリ内の関数は、HTTPS、データベース、およびサービス (Azure Storage など) への接続を含むリソースを共有します。 多くの関数が同時に実行されている場合、利用可能な接続が不足する可能性があります。 詳細については、「Azure Functions での接続の管理」を参照してください。
ログ記録、アラート、およびアプリケーションの監視を構成する
Azure Monitor の Application Insights を使用すると、ログ、パフォーマンス、およびエラーのデータを収集できます。 Application Insights は、パフォーマンスの異常を自動的に検出するほか、問題の診断や、関数の使用状況の理解に役立つ強力な分析ツールを備えています。
アプリケーションの監視とログ記録の詳細については、次を参照してください。
- Azure Functions を監視する
- Azure Monitor ログを使用した Azure Functions の監視
- Azure Functions でサポートされる Application Insights の機能
問題の診断とトラブルシューティング
プロアクティブで問題優先のシナリオでのトラブルシューティングに、診断を効果的に使用する方法について説明します。 詳細については、次を参照してください。
- Azure App Service と Azure Functions アプリを正常で良好な状態に保つ
- "Azure Functions Runtime に到達できない" エラーのトラブルシューティング
自動化されたパイプラインと DevOps を使用してアプリケーションをデプロイする
コードのコミットから運用環境へのデプロイまでのすべての手順を完全に自動化することにより、チームはコードの構築に専念でき、手作業の手順で生じるオーバーヘッドや潜在的な人的エラーをなくすことができます。 新しいコードのデプロイはより迅速で低リスクになるため、チームは機敏性と生産性を向上させ、コードについて自信を深めることができます。
DevOps と継続的配置 (CD) の詳細については、次を参照してください。
Optimization
アプリケーションの運用を開始したら、スケーリングの準備をし、サイト信頼性エンジニアリング (SRE) を実装します。
最適なスケーラビリティを確保する
Functions アプリのスケーラビリティに影響する要因については、次を参照してください。
SRE プラクティスを実装する
サイト信頼性エンジニアリング (SRE) は、マーケットプレースで要求される速度で反復を行う一方で、重要なシステムとアプリケーションの信頼性を維持できる実証済みの手法です。 詳細については、次を参照してください。
次のステップ
サーバーレスな Functions アプリの開発とデプロイに関する実践的なチュートリアルについては、次を参照してください。
チームとお客様がサーバーレスな Functions プロジェクトを正常に実装できるようにするためのエンジニアリング プレイブックについては、コードに関するお客様またはパートナー向けエンジニアリング プレイブックを参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示