Slide 1

Slide 1 text

Azure Serverless 最新情報(2019 年夏編) MVP x Student Meetup@つくば

Slide 2

Slide 2 text

About Me 三宅 和之 @kazuyukimiyake 株式会社ゼンアーキテクツ CTO Microsoft MVP ( for Microsoft Azure ) Vue.js ⽇本ユーザーグループ コアスタッフ typescript-jp コアスタッフ PaaS がかりの部屋(Blog): https://k-miyake.github.io/blog/

Slide 3

Slide 3 text

Serverless とは Serverless = BaaS ( Backend as a Service) + FaaS ( Functions as a Service) martinfowler.com 記事

Slide 4

Slide 4 text

Serverless のねらい "サーバーが無い" ではなく "サーバーの運⽤管理がほぼ不要" という概念 インフラに費やす時間やリソースを最⼩限に抑えるアプローチ "⾃分のコード(ビジネス)" のみに集中できる

Slide 5

Slide 5 text

Azure Serverless ファミリー Azure Functions だけが Serverless ではない (⼀部便乗っぽいサービスもあるが) Serverless ラインナップは拡⼤中

Slide 6

Slide 6 text

Serverless アーキテクチャ例#1 センサーデータやクリックストリームのデータ処理フローを”⼿軽に”構築 動画(くらでべ - de:code 2019 DP81): https://youtu.be/qBmNi3ZrsUk

Slide 7

Slide 7 text

Serverless アーキテクチャ例#2 グローバルにスケールするアプリケーションを最⼩限のコードで構築 MS 本社の エンジニア Matias が Azure Friday でデモを実施したアーキテクチャ 動画( Azure Friday )https://youtu.be/cfZUiVQIhTw

Slide 8

Slide 8 text

キーテクノロジー: Azure Functions バインディングによりコード量が⼤幅に減る C# だけではない( Node.js オススメ! ) OSS として開発されている- https://github.com/Azure/Azure-Functions V2 に進化した

Slide 9

Slide 9 text

トリガーとバインディング (おさらい) トリガー: イベントに応じて Function を発⽕ バインディング: データの⼊出⼒をラッピングする

Slide 10

Slide 10 text

Azure Functions は V2 へ進化(更新を推奨) Runtime を Host process と Worker process に分離 新機能はほとんどが V2 のみをサポート (V1 はほぼメンテナンスされていない)

Slide 11

Slide 11 text

Premium Plan 登場 コールドスタート問題から開放 ⾼速にスケール 200 インスタンスまで

Slide 12

Slide 12 text

TypeScript サポート Node.js ベースでの Azure Functions 開発が安全・快適に! import { AzureFunction, Context } from "@azure/functions"; const cosmosDBTrigger: AzureFunction = async function( context: Context, documents: Tweet[] ): Promise { if (!!documents && documents.length > 0) { context.log("Document: ", documents[0].tweetText); } context.bindings.signalRMessages = [ { target: "newMessage", arguments: [documents] } ]; };

Slide 13

Slide 13 text

キーテクノロジー: Cosmos DB A globally distributed, massively scalable, multi-model database service. 主な特⻑ サーバーレス - No infrastructure or VM management グローバル分散 - Turnkey geo-replication マルチモデル, マルチ API ストレージとスループットをエラスティックにスケール可能 99th パーセンタイル内に 10ms 以下のレイテンシーを保証

Slide 14

Slide 14 text

Change Feed Serverless なマイクロサービスを実現するためのキーテクノロジー 同時に複数の Feed を出⼒可能(DB は稼働させながら追加可能)

Slide 15

Slide 15 text

Azure Functions CosmosDB Trigger Cosmos DB のデータ変更によって Azure Functions が発⽕する Cosmos DB Trigger が Change Feed Processor ライブラリを利⽤(ラッピング) 複数の Change Feed を独⽴して配置可能 クロスパーテーションでデータにアクセスしたい場合に便利

Slide 16

Slide 16 text

キーテクノロジー: SignalR Service Web にリアルタイム通信機能を実装できるサービス WebSocket の Hub 機能が Serverless 化

Slide 17

Slide 17 text

signalr.js によるリアルタイム更新の実装 created: async function(): Promise { console.log("VUE_APP_HOST: ", process.env.VUE_APP_HOST); // SignalR とコネクションを作成 const connection = new HubConnectionBuilder() .withUrl(this.baseUrl) .configureLogging(LogLevel.Information) .build(); console.log("connecting..."); // SignalR Service への接続 connection .start() .then(() => console.log("connected!")) .catch(console.error); // SignalR からの呼び出し connection.on("newMessage", (tweets: Tweet[]) => this.displayTweet(tweets)); // 切断 connection.onclose(() => console.log("disconnected")); }

Slide 18

Slide 18 text

キーテクノロジー: SQL DB Serverless ⼀定時間アクセスしなければ、インスタンスが停⽌する 課⾦も⽌まるため、コストを最適化できる 再始動時やオートスケール時はコールドスタートなのでスパイク対策には不向き

Slide 19

Slide 19 text

Azure Serverless の課題(個⼈的⾒解) フロントエンド SPA ベース Web アプリのデプロイ先が微妙 SPA にとって App Service はオーバースペック Static Website ホスティング機能がショボい Firebase や Netlify 相当の機能が求められる

Slide 20

Slide 20 text

ご清聴ありがとうございました Special Thanks! Yoichi Kawasaki (Microsoft) Matias Quaranta (Microsoft) shibayan