tech.guitarrapc.cóm

C#, PowerShell, Swift, Cloud, Serverless Technical Update and Features

Serverless Conf Tokyo 2018 に来ている記事2 : Azure Session #ServerlessConf #serverlesstokyo

毎年参加しているServerless Conf Tokyoです。3回目になります。

tokyo.serverlessconf.io

他のセッション

tech.guitarrapc.com

引用は私のコメントです。

目次

Speaker

Chris Gillum

@cgillum

Serverless ってServerがないのこと?

Serverless はServerを気にしなくていいという意味がある。Serverがないことではない。

ようやく、これで、面倒な言葉遊び終わってほしい....

クラウドコンピューティングを交通で例えると

IaaS : レンタカー PaaS : タクシー SaaS : Lift なりのアプリ

企業は要件を持っている

パフォーマンス

パフォーマンス要件が厳しい、Microsoft の注力ポイントはここ。

  • Scale Capacity <= VM Instance のキャパシティ
  • Scale out Speed <= すぐに展開できない状況でどう展開するか

Azure Functions v2 で、70% 速度が改善した。

2018/9/24 Release : https://azure.microsoft.com/en-us/blog/introducing-azure-functions-2-0/

Premium Functions がアナウンスもされた、サポートされている機能は

  • Hybrid of PaaS and Servereless
  • Optional Minimum % Maximum VM Count
  • Rapid Scale out
  • Unlimited Execution Duration
  • Premium VM Sizes
  • VNET Connectability
  • No Cold Start

などがある。

No Cold Start がかなり嬉しい。初動マジおそだし、Ping Functions でも1台しかプロビジョンされない..... 創栄場、Always Onが別にアルけどこいつ使うと....?

アクセス制御

退職者がアクセス出来ないようにするなど必要ですyぽねぇ。

デプロイが認証情報を持ってはいけない

  • 暗号化キー
  • アクセスキー
  • 他の秘密情報

これらは、Azure KeyVault を使って管理可能。  

実際めっちゃ使ってるけど、超便利。ただ、Azure Functions との疎結合過ぎて、 Terraform 以外で管理しきれないので注意。

監視

Azure IApplication Insight で監視できるよー

見にくいねん.... 結構きらい。

FaaS Spectrum

ローカル実行デモ(Docker)

Dockerイメージが提供されている。

FROM mcr.microsoft.com/azure-functions/node:2.0

https://hub.docker.com/r/microsoft/azure-functions/

あるの!?知らなかった.... さいこうじゃないですかぁ。 docker pull mcr.microsoft.com/azure-functions/base:2.0 docker pull mcr.microsoft.com/azure-functions/dotnet:2.0 docker pull mcr.microsoft.com/azure-functions/node:2.0 docker pull mcr.microsoft.com/azure-functions/python:2.0

VS Code でブレークポイントもはれる。(拡張なし?)

HW部門が使ったVM サーバー上で利用したい -> Kubernetes 上でAzure Functions デプロイして、ワークロードに合わせる。

お金の制約しか無いなら、Azure Functions でもいい。

VS Code のExtensions で、デプロイがさくっとできる。

ここでPortal からURL もらう流れがめっちゃ嫌い..... いい加減なんとかしたいな。

サポートされている言語

  • C# / Java / JavaScript + Python

関数オーケストレーション

従来の方法だと、関数の追加でキューが必要でありえんめんどくさい。

F1 > Queue > F2 > Queue > F3 > Queue > Fn > Queue n

これは今Lambda でめんどくさいやつ。Cloud Functions もか。

Azure DurableFunctions のオーケストレーションがらくなのは、オーケストレーターとアクティビティでコードで表現できる。(C# / Node でサポート)

関数チェーン、非同期API、ファンイン、ファンアウトがサポートされている。

F1 -> F2 -> F3 -> Fn

デモ : GitHub のシークレットをDurable Functions で監視....!

https://github.com/mhoeger/functions-docker-sample 参照

ふつうに有用。AWS Secret の拡張だと限定的なのでまぁいいね。

リポジトリが大きいと時間かかるので、実行時間制限がないDurable functions で対応する。

Durable Functions の callActivity待受けをyield で待ってるあたり、IEnumerator なぁ、コルーチン...

callActivityWithRetry で、リトライ制約をつけることができるのがかなりいい

いい加減Durable Functions のサンプルをリポジトリにあげておくか.... https://github.com/guitarrapc/AzureFunctionsIntroduction

オープンソース

企業が求めるのはオープンソース。

多くの改善をコミュニティからもらった。

Issue 投げてるけどコミットしてないなぁ

日本プロ野球ほげもげでは、毎日大量の写真がプロカメラマンからアップロードされる。 これまでは、毎晩この写真がだれ、とかやっていたがこれを解決した。

写真のタグ付け、自動タグ付けをしようと、Face API でやると30%程度しか自動タグ付けできなかった。(バッタは横無垢と、ピッチャーも正面ではない)

そこで、顔認識、試合データ、Exif解析、シーン解析を組み合わせることで90% まで上がった。で、この組み合わせ = ワークフロー = Durable Functions を使っている。

画像加工 -> 顔認識   -> 推定処理 -> 結果データ
        |           |
        -> 画像分類 ->

おまけ

デモが別途入れ替わっておこなれてるの最高では? 意識変わるし注目するのですごく面白い取り組み感ある

Durable Functions の良い使い方的には、Shibayan のLet's Encrypt がいいと思う https://github.com/shibayan/azure-appservice-letsencrypt