ハイブリッドクラウド

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

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

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

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

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

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

Microsoft Azureとは何か?入門から応用まで徹底解説

クラウドとは何か?Azureとは何か?導入のメリットや構成、コストに至るまでの基礎的な知識から、どのように活用すべきかまでを徹底的に解説しています。

Microsoft Azureとは何か?入門から応用まで徹底解説

ブログ記事を見る

まとめ

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

  • fb-button
  • line-button
  • linkedin-button

関連記事

Azure Notebooksでプログラミング学習を!ノートブック機能の説明の概要
データ分析、データベース
Azure Monitorとは?その基本と監視内容を解説
仮想デスクトップ
Azure DevOpsで開発と運用を連携させ、品質の向上を
アプリケーション開発・管理・運用
Azure Portal(Azureポータル)とは?統合型コンソールで何ができるのか
アプリケーション開発・管理・運用
Azure Kinect DKのSDKと活用シーン
アプリケーション開発・管理・運用
Azure Stackによってオンプレミスで構築するクラウド
ハイブリッドクラウド
Azureを導入する際の流れと検討するべき3つのポイント
クラウド移行(インフラ・DB)
Azure Information Protectionでメールや文書を保護
セキュリティとガバナンス
Azure Web Appsでビジネスチャンスを迅速につかむ
アプリケーション開発・管理・運用
IoTとは?5分で概要からポイントを解説
クラウド移行(インフラ・DB)
Microsoft Intuneとは? 導入メリットやEMMを実現する3つの機能を解説
セキュリティとガバナンス
Azure Pipelinesとは?その概要、料金体系、そして構文サンプル
アプリケーション開発・管理・運用
Azure Storage Explorerとは?概要と使い方
クラウド移行(インフラ・DB)
Azure CLIとは?Azure PowerShellとの違いについても解説
クラウド移行(インフラ・DB)
Azure Machine Learning(Azure ML)とは?人工知能の実践的活用
AI、機械学習
Azure SQL Databaseで生産性向上と持続的な経営を
セキュリティとガバナンス
RELATED SITES

関連サイト

CONTACT

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

TOP