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

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

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

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

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

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

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

Microsoft Azure製品カタログ

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などの開発言語が利用可能です。従量課金制で、コードを実行した時間で利用料金が計算されます。

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

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

セキュリティの統合

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

New call-to-action
New call-to-action

Azure Functionsのテンプレート

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

HTTPTrigger

HTTP要求を送信することで、コードの実行をトリガー。

TimerTrigger

事前に定義されたスケジュールで、クリーンアップなどバッチタスクを実行。

CosmosDBTrigger

Azure Cosmos DBのドキュメントが、NoSQLデータベースのコレクションに追加もしくは更新されたときに処理。

BlobTrigger

Azure Storage BLOBがコンテナーに追加されたときに処理。画像のサイズ変更に利用。

QueueTrigger

Azure Storageキューに対して、メッセージが配信されたときに応答。

EventGridTrigger

Azure Event Gridのサブスクリプションに配信されたイベントに対して応答。サーバーレスで自動サムネイル生成機能を追加可能。

EventHubTrigger

Azureイベントハブに送信されたイベントに応答。アプリケーションの計測実装(インストルメンテーション)、IoT、ユーザーエクスペリエンスやワークフロー処理に有効。

ServiceBusQueueTrigger

メッセージキューから、コードを他のAzureのサービス、オンプレミスのサービスに接続。

ServiceBusTopicTrigger

階層(トピック)を更新することで、コードを他の Azureサービスまたはオンプレミスのサービスに接続

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」をクリックします。次に、「作成」をクリックします。

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

これで、関数を作成する準備が整いました。

まとめ

サーバーレスコンピューティングもしくは「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は注目すべき分野です。

RELATED POST関連記事


RECENT POST「ハイブリッドクラウド」の最新記事


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

RANKING人気資料ランキング

RECENT POST 最新記事

RANKING人気記事ランキング

サイト掲載へのお問い合わせ