Azure Functions 入門

30
Azure Functions 入門 jz5 プロ生勉強会 第45@名古屋 2016/11/26

Transcript of Azure Functions 入門

Page 1: Azure Functions 入門

Azure Functions 入門

jz5プロ生勉強会 第45回

@名古屋2016/11/26

Page 2: Azure Functions 入門

プロフィール

• jz5• 仕事1: プロ生ちゃんP• 仕事2: プログラマー• Xamarin 歴: 1年と少し• Visual Basic 歴: 20年近く

Page 3: Azure Functions 入門

ゴール

• Azure Functions を実際に使ってみて(デモを見て)どういう感じのものかを知る・簡単に使えるのを知る

Page 4: Azure Functions 入門

Azure Functions (関数)

• 2016/11 正式サービス開始• ※このニュースで知って使ってみました• “サーバーレス アーキテクチャ”

Page 5: Azure Functions 入門

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

• 「サーバー不要のコードアーキテクチャを使用してイベントを処理」

–Azure Functions Web サイトより• AWS Lambda が有名らしい(はじめた?)• Amazon, Google, IBM, Microsoft で少し定義が違う?

Page 6: Azure Functions 入門

サーバーがない…だと?

Page 7: Azure Functions 入門

サーバーはありまーす!

Page 8: Azure Functions 入門

たぶんこういうこと• ──これまで• サーバー仮想化の技術等で必要なときにスケールアップ・スケールアウトできる

1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

PV

Page 9: Azure Functions 入門

でも• 実は1日3PV…• 応答1秒とすると1日3秒しかサーバー使ってない…• でも24時間サーバー運用…• 3アクセスされる瞬間だけ1秒動かせれば…

Page 10: Azure Functions 入門

こうできる

• 要求時のみ実行してその分だけ費用発生

0時 2時 4時 6時 8時 10時 12時 14時 16時 18時 20時 22時

PV

Page 11: Azure Functions 入門

サーバーレスで解決

• 自分でサーバーの運用/管理–費用: 時間・CPU/メモリ等のスペック・転送量などで計算

• サーバーは”自分で”運用/管理しない• リクエストがあったときの処理(コード)を登録

–費用: 実行回数・実行時間やメモリ使用量などで計算

Page 12: Azure Functions 入門

Azure Functions の一般的なシナリオ

• タイマーベースの処理• Azure サービスのイベント処理• SaaS イベント処理• Web アプリアーキテクチャ• モバイルバックエンド• リアルタイム ストリーム処理• リアルタイム BOT メッセージング

公式サイトより

Page 13: Azure Functions 入門

実際のところ

• 例にした Web サイトをサーバーレスに置き換えは向いてない感じ–将来はできるようになるかも?

Page 14: Azure Functions 入門

Azure Functions 料金

• 料金(よく変わったりするみたい)–実行時間: ¥0.001632/GB秒–実行回数: ¥20.40/100万回

• 月々一定量まで無料• ※サーバー占有プランあり!?※GB秒: 実行時のメモリ消費量 x 秒数例: メモリ1GB使って1秒間実行 = 1GB秒

Page 15: Azure Functions 入門

実際に使ってみる(関数の作成)1. Azure Functions ポータルでサインイン

– functions.azure.com2. シナリオの選択3. 言語の選択

※「クイックスタート」の例いろいろなテンプレートからも選べる

Page 16: Azure Functions 入門

使える言語

• C#• F#• Node.js• Python• PHP• Batch• Bash

Page 17: Azure Functions 入門

例1: HTTP要求に対しHTMLページを返す• webhook + API シナリオから作成• 編集して保存後「関数の URL」にアクセスするとサイトが見れる

using System.Net;using System.Net.Http.Headers;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log){

var res = new HttpResponseMessage();res.Content = new StringContent("<html><body>プロ生ちゃん</body></html>");res.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");return res;

}

Page 18: Azure Functions 入門

(例1 画面)

Page 19: Azure Functions 入門

例1の関数補足

• 「新しい関数」からテンプレートを選ぶ場合「HTTP要求を受信するたびに実行される C# 関数」– HTTP要求は一番わかりやすいかも

• テンプレートのコードをもとにパラメーターによりいろいろレスポンス結果を変えるコードも簡単に書ける

• コードは run.csx ファイルを編集している–「ファイルの表示」から関数のファイル構成を見れる

Page 20: Azure Functions 入門

どんな関数が作れる?

• トリガー(何が起きた時に関数を実行開始するか)は大きく分類して3種類1. スケジュールした時間ごとに実行2. Webhook/HTTP要求されたときに実行3. Azure サービスに関するイベント発生で実行

• Azure ストレージ BLOB が追加されたときなど※ Webhook: Web サービスから指定した URL を呼び出してもらう仕組み

Page 21: Azure Functions 入門

関数の構成

• 関数の構成(トリガーの種類など)はfunction.json に書かれている

• 「統合」ページである程度編集できる

Page 22: Azure Functions 入門

「統合」ページ

Page 23: Azure Functions 入門

例2: GitHub 連携• Issue のコメントが投稿されたら関数を実行• この記事の内容をデモ

– https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-create-a-web-hook-or-api-function

• GitHub シークレットは「キー」を表示して「関数キー」の値を使う– ※ Azure 関数からのレスポンス Message が “The WebHook

signature provided by the ‘X-Hub-Signature’ header field does not match the value expected by the ‘GitHubWebHookReceiver’ receiver. WebHook request is invalid.” のとき

Page 24: Azure Functions 入門

コードの書き方(C#)

• .NET Framework のアセンブリは#r “System.Web.Http” のように記述して参照

• NuGet パッケージも使える– json ファイルを追加・記述する必要あり

• #load “foo.csx” のように記述して他のコードを再利用できる

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-csharp

Page 25: Azure Functions 入門

Visual Studio でローカルデバッグ

• Web サイトでコーディングはエディターが貧弱…

• Azure Functions の仕組みはオープンソース• ソースコードをダウンロードして環境構築してローカルデバッグできる

※試してません

Page 26: Azure Functions 入門

継続的なデプロイ

• Git, GitHub, Bitbucket, Mercurial, Dropbox, OneDrive, Visual Studio Team Services をサポート

• 有効にするとポータルで編集できない• 「関数アプリの設定」→「継続的インテグレーション」→「セットアップ」

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-continuous-deployment

Page 27: Azure Functions 入門

デプロイデモ: GitHub 連携

1. GitHub との連携をセットアップ2. GitHub リポジトリに関数ファイルを作成3. Azure Functions ポータルで確認

Page 28: Azure Functions 入門

Azure Functions まとめ• 必要なコードだけをクラウドで実行できる

–サーバー運用しない–生産性もアップ?

• トリガーは タイマー・HTTP要求・Azure イベント• 実行した分だけ支払い• C# や Node.js で開発

– 3rd パーティライブラリも使える– GitHub や Visual Studio なども使える

Page 29: Azure Functions 入門

活用できるかはアイデア次第

Page 30: Azure Functions 入門

ご清聴ありがとうございました

Azure Functions 入門jz5

プロ生勉強会 第45回@名古屋2016/11/26

プロ生ちゃんアイコン公開中!