Azure Functions のしくみ
ここでは、Azure Functions を使用してサーバーレス アーキテクチャを開発し、Functions によって提供されるさまざまな機能実装を利用する方法について学習します。
また、Azure Functions のしくみについても詳しく学習します。 これは、組織の要件を満たすために Azure Functions を最適に使用する方法を決定するのにも役立ちます。
Azure Functions は、記述するコードを少なくできるサーバーレス コンピューティング ソリューションです。 これはサービスとしてのプラットフォームのオファリングであるため、アプリのホスティングについて心配する必要がなく、コストを節約できます。
Azure Functions は、データの処理、システムの統合、モノのインターネット (IoT) の操作、単純な API とマイクロサービスの構築に適した優れたソリューションです。
関数アプリのスケーリング
関数が実行されるコンテキストは、関数アプリと呼ばれます。 関数アプリは、関数のデプロイ、管理、スケーリングの単位です。 関数アプリ内のすべての関数が、同じ設定と接続を共有します。
従量課金と Premium のプランでは、Functions は、関数アプリ インスタンスを追加することによって CPU およびメモリ リソースをスケーリングします。 インスタンスの数は、関数をトリガーするイベントの数に基づいて決定されます。 関数アプリ内のすべての関数がインスタンス内のリソースを共有し、同時にスケーリングされます。
Azure Functions の監視
Azure Functions には、関数を監視するための Azure Application Insights とのビルトイン統合機能が用意されています。 Application Insights を使用すると、ログ、パフォーマンス、およびエラー データを収集できます。 これは、パフォーマンスの異常を検出し、問題を診断し、関数がどのように使用されているかをより深く理解するのに役立ちます。
Application Insights インストルメンテーションは、Azure Functions に組み込まれています。 Application Insights の統合により、利用統計情報は、接続されている Application Insights インスタンスに送信されます。 このデータには、Functions ホストによって生成されたログ、関数コードから書き込まれたトレース、およびパフォーマンス データが含まれています。
Note
関数と Functions ホストからのデータに加えて、Functions スケール コントローラーからデータを収集することもできます。
次の図は、関数アプリの Application Insights でデータがどのように表示されるかの例を示しています。
Azure Functions のコンポーネント
次の表では、Azure Functions の主要なコンポーネントについて説明します。
コンポーネント | 説明 |
---|---|
関数トリガー | トリガーは、関数が実行される原因です。 トリガーで関数の呼び出し方法が定義されます。1 つの関数には正確に 1 つのトリガーを含める必要があります。 |
関数のバインディング | 関数へのバインドは、関数に別のリソースを宣言的に接続する方法です。バインドは入力バインド または出力バインド、あるいは両方として接続される場合があります。 バインドからのデータは、パラメーターとして関数に提供されます。 バインディングを使用したくない場合や使用できない場合でも、サービスに接続する場合と同様に、関数でクライアント SDK を使用できます。 |
関数ランタイム | 現在、Azure Functions では、いくつかのバージョンのランタイム ホストがサポートされています。 Functions では、.NET Core、Node.js、Java、PowerShell、Python など、他の多くのランタイムもサポートされています。 開発中は、ローカル コンピューターに Functions ランタイムをインストールし、Azure Functions Core Tools を使用して関数をローカルで実行できます。 |
API Management | APIM は、実際の REST API として公開する方法として、HTTP によってトリガーされる関数エンドポイントのセキュリティとルーティングを提供します。 |
デプロイ スロット | Azure Functions デプロイ スロットを使用すると、関数アプリで "スロット" と呼ばれる別のインスタンスを実行できます。 スロットは、一般公開されているエンドポイントを介して公開されるさまざまな環境です。 スロットは、安全な環境で Azure の新しいバージョンの関数をテストし、その新しいバージョンを運用環境にシームレスに入れ替える方法を提供します。 |
関数アプリの構成 | 接続文字列、環境変数、およびその他のアプリケーション設定は、 Function App ごとに別に定義されます。 関数アプリの設定値は、コードの中で環境変数として読み込むことができます。 |
これらのコンポーネントは、アプリケーションおよび DevOps エンジニアが Azure Functions を活用してサーバーレス アーキテクチャを開発するための完全なエンドツーエンド プラットフォームを連携して提供します。