Azure Functionsはサーバーレス、FaaSの時代を拓く

Azure Functionsはサーバーレス、FaaSの時代を拓く

「Azure Functions」は、Azureで「サーバーレスコンピューティング」もしくは「FaaS(Function as a Service)」と呼ばれるアーキテクチャを実現します。

開発部門の担当者が煩雑に感じることは、構築するアプリケーションにしたがって、サーバー、ストレージ、ミドルウェアや開発言語の選択のほか、必要な費用の予測をしなければならないことでしょう。システムの稼働後に、ストレージの容量が不足したり、ネットワークの負荷が大きかったりすれば、最適化しなければなりません。

プログラムを書くことに専念したくても、開発担当者にはやらなければならないことがたくさんあります。しかし、Azure Functionsを使えば、開発者は実行環境やインフラストラクチャーのことを考えずに、必要なコードの記述に集中できます。

ここではAzure Functions登場の背景、Azure Functionsの特長、実現できることなどについて解説します。

Azure Functionsはサーバーレス、FaaSの時代を拓く

Azure Functions、サーバーレスコンピューティングの背景

まず、Azure Functionsのようなサービスが登場した背景です。

クラウドサービスの普及によって、インフラストラクチャーやプラットフォームの利用で、従量課金制が進みました。その結果、生まれたアーキテクチャが「マイクロサービス」です。マイクロサービスはコンポーネントを細かく分割し、プログラムを簡易化するとともに、利用した分だけ費用を請求して保守コストを削減します。

このマイクロサービスがさらに進んだ形がFaaSです。必要最小限のコンポーネント(マイクロサービス)をさらに細分化して、「関数」や「機能」いわゆる英語の「Functions」の単位で処理を実行し、課金します。

PaaS(Platform as a Service)では、インフラストラクチャーやミドルウェアが稼働している時間は課金されます。しかし、FaaSの場合、トリガーによってリクエストやイベントが発生したときだけに課金され、それ以外には費用が発生しません。スケーリングも自動化されています。

つまりトリガーとして関数や機能を処理しない場合には、サーバーへのアクセスを必要としないことから「サーバーレスコンピューティング」と言われます。

Azure Functionsとは

このように関数や機能を実行するときだけ課金するAzureの拡張機能が、Azure Functionsです。

Azure Functionsランタイムは、オープンソースとしてGitHubで提供されています。単純なAPIやマイクロサービスを構築するときに優れたソリューションで、以下のような活用シーンがあります。

  • IoT(Internet of Things:モノのインターネット)の操作
  • 画像や注文などのデータ処理
  • スケジュールによるタスク処理
  • ファイルの保守
  • システムの統合

Azure Functionsでは、以下のような機能を利用できます。

言語を選択して関数を記述

Azure Functionsでは、C#、Java、JavaScript、PowerShell、Pythonなどの開発言語が利用可能です。従量課金制で、コードを実行した時間で利用料金が計算されます。

参考:Azure Functionsでサポートされている言語
https://docs.microsoft.com/ja-jp/azure/azure-functions/supported-languages

お気に入りのライブラリを利用して柔軟に開発

.NET開発のパッケージマネージャー「NuGet」、Node.jsのパッケージを管理する「NPM(Node Package Manager)」をサポートしているため、お気に入りのライブラリを使用できます。また、関数はポータル内で直接作成するほかに、GitHubやAzure DevOps Servicesなどサポートされている開発ツールを使ってコードのデプロイができます。Azureだけでなく、その他のSaaSで提供されているサービスも活用可能です。

ブログ無料購読

セキュリティの統合

アクセス権限の認可を行うOAuthプロトコルにより、Azure Active Directory、Facebook、Google、Twitter、Microsoftアカウントなどで、HTMLで処理する関数の保護ができます。

Azure Functionsのテンプレート

Azure Functionsでは、あらかじめよく使われる処理をテンプレートとして用意しました。コードの実行を開始する「トリガー」と、データ入出力の要素を関連付けてコードを単純化する「バインド」をサポートしています。以下がテンプレートです。詳細はURL先のWebサイトでご確認ください。

HTTPTrigger

HTTP要求を送信することで、コードの実行をトリガー。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-azure-function

TimerTrigger

事前に定義されたスケジュールで、クリーンアップなどバッチタスクを実行。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-scheduled-function

CosmosDBTrigger

Azure Cosmos DBのドキュメントが、NoSQLデータベースのコレクションに追加もしくは更新されたときに処理。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-cosmosdb-v2

BlobTrigger

Azure Storage BLOBがコンテナーに追加されたときに処理。画像のサイズ変更に利用。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-storage-blob

QueueTrigger

Azure Storageキューに対して、メッセージが配信されたときに応答。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-storage-queue

EventGridTrigger

