次の方法で共有


非リアルタイム ダッシュボードのリファレンス アーキテクチャ

このリファレンス アーキテクチャは、Azure 上で構築できるシンプルな分析パイプラインを表したものです。 これは、追跡対象のデータをリアルタイムに分析するのではなく、定期的なレビュー セッションのみ (1 日 1 回、週 1 回、2 週に 1 回、月 1 回など) を実行する場合にも使用できます。 プレゼンテーション層は、自由にカスタマイズできるダッシュボードです。 これは、ゲームの開発中や運用時に使用できます。

小規模での分析データ収集

この記事では、GitHub のこのサンプルで使用されているアーキテクチャについて説明します。 このリファレンス アーキテクチャのコードはガイダンスの例にすぎず、運用環境で使用するにはコードの最適化が必要な場合があることに注意してください。

アーキテクチャの図

N非リアルタイム ダッシュボードのリファレンス アーキテクチャ

関連するサービス

  • Azure Functions - クライアント デバイスからイベントを受信する API として使用されます。
  • Azure Event Hubs - 分析パイプライン向けにカスタマイズされたサービスで、構成や管理オーバーヘッドをほとんど必要とせず、簡単に使用できます。 また、イベントをリアルタイムに処理することを後から決定した場合にも使用できます。
  • Azure Databricks - Azure Event Hubs Capture (AVRO 形式) から JSON ファイルにデータを変換します。また、データを Power BI と互換性のある CSV ファイルに変換することもできます。 非常に小規模な場合を除き、Azure Event Hubs から Azure Blob Storage へとデータを高パフォーマンスにストリーミングすることは、決して簡単ではありません。
  • Azure Blob Storage - 大量の非構造化データを保存するために最適化されています。
  • Power BI - 完全にカスタマイズ可能なダッシュボードです。 なお、Azure は IBM SPSS や Tableau などの他のデータ ビジュアライゼーション製品と統合することができますが、現在のところ、Azure Blob Storage との直接接続はできないことに注意してください。 これらのデータ ビジュアライゼーション製品の使用に関心がある場合は、Azure SQL Data Warehouse を利用した下記の代替アーキテクチャを参照してください。

ステップ バイ ステップの手順

  1. クライアント デバイスから Azure Function を呼び出します。 別の方法として、仮想マシンとロード バランサーを使用することもできます。
  2. Azure Function から Azure Event Hubs にデータを転送します。
  3. そのまま使える Event Hub Capture を使用して、データを含んだ AVRO ファイルが生成されます。
  4. Azure Databricks ジョブにより、AVRO ファイルからデータが読み取られ、ペイロード内の JSON イベントが抽出されます。 Azure Databricks によってデータの準備が行われ、出力 (CSV ファイル) が Azure Blob Storage にデポジットされます。
  5. Power BI によって、Azure Blob Storage に格納されている CSV ファイルが読み取られ、ダッシュボード/レポートに表示されます。

デプロイ テンプレート

プロジェクトを Azure サブスクリプションにデプロイするには、次のボタンをクリックします。

この操作を実行すると、Azure サブスクリプションに対する azuredeploy.json ARM テンプレート ファイルのテンプレート デプロイがトリガーされ、必要な Azure リソースが作成されます。 これにより、Azure アカウントの料金が発生する場合があります。

Azure サービスの名前付け規則と制限事項をまとめたセクションが含まれる一般的なガイドライン ドキュメントを参照してください。

注意

ARM テンプレートの動作に興味がある場合は、このリファレンス アーキテクチャで利用されている各サービスの Azure Resource Manager テンプレートのドキュメントを参照してください。

次の Function アプリケーション設定を追加して、サンプル プロジェクトが Azure サービスに接続できるようにします。

  • EVENTHUB_CONNECTION_STRING - 作成された Azure Event Hub 名前空間への接続文字列

次に、ポータルまたは API を使用して Azure Databricks クラスターを起動します。

その後、DBFS を使用して Azure Storage アカウントをマウントするか、API を直接使用するためのアクセス キーを設定します。 詳細については、Azure Databricks から Azure Blob Storage にアクセスする方法に関するドキュメントを参照してください。 推奨の方法は、シークレットを利用し、コンテナーまたはコンテナー内のフォルダーをマウントした後、ローカル ファイルのようにファイルにアクセスする方法です。

最後に、作成した Azure Databricks クラスターに移動し、使用するフォルダーに移動 (または新しいフォルダーを作成) して、[インポート][URL] の順に選択した後、こちらのスクリプトを使用して Notebook をインポートします。

ヒント

Azure Functions をローカル環境で実行するには、local.settings.json ファイルをこれらの同じアプリ設定で更新します。

実装の詳細

バージョン番号を付けておくと、追跡対象のパラメーターが今後のゲーム更新で進化した場合に便利です。

Event Hub のパーティション

Azure Event Hub の要件と、パーティション カウントの選択に関する経験則については、一般的なガイドラインのドキュメントを参照してください。

BLOB ストレージのパフォーマンスと制限事項

Azure ストレージ アカウントの制限事項と、調整を回避する方法の詳細については、一般的なガイドラインのドキュメントを参照してください。

API

このリファレンス アーキテクチャでは、API は Azure Function (サーバーレス) を介して実装されるため、負荷分散とスケーリング サーバーを考慮する必要はありません。 Azure Function の入力は HTTP トリガーになり、出力は Event Hub になります。

[return: EventHub("ehnrtanalytics-output", Connection = "EventHubConnectionAppSetting")]
    public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)

Azure Databricks のジョブ

目標は、Azure Databricks クラスターの実行時間の長さを最短に抑えることです。 非アクティブになった数分後にクラスターを停止するようにセットアップします。 その後、Azure Databricks Notebook のスケジュールを "毎日" などと設定します。

