Azure Functionsとは?特徴・メリットを解説

Azure Functionsとは、サーバーを意識することなくマイクロサービスアーキテクチャを実装できるサービスです。

コーディングだけに集中できるAzure Functionsを使用してみたいけれど、どのような特徴やメリットがあるか分からない方もいるでしょう。

Azure Functionsとは?特徴とメリット

Azure Functionsは、Azure上でコード(関数)やサーバーなしに(サーバーレスで)実行できるサービスです。

利用者はサーバーを意識する必要がなく、アプリケーションロジックの開発に集中できるのがメリットでしょう。Azure Functionsを利用することによって、WebAPIやWebサービスを効率的に作ることができます。

この章ではAzure Functionsの主な特徴や機能を解説します。

サーバーレスアーキテクチャ

「サーバーレス」といっても実際には「サーバーが存在しない」「サーバーが要らない」わけではありません。サーバーの存在を意識することなく利用することができる、ということです。

サーバーレスアーキテクチャは、クラウドサービスが目指している近い将来のあるべき姿の一部がいち早く具現化されているサービスと言えます。

Azure Functionsを利用すると、フルマネージドサービスとしてサーバーなどの開発環境が提供されます。そのため、アプリケーションに大量のリクエストが来た場合への対応策の一つとしてサーバー台数を増やすことなどを気にする必要はなくAzureが自動的に対応してくれます。また、サーバーのハード障害についても心配いりません。自動的に切り替えてくれます。

ユーザーは、サーバー構築や障害への対応を気にすることなく、ただアプリケーションのロジックを書くことに集中できるようになります。

マイクロサービスアーキテクチャ

Azure Functionsは、マイクロサービスアーキテクチャを実装するための機能が備わっています。

マイクロサービスアーキテクチャとは、ソフトウェアの開発手法のひとつです。一般的に「マイクロサービス」と略される場合もあります。

マイクロサービスアーキテクチャは、個別で開発した小さなサービスや機能をコンポーネント単位で組み合わせ、ひとつのアプリケーションとして構築する手法です。

機能がひとつひとつ独立しているためバグ修正なども行いやすく、可用性やスケーラビリティなのがメリットと言えます。

自動スケーリング

Azure Functionsでは自動スケーリング機能があります。

自動スケーリングとは、リソースを自動で認識し処理能力の調節を行ってくれる機能のことです。

たとえば自動スケーリングがついていない場合、リソースが足らない状態で稼働し続けるとサーバーがダウンする可能性があります。一方自動スケーリングを利用すれば、リソースが足らないときは自動でスケールアップを、リソースが空きすぎているときは自動でスケールダウンをしてくれるのです。

結果、サーバーダウンをすることもなくコストも常に最適な状態を保てるといったメリットがあります。

ステートフルなプログラムを実行可能

Azure Functionsでは、ステートフルなプログラムを実行可能です。ステートフルとは、以前のセッション情報を保持していることを指します。

通常サーバーレスの場合、セッション情報を保持するのが難しいため、ステートレスといわれるセッション情報を保持しない処理がされています。そのため複雑なプログラムによりコードが煩雑になるといったデメリットがあるのです。

一方Azure Functionsの場合、拡張機能のDurable Functionsを利用することでステートフルなプログラムを実行できます。ステートフルなプログラムを実行できることにより、複雑なプログラムなどを必要とせずにサーバーレスを実現できます。

トリガー・バインドで他サービスとシームレスに接続可能

Azure Functionsでは、トリガー・バインドで他のサービスとシームレスに接続が可能です。

通常、他のサービスと接続する場合はハードコーディングが必要ですが、ハード・バインドを使用することでハードコーディングが不要となります。具体的には以下の流れでシームレスに接続できます。

  • トリガー:アプリケーションで関数を呼び出し起動させる
  • バインド:トリガーで呼び出された関数を他のサービスに結びつける

上記のようにトリガーとバインドを利用すれば、ハードコーディングを必要とせず他サービスとシームレスに接続ができるのです。

トリガーとして利用できるバインディングとしては次のものがあります

  • HTTP Trigger : HTTP要求をトリガーにする
  • Timer : 時刻を指定してコードを起動します。CRON相当のスケジュール管理ができる
  • GitHub webhook : GitHubリポジトリで発生するイベントをトリガーにする
  • 汎用Webhook : 外部Webサービスのwebhookをトリガーにする
  • Cosmos DB : Azure Cosmos DBへのデータ追加及び更新されたことをトリガーにする
  • Blob Storage : Azure Blob Storageがコンテナーに追加されたことをトリガーにする
  • Queue Storage :新しいAzure Queue storageメッセージが作成されたことをトリガーにする
  • Event Hubs : Azure Event Hubsに送信されたイベントをトリガーにする。IoTで使いやすいシナリオ
  • Service Bus : Service Busキューまたはトピックメッセージをトリガーにして関数を実行する

Outputに利用できるバインディングには上記に加え、以下があります。

  • Microsoft Excelテーブル
  • Microsoft Graph OneDriveファイル
  • Microsoft Graph Outlookメール
  • Mobile Apps
  • Send Grid
  • Service Bus
  • SignalR
  • Table Storage
  • Twilio

開発言語

Azure Functionsでは以下の開発言語を自由に選んで関数を記述できます。

  • C#
  • Java
  • JavaScript
  • Python
  • PowerShell
  • TypeScript

バージョンによって使用可能な開発言語が異なるため注意しましょう。

Index