Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

サーバーレスアーキテクチャの最新動向 - こんなにできてしまうAzure Functions -

More than 3 years have passed since last update.

マイクロソフトのサーバーレスアーキテクチャの環境が新しくなりました。

サーバーレスアーキテクチャについて前書きました。
これです。「さーばーれす あーきてくちゃ…? -Azure Functionsでサーバーレスアーキテクチャが何かを理解する記事」

で、

これは約半年前の状況なのですが、半年を経てだいぶAzure Functionsも変わって超クールになったのでご紹介したいと思います。
image.png

そもそも Azure Functionsとは

ここで Azure functions の機能的な面を詳しく見ていきましょう。
実際に以下の Azure Functionsのサービスの機能を見ると、 Azure Functionsの機能がいかにサーバー レスアーキテクチャやマイクロサービスアーキテクチャといったアーキテクチャのメリットを享受できるように作られたかがわかると思います。以下に挙げられるようにC#やnode.js/javascript、PHPなど、普段あなたが開発に使っている言語を利用することができ、Azure Functionsの関数を発火させるためのトリガーもHTTPSの提供される簡単なWEBAPIや、cronの形式で定義できるタイマーなど、利用しやすいものとなっています。

Azure Functionsの特徴

Azure Functions = イベント駆動の「機能」実行プラットフォームで、柔軟で強力なサーバーレス スクリプト実行環境
クラウドアプリケーションを驚くほど簡単に作成できる
インフラを抽象化し設計者はビジネス、開発者はコードに注力できる
業務要件に応じたスケーリングが可能
HTTP APIのエンドポイントとして公開可能
Functionsは様々なプログラミング言語に対応
C#, Node.js/Javascript, F#, Python, PHP, Batch, Bash, PowerShell
ファイル作成やPush通知を容易にする「バインディング」の機能をもつ
トリガー , スケジュール , HTTP (Webhook) , キュー   

新しいAzure Functionsの機能

Azure Functionsはとても注目されているので開発も急ピッチで進んでいます。
最近新しく追加された機能の中でも特に注目スべきなのはプロキシのサービスです。
今まではFunctionsで複数のAPIを作ることは出来ても、それをマネージするのは大変でした。
RESTなAPIを例えば作るとしたらAPI Managementなどの他の仕組みを利用する必要がありました。
今回の機能ではこれが変わり、Azure Functions側に軽量なAPIマネジメントのサービスが追加されました。
これでFunctionsだけでRESTなAPIを用意することができるようになります。

image.png

さっそくこの機能を試してみます。

Azure Functionsをいじってみる

Azure上に作成

image.png

従量課金プラン
App Serviceプラン
がありますが、ここでは従量課金プランを選びましょう
従量課金プランでないと「サーバーレス」にはなりません。App Serviceプランだと待機時間にも料金が発生してしまいます。

作成されたらページが立ち上がるので、見てみましょう。
image.png

これがあたらしいFunctionsのページです。だいぶスッキリとしました。

では早速何か作りましょう。

初めてのFunction Appを作ってみる

新しい関数を追加します。この画面も新しくなって見栄えが良くなりました。
image.png

ここからも作成することが出来ますが、「関数+」をクリックすると多彩なバリエーションの中から探すことが出来ます。
image.png

C#とJavaScriptが
選べますが、今回はJavaScriptを
選んで、HTTPをトリガーにした関数を作ってみましょう。

image.png

選ぶとこの画面が出てきます。全体的なデザインが一新したのですが、サーバーレス環境を構築する上でのオペレーションもだいぶ楽になっています。
例えば右の画面

image.png

前回の場合は例えばkuduの画面に行ってproject.jsonの定義ファイルを編集したり、追加する必要がありましたがこれからはその必要はありません。直接アップロードして色々いじることができます。

URLにアクセスして動きを見てみましょう。

右上の「</>Getfunction URL」をクリックしてみましょう。
https://functions22.azurewebsites.net/api/HttpTriggerJS1?code=aajEfndrw2JpcOFAP5oi***********adsfa/Q==&name=yuki

image.png

名前が表示されます。

新しくPreviewで追加されたプロキシーのサービスを使ってみましょう。

「Proxies (preview) +」をクリックしましょう。

image.png

次に他のURLで作ってみましょう。

image.png

Functionsの設定から ProxiesをOnにします
image.png

これで完成です。以下のURLを叩くと、違うFunctionsのURLを参照できます。
パラメータを変えた同じFunction Appや、別のFunction App、それに加えてAzure以外の別のサービスにもリダイレクトすることが出来ます。

https://functions22.azurewebsites.net/template1

image.png

https://functions22.azurewebsites.net/template2

image.png

そう、例えばAzureとは全く関係ないこんなURLもバックエンドに追加できてしまいます。

http://qiita.com/hat22

image.png

これで超高速な開発でにサーバーレスRESTful API ライフを送れますね。

yuhattor
AppDev@Microsoft
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away