Azure Serverless overview and updates 2019

Ff7f1f76468f46a1c5c84b9238a4b162?s=47 miyake
July 27, 2019

Azure Serverless overview and updates 2019

「MVP x Student Meetup@つくば 」で発表させていただいたスライドです。

Ff7f1f76468f46a1c5c84b9238a4b162?s=128

miyake

July 27, 2019
Tweet

Transcript

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

  2. About Me 三宅 和之 @kazuyukimiyake 株式会社ゼンアーキテクツ CTO Microsoft MVP (

    for Microsoft Azure ) Vue.js ⽇本ユーザーグループ コアスタッフ typescript-jp コアスタッフ PaaS がかりの部屋(Blog): https://k-miyake.github.io/blog/
  3. Serverless とは Serverless = BaaS ( Backend as a Service)

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

  5. Azure Serverless ファミリー Azure Functions だけが Serverless ではない (⼀部便乗っぽいサービスもあるが) Serverless

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

  7. Serverless アーキテクチャ例#2 グローバルにスケールするアプリケーションを最⼩限のコードで構築 MS 本社の エンジニア Matias が Azure Friday

    でデモを実施したアーキテクチャ 動画( Azure Friday )https://youtu.be/cfZUiVQIhTw
  8. キーテクノロジー: Azure Functions バインディングによりコード量が⼤幅に減る C# だけではない( Node.js オススメ! ) OSS

    として開発されている- https://github.com/Azure/Azure-Functions V2 に進化した
  9. トリガーとバインディング (おさらい) トリガー: イベントに応じて Function を発⽕ バインディング: データの⼊出⼒をラッピングする

  10. Azure Functions は V2 へ進化(更新を推奨) Runtime を Host process と

    Worker process に分離 新機能はほとんどが V2 のみをサポート (V1 はほぼメンテナンスされていない)
  11. Premium Plan 登場 コールドスタート問題から開放 ⾼速にスケール 200 インスタンスまで

  12. TypeScript サポート Node.js ベースでの Azure Functions 開発が安全・快適に! import { AzureFunction,

    Context } from "@azure/functions"; const cosmosDBTrigger: AzureFunction = async function( context: Context, documents: Tweet[] ): Promise<void> { if (!!documents && documents.length > 0) { context.log("Document: ", documents[0].tweetText); } context.bindings.signalRMessages = [ { target: "newMessage", arguments: [documents] } ]; };
  13. キーテクノロジー: Cosmos DB A globally distributed, massively scalable, multi-model database

    service. 主な特⻑ サーバーレス - No infrastructure or VM management グローバル分散 - Turnkey geo-replication マルチモデル, マルチ API ストレージとスループットをエラスティックにスケール可能 99th パーセンタイル内に 10ms 以下のレイテンシーを保証
  14. Change Feed Serverless なマイクロサービスを実現するためのキーテクノロジー 同時に複数の Feed を出⼒可能(DB は稼働させながら追加可能)

  15. Azure Functions CosmosDB Trigger Cosmos DB のデータ変更によって Azure Functions が発⽕する

    Cosmos DB Trigger が Change Feed Processor ライブラリを利⽤(ラッピング) 複数の Change Feed を独⽴して配置可能 クロスパーテーションでデータにアクセスしたい場合に便利
  16. キーテクノロジー: SignalR Service Web にリアルタイム通信機能を実装できるサービス WebSocket の Hub 機能が Serverless

  17. signalr.js によるリアルタイム更新の実装 created: async function(): Promise<void> { 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")); }
  18. キーテクノロジー: SQL DB Serverless ⼀定時間アクセスしなければ、インスタンスが停⽌する 課⾦も⽌まるため、コストを最適化できる 再始動時やオートスケール時はコールドスタートなのでスパイク対策には不向き

  19. Azure Serverless の課題(個⼈的⾒解) フロントエンド SPA ベース Web アプリのデプロイ先が微妙 SPA にとって

    App Service はオーバースペック Static Website ホスティング機能がショボい Firebase や Netlify 相当の機能が求められる
  20. ご清聴ありがとうございました Special Thanks! Yoichi Kawasaki (Microsoft) Matias Quaranta (Microsoft) shibayan