サーバーレス コンピューティングが、自分のビジネス ニーズに適しているかどうかを判断する

完了

サーバーレス コンピューティングが自分に適しているかどうかを容易に判断できるように、まずサーバーレスとはどのようなものかを説明します。

サーバーレス コンピューティングとは

サーバーレス コンピューティングは、Function as a Service (FaaS)、またはクラウド プラットフォーム上でホストされるマイクロサービスと考えることができます。 ご利用のビジネス ロジックは関数として実行され、インフラストラクチャのプロビジョニングまたはスケーリングを手動で行う必要はありません。 インフラストラクチャはクラウド プロバイダーによって管理されます。 ご利用のアプリは、負荷に応じて自動的にスケールアウトまたはスケールダウンされます。 Azure には、この種のアーキテクチャを構築するための方法がいくつか用意されています。 最も一般的な方法として、このモジュールで取り上げる Azure Logic Apps と Azure Functions の 2 つが挙げられます。

Azure Functions とは

Azure Functions はサーバーレス アプリケーション プラットフォームです。 これにより、開発者は、インフラストラクチャをプロビジョニングすることなく実行できるビジネス ロジックをホストできます。 Azure Functions では、組み込みのスケーラビリティが提供され、使用されているリソースに対してのみ料金が請求されます。 C#、F#、JavaScript、Python、PowerShell Core など、好みの言語で関数コードを記述することができます。 NuGet や NPM などのパッケージ マネージャーのサポートも含まれているので、ビジネス ロジック内で一般的なライブラリを使用することができます。

サーバーレス コンピューティング ソリューションの利点

サーバーレス コンピューティングは、クラウドでビジネス ロジックのコードをホストする場合に適したオプションです。 Azure Functions などサーバーレス サービスを使用すると、好みの言語でビジネス ロジックを記述できます。 スケーリングが自動的に行われます。管理対象のサーバーはありません。予約された時間ではなく、使用されているものに基づいて課金されます。 サーバーレス ソリューションには、他にも検討すべき特性がいくつかあります。

インフラストラクチャの割り当て超過を回避する

仮想マシン (VM) サーバーをプロビジョニングして、ピーク負荷に対応するために十分なリソースを構成したとします。 負荷が小さい場合、使用していないインフラストラクチャに対しても課金される可能性があります。 サーバーレス コンピューティングでは、自動的なスケールアップまたはスケールダウンにより割り当ての問題を容易に解決することができ、ご利用の機能で作業が処理されているときのみ課金されます。

ステートレスなロジック

ステートレスな関数は、サーバーレス コンピューティングの有力候補です。関数のインスタンスがオンデマンドで作成され、破棄されます。 状態が必要な場合は、関連付けられているストレージ サービスに格納できます。

イベント ドリブン

Functions は "イベント ドリブン" です。 つまり、HTTP 要求やキューに追加されているメッセージの受信などのイベント ("トリガー" と呼ばれる) への応答でのみ実行されます。 トリガーは関数定義の一部として構成します。 この方法によって、データの取得元 (トリガー/入力バインド) とデータの送信先 (出力バインド) を宣言できるようになるため、コードが大幅に単純化されます。 キュー、BLOB、ハブなどを監視するためのコードを記述する必要はありません。 純粋にビジネス ロジックに専念できます。

Functions は従来のコンピューティング環境で使用できます。

Functions は、サーバーレス コンピューティングの重要なコンポーネントであり、任意の種類のコードを実行するための一般的なコンピューティング プラットフォームでもあります。 ご利用のアプリのニーズに変化が生じた場合は、そのプロジェクトを取得し、それを非サーバーレス環境にデプロイすることができます。そうすることで、スケーリングの管理、仮想ネットワーク上での実行、さらに自分の関数の完全な分離を柔軟に行うことができます。

サーバーレス コンピューティング ソリューションの欠点

サーバーレス コンピューティングのソリューションはビジネス ロジックのホスティングに常に適しているわけではありません。 サーバーレス コンピューティングでご利用のサービスをホストするための決定に影響を与える可能性がある Functions の特性をいくつか示します。

実行時間

既定では、関数には 5 分のタイムアウトが設定されます。 このタイムアウトは、最大 10 分に設定することができます。 実行に 10 分以上必要な関数は、VM 上でホストすることができます。 さらに、サービスが HTTP 要求を介して開始され、その値を HTTP 応答として求める場合は、タイムアウトが 2.5 分にまで制限されます。 ただし、Durable Functions と呼ばれるオプションもあります。これを使用すると、タイムアウトなしで複数の関数の実行を調整することができます。

実行頻度

2 番目の特性は、実行頻度です。 ご利用の関数が複数のクライアントによって継続的に実行されることが想定される場合は、必要に応じて使用量を見積もり、Functions を使用するコストを計算することをお勧めします。 ご利用のサービスを VM 上でホストする方が安くなる可能性もあります。

スケーリング中には、10 秒ごとに関数アプリ インスタンスを 1 つだけ作成でき、合計では最大 200 個のインスタンスを作成できます。 各インスタンスでは複数の同時実行を提供できるため、1 つのインスタンスで処理できるトラフィックには制限の設定がないことに留意してください。 トリガーの種類によって、スケーリング要件も異なるため、選択するトリガーとその制限についてご確認ください。