しばやん雑記

ASP.NET Core とメイドさんが大好きなフリーランスのプログラマーのブログ

de:code 2019 フォローアップ (Application Insights / Azure Serverless)

今年の de:code は 2 つのセッションで喋りました。スライドは公開済みで、動画も少しすれば公開されると思いますが、フォローアップとして伝えきれなかったことなどをまとめておきます。

祝 東日本リージョン一般提供! Azure Application Insights 基礎と実践

日本 MS の武田さんと一緒に話しました。Application Insights は良くあるインスタンス数での課金ではなく容量課金で、無料でもほぼフル機能が使えるのが結構良い点だと思います。

App Service を作成する際にはほぼ同時に作られるので、最低限の設定は行われているはずですが、上手く活用できているケースは思ったより少なそうだったので、まずは基本的な部分を中心に話しました。

Application Insights など Azure Monitor で使われている Kusto は結構難しいので、まずは簡単なクエリから書き始めて慣れていけばよいと思います。

Kusto を使うといろんなグラフを描いたり、複雑な条件やデータセットを結合した結果などが使えるので、ログやメトリクスの詳細な調査の時に役立ちます。

とはいえ、まずは用意されている Workbooks とかを活用する方向がおすすめですね。ちなみに OSS です。

Twitter で Application Insights のオーバーヘッドについて質問を貰いましたが、Profiler と Snapshot Debugger 以外は無視してよいレベルです。Snapshot Debugger はメモリダンプを取得する際にプロセスが一瞬停止するので、1 インスタンスで稼働している場合はちょっと辛いと思います。

テレメトリを超高頻度で送っている場合は負荷が高くなるのと、データ量が多すぎてノイズにもなってしまうので、クライアント側でサンプリングを行って対応します。.NET クライアントではデフォルトで Adaptive Sampling が有効になっているので、大体のケースで困ることはないでしょう。

セッション中に少し触れましたが、昔に App Service から Application Insights の設定を行っていた場合、以下のような Site Extension がインストールされていることがあります。

f:id:shiba-yan:20190601163454p:plain

この Site Extension は既にメンテナンスがされておらず、新しく Application Insights を有効にするための機能が App Service に追加されているので、アンインストールしてしまいましょう。場合によっては Snapshot Debugger とかも入っているかもしれませんが、それも不要です。

今は App Service の設定から Application Insights を開けば、更新された拡張を利用できます。

f:id:shiba-yan:20190601163616p:plain

App Service OS にプリインストールされているので、アップデートも完全に自動で安心して使えます。

Azure Serverless を活用したリアルタイム Web のすべて

こっちは Microsoft Corp のチャックさんと一緒に話しました。Azure Serverless のスライドから Service Fabric が無くなっていることをネタにしたり、ASP.NET Ajax Toolkit 周りの現実を話してしまったりと、割と危ない感じになりました。

内容としては「UX の良いアプリケーションを Azure Serverless で楽に作ろうよ」という話でした。

昨今の流れとしては Kubernetes と Istio で Service Mesh 作って Microservices でカッコいいという感じなんですが、あえてその辺りをガン無視して、App Service (Functions) を中心に Event Grid / Cosmos DB などを組み合わせて構築する方向にしました。

セッション中も言いましたが、自分は Fully-managed Service が大好きなので Azure 最高という感じです。

Cosmos DB の Change Feed はかなり応用が利くので、知らないのはもったいないです。そして SignalR Service に関しては既に何回か書いているので、興味があれば参照してください。

そしてチャックさんの作った Noodle Lens のアーキテクチャはめっちゃイケてるので、参考にして欲しい部分です。Cosmos DB + Change Feed を Atomic かつスケーラブルで順序保証がされ、複数のサブスクライバをセットできる高信頼性の Queue として捉えれば、理解がしやすいのかなと思います。