今年の 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 がインストールされていることがあります。
この Site Extension は既にメンテナンスがされておらず、新しく Application Insights を有効にするための機能が App Service に追加されているので、アンインストールしてしまいましょう。場合によっては Snapshot Debugger とかも入っているかもしれませんが、それも不要です。
今は App Service の設定から Application Insights を開けば、更新された拡張を利用できます。
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 として捉えれば、理解がしやすいのかなと思います。