御成門プログラマーの技術日記

Microsoft AzureやAngularなどの技術情報を発信します

Microsoft Tech Summit 2018 セッション要約「今日から始める Azure Functions 2.0」

登壇者情報

日本マイクロソフト株式会社
クラウド&ソリューション事業本部 インテリジェントクラウド統括本部
テクノロジーソリューションプロフェッショナル
服部さん

セッション内容要約

まずは今までのAzure Functionsの基礎的な話から

Azure Functions入門

f:id:tt-suzukiit:20181122175401p:plain イベントに反応して、コードをもとに行動する
イベントは「HTTP要求に対するトリガー」、「BLOBストレージ」、「タイマー」などのイベントがある。

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

f:id:tt-suzukiit:20181122174901p:plain Azure Functionsといったらサーバーレスアーキテクチャ
サーバーレス=「コードに集中できる環境」 とくに従量課金であることが大事

Functionsのコンセプト

f:id:tt-suzukiit:20181122175736p:plain バインディング:他のサービスとの連携部分はマイクロソフトがあらかじめ定義しているので、コードだけに注力できる。
ロジックだけに注力すればいいのがFunctions

Functionsのシナリオ

Functionsのシナリオはこんな感じ
f:id:tt-suzukiit:20181122180409p:plain 全てのシナリオに共通しているのは、イベントをトリガーとして処理を行っていること。

よくある話で既存の大きなスクリプトをそのまま用いて、スクリプトの動作に時間がかかることがある。
そういう使いかたは好ましくない。既存のスクリプトを分割する。

その他のFunctions1.0のお話
  • ログ収集
    Application Insightを使用する。
    Application Insightはこれから日本リージョンで使えるようになる。

  • プロキシ、スロットあるよ。

Azure Functions 1.0における課題点

f:id:tt-suzukiit:20181122181457p:plain

ここから2.0のお話

Function2.0 GAのアナウンス

f:id:tt-suzukiit:20181122181627p:plain ↑の5点を押さえておけば大丈夫

  • 言語環境の変更 Functionsが言語別に分割された。 →立ち上がりが早くなる →クイックスタートのビューが変更 内部のランタイムが.NET Coreに変わった

  • 新しいプラットフォーム 待望のLinux対応 インスタンスを使った分だけという需要がある

Azure Functionsのホスティングプランについて

f:id:tt-suzukiit:20181122182312p:plain プランに関して何を使っていいかという質問が多い

  • コンサンプションプラン

    • 実行1回ごとの課金
    • 迅速で無限大のスケールアウト
      インスタンス0のスケールインがあるので時間がかかってしまう(コールドスタート)。
  • App Service Plan

    • 時間ごとの課金
    • オートスケールが遅い 2分から3分くらい
    • 仮想ネットワークに接続可能
プランに関してはコンサンプションプランで使える仕組みにするのがいい

f:id:tt-suzukiit:20181122183357p:plain * 理想はコンサンプションプランを使う * 課金を定額の課金にしたければApp Service Planを用いる(↑に記載のデメリットあり)

2.0から「Functions プレミアム プラン(プライベートプレビュー)」が登場

f:id:tt-suzukiit:20181122182936p:plain 今までの2つのプランのあいのこ、いいとこどり

コールドスタートは2.0で最適化された

f:id:tt-suzukiit:20181122183040p:plain Functionsを長く使っていないことでインスタンスが0になってしまうことで発生。
2.0で最適化された

FunctionはOSSプロジェクト

f:id:tt-suzukiit:20181122183738p:plain github.com

Visual Studioからでもビジュアルを変えず編集できる。
デバッグのコールスタックでFunctions中のコードもステップインしていくことができる。

モニタリングはApplication Insightを用いる。

パッケージからの実行が追加

f:id:tt-suzukiit:20181122184131p:plain パッケージからの実行が追加される。
使用中のファイルがロックされない。 起動も早くなる。

Functions 開発パイプライン

f:id:tt-suzukiit:20181122184343p:plain

Durable Functions

f:id:tt-suzukiit:20181122184600p:plain ↑がFunctionsの弱点

Durable Functions 複数のFunctionsをオーケストレーションする仕組み f:id:tt-suzukiit:20181122184722p:plain

Functions 1.0 から 2.0の移行方法

f:id:tt-suzukiit:20181122184835p:plain 言語のランタイムバージョンが変わっていることに注意

2.0ユースケース

イベントストリーミング

f:id:tt-suzukiit:20181122185109p:plain

  • イベントハブは受け身
  • イベントグリッドは自らイベントをとってくる
  • イベントの発生がどこなのかで判断する コスモスDBと、つなげる場合はパーティションすることをわすれない
ワークフロー自動化

f:id:tt-suzukiit:20181122185225p:plain

  • イベントかトランザクションかで、イベントグリッドかキューかを選択する
  • 順序を保持するか
サーバーレスWebAPI

f:id:tt-suzukiit:20181122185347p:plain functionsだけでapiを作るのは危険
セキュリティ部分を外部に出す(waf、apimanafement)

まとめ

f:id:tt-suzukiit:20181122185433p:plain

以上です。他のセッションもまとめています

onarimonstudio.hatenablog.com