今回は、Microsoft の Azure Functions について解説をします。
Azure Functions はサーバーレスアプリケーションの一種ですので、はじめに「サーバーレス」について理解し、Azure Functions で「何ができるのか」を説明します。
Azure Functions に関する詳しい情報は こちら から入手してください。
サーバーレスとは?
Azure Functions はサーバーレスアプリケーションの一種です。
では、サーバーレスとは何でしょうか?
サーバーレス = サーバー + レス
ですが、サーバーがないわけではありません。
サーバーレスの意味は、サーバーの管理を必要としない仕組みのことであって、サーバーを使わないわけではありません。サーバーは裏で動いていますが、ユーザー(利用者)からは見えない存在になっています。
よって、「サーバーの構築や管理が必要ない(レス)」ことを「サーバーレス」と呼びます。
サーバーレスは、サーバーの構築や管理する必要がないことから、開発に集中することができるというわけです。
Azure Functions を動かすためのサーバーとして Virtual Machine を準備する必要はありません。いきなり作成し始めることが可能になっています。
このように、サーバーレスなクラウドのプラットフォームのことを FaaS(Functions as a Service)と呼びます。
Microsoft は、本記事で取り上げる Azure Functions を提供していますが、その他の企業もサーバーレスで関数を動かすことができるサービスを提供しています。AWS では AWS Lambda を、Google Cloud は Cloud Functions を提供しています。
Azure Functions で何ができるのか?
Azure Functions を利用すると、HTTP トリガーのアプリケーション、Timer トリガーのアプリケーション、Azure Cosmos DB のドキュメント作成や変更の管理、Azure Storage Blob のドキュメント作成や変更の管理などができます。
あらかじめ準備されているテンプレートの例を以下に示します。
HTTP | HTTP トリガーのアプリケーションは、URL 経由で関数にアクセスし結果を取得することができるというものです。マイクロサービスの作成に利用することができますね。 |
---|---|
Timer | Timer トリガーは、まさしく Timer をトリガーにして実行することができる関数になりますので、バッチ処理の作成に向いています。cron 相当のスケジュール管理をすることが可能です。 |
Azure Cosmos DB | Cosmos DBへのデータの追加や更新がされたことをトリガーに、コードを起動します。 |
Blob Storage | Azure Storage Blob がコンテナーに追加されたことをトリガーに、コードを起動します。Blob とは Binary large OBject の略で、データベースで用いられるデータ型の一つです。ビデオや音声、圧縮ファイル、実行ファイルなどの非構造化データといったバイナリデータを格納する際に用いられます。 |
Queue storage | ある Function から別の Function を呼び出すことができます。Functionを組み合わせることで様々な処理ができそうですね。 |
Event Grid | サブスクリプションとフィルターを介して Azure Event Grid イベントに応答します。 |
イベント ハブ | 大量の Azure Event Hubs イベントに応答します。Azureイベント ハブに送信されたことをトリガーに、コードを起動することができます。 |
Service Bus キュー | Service Bus のキュー メッセージに応答することで、別の Azure サービスやオンプレミス サービスに接続します。 |
Service Bus トピック | Service Bus トピック メッセージに応答することで、別の Azure サービスやオンプレミス サービスに接続します。 |
Azure Functions の良さ
Azure Functions の優れた点は、インフラストラクチャの構築が不要であること、スケーリングやプロビジョニングについて心配する必要がないことです。
開発者は、C# や Python、Node.js、Javaといったサポートされている任意の言語でコードを記述することに集中することができます。
また、コードの実行時間に対してのみ課金がされるという点やスケーリングの必要性を Azureが自動的に処理をしてくれるという点に置いて非常に優れた環境でると言えるでしょう。
次回は、実際にAzure Functions の作成方法について説明をする予定です。
コメント