Azure Functions 入門
-
Upload
jz5-matsue -
Category
Technology
-
view
336 -
download
0
Transcript of Azure Functions 入門
Azure Functions 入門
jz5プロ生勉強会 第45回
@名古屋2016/11/26
プロフィール
• jz5• 仕事1: プロ生ちゃんP• 仕事2: プログラマー• Xamarin 歴: 1年と少し• Visual Basic 歴: 20年近く
ゴール
• Azure Functions を実際に使ってみて(デモを見て)どういう感じのものかを知る・簡単に使えるのを知る
Azure Functions (関数)
• 2016/11 正式サービス開始• ※このニュースで知って使ってみました• “サーバーレス アーキテクチャ”
“サーバーレス”アーキテクチャ
• 「サーバー不要のコードアーキテクチャを使用してイベントを処理」
–Azure Functions Web サイトより• AWS Lambda が有名らしい(はじめた?)• Amazon, Google, IBM, Microsoft で少し定義が違う?
サーバーがない…だと?
サーバーはありまーす!
たぶんこういうこと• ──これまで• サーバー仮想化の技術等で必要なときにスケールアップ・スケールアウトできる
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
PV
でも• 実は1日3PV…• 応答1秒とすると1日3秒しかサーバー使ってない…• でも24時間サーバー運用…• 3アクセスされる瞬間だけ1秒動かせれば…
こうできる
• 要求時のみ実行してその分だけ費用発生
0時 2時 4時 6時 8時 10時 12時 14時 16時 18時 20時 22時
PV
サーバーレスで解決
• 自分でサーバーの運用/管理–費用: 時間・CPU/メモリ等のスペック・転送量などで計算
• サーバーは”自分で”運用/管理しない• リクエストがあったときの処理(コード)を登録
–費用: 実行回数・実行時間やメモリ使用量などで計算
Azure Functions の一般的なシナリオ
• タイマーベースの処理• Azure サービスのイベント処理• SaaS イベント処理• Web アプリアーキテクチャ• モバイルバックエンド• リアルタイム ストリーム処理• リアルタイム BOT メッセージング
公式サイトより
実際のところ
• 例にした Web サイトをサーバーレスに置き換えは向いてない感じ–将来はできるようになるかも?
Azure Functions 料金
• 料金(よく変わったりするみたい)–実行時間: ¥0.001632/GB秒–実行回数: ¥20.40/100万回
• 月々一定量まで無料• ※サーバー占有プランあり!?※GB秒: 実行時のメモリ消費量 x 秒数例: メモリ1GB使って1秒間実行 = 1GB秒
実際に使ってみる(関数の作成)1. Azure Functions ポータルでサインイン
– functions.azure.com2. シナリオの選択3. 言語の選択
※「クイックスタート」の例いろいろなテンプレートからも選べる
使える言語
• C#• F#• Node.js• Python• PHP• Batch• Bash
例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;
}
(例1 画面)
例1の関数補足
• 「新しい関数」からテンプレートを選ぶ場合「HTTP要求を受信するたびに実行される C# 関数」– HTTP要求は一番わかりやすいかも
• テンプレートのコードをもとにパラメーターによりいろいろレスポンス結果を変えるコードも簡単に書ける
• コードは run.csx ファイルを編集している–「ファイルの表示」から関数のファイル構成を見れる
どんな関数が作れる?
• トリガー(何が起きた時に関数を実行開始するか)は大きく分類して3種類1. スケジュールした時間ごとに実行2. Webhook/HTTP要求されたときに実行3. Azure サービスに関するイベント発生で実行
• Azure ストレージ BLOB が追加されたときなど※ Webhook: Web サービスから指定した URL を呼び出してもらう仕組み
関数の構成
• 関数の構成(トリガーの種類など)はfunction.json に書かれている
• 「統合」ページである程度編集できる
「統合」ページ
例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.” のとき
コードの書き方(C#)
• .NET Framework のアセンブリは#r “System.Web.Http” のように記述して参照
• NuGet パッケージも使える– json ファイルを追加・記述する必要あり
• #load “foo.csx” のように記述して他のコードを再利用できる
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-csharp
Visual Studio でローカルデバッグ
• Web サイトでコーディングはエディターが貧弱…
• Azure Functions の仕組みはオープンソース• ソースコードをダウンロードして環境構築してローカルデバッグできる
※試してません
継続的なデプロイ
• Git, GitHub, Bitbucket, Mercurial, Dropbox, OneDrive, Visual Studio Team Services をサポート
• 有効にするとポータルで編集できない• 「関数アプリの設定」→「継続的インテグレーション」→「セットアップ」
https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-continuous-deployment
デプロイデモ: GitHub 連携
1. GitHub との連携をセットアップ2. GitHub リポジトリに関数ファイルを作成3. Azure Functions ポータルで確認
Azure Functions まとめ• 必要なコードだけをクラウドで実行できる
–サーバー運用しない–生産性もアップ?
• トリガーは タイマー・HTTP要求・Azure イベント• 実行した分だけ支払い• C# や Node.js で開発
– 3rd パーティライブラリも使える– GitHub や Visual Studio なども使える
活用できるかはアイデア次第
ご清聴ありがとうございました
Azure Functions 入門jz5
プロ生勉強会 第45回@名古屋2016/11/26
プロ生ちゃんアイコン公開中!