事例研究7 - Proseware, Inc.
背景
あなたはProseware社の開発者です。Proseware社の内部サービス、外部サービス、およびアプリケーションに一連のガバナンスポリシーを適用するアプリケーションを開発しています。このアプリケーションは、共通機能のための共有ライブラリも提供します。
要件
ポリシーサービス
「ポリシー サービス」という名前のステートフルな ASP.NET Core 2.1 Web アプリケーションを開発し、Azure App Service Web アプリにデプロイします。このアプリケーションは、Azure Event Grid からのイベントに反応し、それらのイベントに基づいてポリシー アクションを実行します。
アプリケーションは、すべての Application Insights テレメトリに Event Grid イベント ID フィールドを含める必要があります。
ポリシーサービスは、実行するポリシーアクションの数に応じて自動的にスケーリングするために、Application Insightsを使用する必要があります。
ポリシー
ログポリシー
すべての Azure App Service Web アプリは、ログを Azure Blob ストレージに書き込む必要があります。すべてのログ ファイルは、logdrop という名前のコンテナーに保存する必要があります。ログは、コンテナー内に 15 日間保持する必要があります。
認証イベント
認証イベントは、ユーザーのサインインとサインアウトを監視するために使用されます。すべての認証イベントは、ポリシーサービスによって処理される必要があります。サインアウトは、できるだけ迅速に処理されなければなりません。
ポリシーライブラリ
PolicyLib という名前の共有ライブラリがあり、このライブラリにはすべての ASP.NET Core Web サービスおよびアプリケーションに共通する機能が含まれています。PolicyLib ライブラリは次の要件を満たす必要があります。
* Application Insightsのテレメトリから、ユーザー以外の操作を除外します。
* Webサービスが自身をスケーリングできるようにするメソッドを提供する
* スケーリング操作がアプリケーションの使用を妨げないようにする
他の
異常検知サービス
ログ情報を分析して異常を検出する異常検知サービスがあります。これはAzure Machine Learningモデルとして実装されており、Webサービスとしてデプロイされています。
異常が検出された場合、HTTP Webhookを使用して管理者にメールを送信するAzure Functionが呼び出されます。
健康状態のモニタリング
すべてのWebアプリケーションとサービスは、/healthサービスエンドポイントでヘルスモニタリング機能を備えています。
保険金損失
ポリシーサービスをデプロイする際、デプロイ中に適用処理中だったポリシーは適用されない場合があります。
パフォーマンスの問題
負荷が高い場合、異常検知サービスは処理速度が低下し、接続を拒否します。
通知遅延
ユーザーからは、異常検知メールが異常検知から数分後に届くことがあるとの報告がある。
アプリファイルの関連部分を以下に示します。行番号は参考のために記載されており、各行番号には、該当するファイルを示す2文字の接頭辞が付いています。


アプリファイルの関連部分を以下に示します。行番号は参考のために記載されており、各行番号には、該当するファイルを示す2文字の接頭辞が付いています。

通知の遅延問題を解決する必要があります。
どの2つの行動をとるべきでしょうか?それぞれの正解は、解決策の一部を示しています。
注:正解ごとに1ポイントが加算されます。
正解:B,D
Always On enables waking up on HTTP trigger, but does not prevent the exceeding the max time out time of 230 seconds.
If your function app is on the Consumption plan, there can be up to a 10-minute delay in processing new blobs if a function app has gone idle. To avoid this latency, you can switch to an App Service plan with Always On enabled. You can also use an Event Grid trigger with your Blob storage account.
References:
https://docs.microsoft.com/en-us/azure/azure-functions/dedicated-plan#always-on
https://github.com/Azure/Azure-Functions/wiki/Enable-Always-On-when-running-on-dedicated-App-Service-Plan
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-event-overview
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=csharp#event-grid-trigger