Power BI ダッシュボード

Azure Blob Storage から情報を取得し、データを視覚化用に準備する手順は次のとおりです。

  1. Power BI を開きます。
  2. [データの取得] を選択し、[Azure] を選択します。
  3. [Azure Blob Storage] を選択します。
  4. URL を尋ねるメッセージが表示されます。URL は Azure portal で確認できます。
    1. リソース グループを開きます。
    2. [ストレージ アカウント] を選択します。
    3. [BLOB] を選択します (左側のメニューの [Blob service] の下にあります)。
    4. パスを選択します (この例では ehcapture-analytics)
    5. 最後に、[プロパティ] セクションで URL を確認します。
  5. ストレージ アカウント キーを尋ねるメッセージが表示されます (Azure portal でも確認できます)。
    1. リソース グループを開きます。
    2. [ストレージ アカウント] を選択します。
    3. [アクセス キー] を選択します (左側のメニューの [設定] の下にあります)。
    4. キーのみをコピーします (接続文字列ではなく)。
  6. その後、Power BI が Azure Blob Storage と接続され、検出された一部のファイルのプレビューが表示されます。 [読み込み] をクリックします。
  7. データをメッセージングするには:
    1. [クエリの編集] を選択します。
    2. [名前] 列を [CSV] に絞り込んで、それらの種類のファイルのみが表示されるようにします。
    3. [コンテンツ] 列から、[ファイルの結合] アイコン (2 つの下向きの矢印) をクリックします。
    4. ポップアップ ダイアログが表示されたら、[OK] ボタンをクリックします。
    5. 閉じて適用します。
  8. クエリに表示するフィールドを選択し、利用可能な任意の Power BI ビジュアライゼーションで、それらをダッシュボードに追加していきます。

セキュリティに関する考慮事項

Event Hub や Cognitive Services の接続文字列を Function のソースにハードコードすることはしないでください。 代わりに、少なくとも、関数アプリの設定を利用するか、より強力なセキュリティのためには、代わりに Key Vault を使用します。 キー コンテナーを作成する方法、関数でマネージド サービス ID を使用する方法、および最後に関数から Key Vault に格納されているシークレットを読み取る方法について説明されているチュートリアルがあります。

Event Hub の認証とセキュリティ モデルの概要に関する記事を確認し、その内容を実践して、チャット サーバーが Event Hub と通信できるようにしてください。

最適化に関する考慮事項

Azure Blob Storage に格納されている BLOB は、"よりクールな" ストレージ層 (ホットからクール、ホットからアーカイブ、またはクールからアーカイブ) に移行することもできます。また、Azure Blob Storage のライフサイクル管理ポリシーを使用して、ライフサイクルの終了時に BLOB を削除し、パフォーマンスとコストを最適化することもできます。

代替手段

Azure DatabricksAzure HDInsight に置き換えることを検討することもできます。 その場合、主な違いは、Azure Databricks ではクラスターのスピンアップ/ダウンが自動的に処理されるのに対し、Azure HDInsight では、ユーザーが自分で対処する必要があるという点です。

大規模での分析データ収集

アーキテクチャの図

LAzure SQL Data Warehouse での大規模な分析

実装の詳細

Azure Event Hubs CaptureAzure Event Grid を使用して、プレイヤーから送信されたデータを Azure SQL Data Warehouse 内に取得することができます。 詳細な手順については、Event Grid と Azure Functions を使用してキャプチャーされた Event Hubs データを SQL Data Warehouse に移行する方法に関する記事 (Power BI と SQL Data Warehouse の使用方法を含む) を参照してください。

デプロイ テンプレート

プロジェクトを Azure サブスクリプションにデプロイするには、次のボタンをクリックします。

Deploy using an Azure Resource Manager template

この操作を実行すると、Azure サブスクリプションに対する EventHubsDataMigration.json ARM テンプレート ファイルのテンプレート デプロイがトリガーされ、必要な Azure リソースが作成されます。

Azure サービスの名前付け規則と制限事項をまとめた記事が含まれる一般的なガイドライン ドキュメントを参照してください。

Azure Databricks と Azure HDInsight の連携

必要であれば、新しいスキルやツールを利用するために、データをウェアハウスの外部で準備することもできます。

  • Azure Databricksを使用すると、データ サイエンティストは Databricks Runtime をさまざまな言語でフルに利用し、ゲームの成長に合わせて拡張できる ETL (抽出、変換、読み込み) プロセスを開発したり、データを Azure SQL Data Warehouse に直接書き込むことができます。
  • また、Azure SQL Data Warehouse と Azure HDInsight を連携させることにより、ゲームによって生成された構造化データや非構造化データに対し、高速でインタラクティブな SQL クエリを実行することもできます。

その他のリソースとサンプル

価格設定

Azure サブスクリプションをお持ちでない場合は、無料アカウント を作成して 12 か月間の無料サービスの利用を開始できます。 それらのサービスの制限を超えない限り、Azure 無料アカウントで無償で提供されているサービスに対して料金が発生することはありません。 Azure Portal または使用状況ファイルを通じて使用状況を確認する方法について説明します。

これらのリファレンス アーキテクチャの実行中に使用される Azure サービスのコストはユーザーが負担します。 その合計は使用状況によって異なります。 リファレンス アーキテクチャで使用されていた各サービスの価格は、Web ページで確認ください。

また、Azure の料金計算ツールを使用して、使用する予定の Azure サービスのコストを構成および見積もることもできます。 価格は概算であり、実際の価格の見積もりを意図したものではありません。 実際の価格は、購入日、支払い通貨、Microsoft との契約の種類によって異なります。 価格の詳細については、Microsoft の営業担当者にお問い合わせください。