Azure Event Gridのサブスクリプションに配信されたイベントに対して応答。サーバーレスで自動サムネイル生成機能を追加可能。
https://docs.microsoft.com/ja-jp/azure/event-grid/resize-images-on-storage-blob-upload-event?tabs=dotnet

EventHubTrigger

Azureイベントハブに送信されたイベントに応答。アプリケーションの計測実装(インストルメンテーション)、IoT、ユーザーエクスペリエンスやワークフロー処理に有効。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-event-hubs

ServiceBusQueueTrigger

メッセージキューから、コードを他のAzureのサービス、オンプレミスのサービスに接続。
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-service-bus

ServiceBusTopicTrigger

階層(トピック)を更新することで、コードを他の Azureサービスまたはオンプレミスのサービスに接続
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-bindings-service-bus

Azure Functions作成までの基本的な操作の流れ

Azure Functionsを作成するまでの基本的な操作の流れは以下のようになります。とても簡単で、シンプルなインターフェースです。

Azureポータルにログインする

Azureアカウントで、以下の Azure Portalにサインインします。
https://portal.azure.com

リソースグループを作成する

そのままFunction Appを作成することも可能ですが、リソースグループを作成しておくと、グループに所属しているFunction Appが不要になったときに、まとめて削除できます。そこで、リソースグループを作成します。

1)画面の左側にあるAzure portalのメニューから「リソースグループ」を選択し、作業ウィンドウの上部にある「+追加」をクリックします。

2)リソースグループの設定メニューが表示されます。以下を設定します。

  • リソースグループ名
  • サブスクリプション
  • リソースグループの場所

3)作業ウィンドウに入力した名称のリソースグループが表示されます。

Function Appを作成する

次に、Function Appを作成します。

1)画面の左側にあるAzure portalのメニューから「+リソースの作成」をクリックします。

2)新規の作業ウィンドウで「Compute」「Function App」をクリックします。

3)Function Appの設定メニューで以下の項目を設定します。

  • アプリ名
  • サブスクリプション
  • リソースグループ:新規作成、既存のものを使用
  • OS:Windows、Linux
  • ホスティングプラン
  • 場所
  • ランタイムスタック
  • ストレージ:新規作成、既存のものを使用
  • Application Insights

4)上記の入力を確認して、設定画面下部の「作成」をクリックします。

Function Appのプロビジョニングとデプロイが実行されます。

5)右上の通知アイコンを選択します。しばらくすると「展開が成功しました」というメッセージが表示されます。

6)メッセージの下部に「リソースに移動」「ダッシュボードにピン留めする」という2つのボタンが表示されています。

・「リソースに移動」

新しい関数アプリを確認できます。

・「ダッシュボードにピン留めする」

作成した関数アプリに、ダッシュボードから簡単に戻ることができるようになります。

関数を作成する

これまでの作業によってFunction Appは作成できましたが、関数が設定されていないため中身のない状態です。ここでは初歩的な関数作成の流れを例に挙げます。

1)作業メニューの左側から、作成したアプリ名をクリックします。

2)アプリ名の下に表示されるメニューから「関数」の右側にある「+」をクリックします。

3)「Azure Functions–作業の開始」の1「開発環境を選択する」画面で、「ポータル内」をクリックします。次に画面下部の「続行」をクリックします。

4)「Azure Functions–作業の開始」の2「関数の作成」画面で、「webhook + API」をクリックします。次に、「作成」をクリックします。

・「戻る」をクリックすると、前の画面に戻ってやり直すことができます。

これで、関数を作成する準備が整いました。ここからの操作の詳細は、以下のページを参照してください。

参考:Azure Portalで初めての関数を作成する
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-first-azure-function

まとめ

サーバーレスコンピューティングもしくは「FaaS(Function as a Service)」は、クラウドサービスを展開する各社それぞれがサービスを提供しています。Azure Functionsに対応するAWS(Amazon Web Services)のサービスは「AWS Lambda」です。Google Cloud Platformの場合は「Google Cloud Functions」になります。

IT分野の調査企業ガートナーでは、十分なPoC(Proof of Concept)が必要であるとしながらも、サーバーレスは革新的技術であり、急速に進化していると見解を述べています。コスト削減はもちろん開発の高速化を実現するサーバーレス、FaaSは注目すべき分野です。

参考:ビジネス+IT(一部会員限定の記事)
https://www.sbbit.jp/article/cont1/35782

Microsoft Azure製品カタログ
新規CTA
新規CTA
Azure Functionsはサーバーレス、FaaSの時代を拓く
Horizon Cloud on Azure 環境構築手順書 Microsoft Azureインシデント サポートサービス

RANKING人気資料ランキング

RECENT POST 最新記事

ブログ無料購読

RANKING人気記事ランキング

関連記事