月額300ドルのゲーム分析を所有

分析についてのミーム:--分析は方法を知りません。-自分でやる;  -長い間、大量のデータ。-雲?-あなたは何を食べ過ぎていますか? -1kk DAUで300ドル


ゲーム分析に適した市場には、Mixpanel、Localytics、Flurry、devtodev、deltaDNA、GameAnalyticsなどの多くの製品があります。 それでも、多くのゲームスタジオが決定を下しています。


私は多くのゲーム会社と仕事をしました。 プロジェクトが成長するにつれて、スタジオでは高度な分析シナリオが必要になることに気付きました。 いくつかのゲーム会社がこのアプローチに興味を持つようになった後、一連の2つの記事でそれを文書化することが決定されました。


「なぜ?」、「方法」の質問への回答 そして「いくらですか?」 カットの下にあります。


なんで?


ユニバーサルハーベスターは、簡単な作業に適しています。 しかし、もっと複雑なことをする必要がある場合、その機能は十分ではありません。 たとえば、前述の分析システムにはさまざまな程度の機能制限があります。



既製のソリューションでは、生データにアクセスできません。 たとえば、より詳細な調査を実施する必要がある場合。 機械学習と予測分析を忘れてはなりません。 大量の分析データを使用して、ユーザーの行動の予測、購入の推奨、個人的なオファーなどの機械学習シナリオを試すことができます。


多くの場合、ゲームスタジオは、既存のソリューションに加え、置き換えるのではなく独自のソリューションを構築します。

それでは、分析システムはどのように見えますか?


分析を構築する一般的なアプローチはラムダアーキテクチャであり 、分析はホットパスとコールドパスに分けられます。 ホットな方法は、最小限の遅延で処理する必要があるデータです(オンラインプレイヤーの数、支払いなど)。


コールドパスの後には、定期的に処理されるデータ(日/月/年のレポート)、および長期保存用の生データが続きます。


典型的ななラムダアーキテクチャ


たとえば、これはマーケティングキャンペーンを開始するときに役立ちます。 キャンペーンから何人のユーザーが来たのか、何人のユーザーが支払いをしたのかを確認すると便利です。 これにより、非効率的な広告チャネルをできるだけ早く無効にすることができます。 ゲームのマーケティング予算を考えると、これは多くのお金を節約できます。


定期的なスライス、カスタムレポートなど、その他はすべてコールドパスに関連しています。


ユニバーサルシステムの柔軟性の欠如は、独自のソリューションの開発を促しています。 ゲームが発展するにつれて、ユーザーの行動を詳細に分析する必要性が高まります。 データに基づいてSQLクエリを構築する機能と比較できるユニバーサル分析システムはありません。


したがって、スタジオはソリューションを開発しています。 さらに、特定のプロジェクト向けに解決策が強化されることがよくあります。


システムを開発したスタジオは、システムを常にサポートおよび最適化する必要があることに不満を感じていました。 実際、多くのプロジェクトがある場合、またはそれらが非常に大きい場合、収集されるデータの量は非常に急速に増加しています。 システムの速度が低下し始めており、大幅な最適化の貢献が必要です。


どうやって?


技術的リスク


分析システムの開発は簡単な作業ではありません。
以下は、私が注目したスタジオの要件の例です。



これは完全なリストではありません。


決定方法を知りたいと思ったとき、私は次の優先事項/ウィッシュリストに導かれました。



ゲームのアクティビティは定期的であるため、理想的には、ソリューションはピーク負荷に適応する必要があります。 たとえば、フィッシング中に負荷が何度も増加します。


たとえば、PlayerunknownのBattlegroundを見てください。 日中に顕著なピークが見られます。


Playerunknown'  バトルグラウンドデイリーピークス
ソース: SteamDB


また、年間のアクティブユーザー数(DAU)の増加を見ると、かなり速いペースで進んでいることがわかります。


Playerunknown'  戦場年の成長
ソース: SteamDB


ゲームがヒットしているという事実にもかかわらず、私は通常のプロジェクトで同様の成長チャートを見てきました。 1か月以内に、ユーザー数は2倍から5倍に増加しました。


拡張が容易なソリューションが必要ですが、事前に予約された容量に費用を支払う必要はありませんが、負荷の増加に応じて容量を追加します。


SQLベースのソリューション


額の決定は、何らかの種類のSQLデータベースを取得し、そこにすべてのデータを生の形式で送信することです。 箱から出して、クエリ言語の問題を解決します。


ゲームクライアントからの直接データはストレージに送信できないため、クライアントからのバッファリングイベントを処理してデータベースに送信する別のサービスが必要です。


このスキームでは、アナリストはクエリをデータベースに直接送信する必要がありますが、これは面倒です。 要求が重い場合、データベースが起動する可能性があります。 そのため、純粋にアナリストにはデータベースのレプリカが必要です。


アーキテクチャの例を以下に示します。


SQL Serverアプローチアーキテクチャ


このアーキテクチャには、いくつかの欠点があります。



Apache Stackベースのソリューション


ここでは、Hadoop、Spark、Hive、NiFi、Kafka、Stormなどのスタックが非常に大きくなっています。


Apacheスタックアーキテクチャ
ソース: dzone.com


このようなアーキテクチャは、あらゆる負荷に正確に対応し、可能な限り柔軟になります。 これは、リアルタイムでデータを処理し、コールドデータに対して猛烈なクエリを作成できる完全なソリューションです。


しかし、実際には、要件に示されている負荷はBigDataを呼び出すのが難しく、単一のノードで計算できます。 したがって、Hadoopベースのソリューションは過剰です。


Spark Standaloneを使用すると、はるかに簡単で安価になります。


イベントの受信と前処理には、Sparkの代わりにApache NiFiを使用します。


クラスタ管理により、AKS上のKubernetesを大幅に簡素化できます。


長所



短所



クラウドプラットフォームソリューション


Azure Event Hubs


Azure Event Hubsは、最も単純な高帯域幅イベントハブです。 クラウドプラットフォームから-顧客から大量の分析を受信するのに最適なオプション。


長所



短所



HDInsight


HDInsightは、Sparkなどの特定の製品とともに、すぐに使用できるHadoopクラスターを展開できるプラットフォームです。 このようなデータ量では過剰であり、非常に高価なので、すぐに廃棄できます。


Azure Databricks


Azure Databricksは、クラウド内のステロイドに対するこのようなスパークです。 DatabricksはSparkの著者による製品です。 2つの製品の比較については、 こちらをご覧ください 。 私が個人的に好きだったグッズの:



長所



短所



Azure Data Lake Analytics(ADLA)


Azure Data Lake AnalyticsはMicrosoftのクラウドプラットフォームであり、Databricksに非常によく似ています。


私の意見では、請求はほぼ同じですが、もう少し明確です。 クラスターの概念も、ノードとそのサイズの概念もまったくありません。 抽象分析ユニット(AU)があります。 1 AU = 1つの抽象ノードの動作時間と言えます。


ADLAはマイクロソフト製品であるため、エコシステムとの統合性が向上しています。 たとえば、ADLAのジョブは、AzureポータルとVisual Studioの両方で作成できます。 ローカルADLAエミュレーターがあります。ビッグデータで実行する前に、マシンでジョブをデバッグできます。 カスタムC#コードの通常のデバッグがサポートされ、ブレークポイントがあります。


ジョブの並列化では、アプローチはデータブリックとは少し異なります。 クラスターの概念がないため、ジョブを開始するときに、割り当てられたAUの数を指定できます。 したがって、あなたはあなた自身がどれくらいの仕事を並行させるべきかを選ぶことができます。


クールな機能には、詳細なジョブプランがあります。 処理されたデータの量と量、各段階で処理された量を示します。 これは、最適化とデバッグのための強力なツールです。


ジョブの主な言語はU-SQLです。 カスタムコードについては、C#のみがあります。 しかし、多くの人はこれを利点と考えています。


長所



短所



Azure Stream Analytics


ストリームイベントを処理するためのクラウドベースのプラットフォーム。 かなり便利なもの。 すぐに使えるのは、ポータルで直接デバッグ/テストするためのツールです。 T-SQLダイアレクトで話します。 集約用にさまざまなタイプのウィンドウをサポートします。 入力と出力の両方で多くのデータソースを使用できます。


すべての利点にもかかわらず、複雑なものにはほとんど適していません。 生産性または価値のいずれかに直面します。


考慮に値する機能は、PowerBIとの統合です。これにより、数回クリックするだけでリアルタイムの統計情報を構成できます。


長所:



短所:



ハイブリッドソリューション


クラウドプラットフォームとOSSソリューションの組み合わせを禁止する人はいません。 たとえば、Apache Kafka / NiFiの代わりに、イベント変換用の追加ロジックがない場合は、Azure Event Hubsを使用できます。


他のすべてについては、例えば、Apache Sparkから離れることができます。


特定の番号


価格についての可能性を見つけました。 以下は、スタジオの1つで行った計算の例です。


Azure Pricing Calculatorを使用してコストを計算しました。


西ヨーロッパ地域のコールドデータを操作するための価格を計算しました。


簡単にするために、計算能力のみを考慮しました。 リポジトリのサイズは特定のプロジェクトに大きく依存しているため、リポジトリを考慮しませんでした。


この段階では、比較のためにバッファリングシステムの価格を表に含めました。 開始する最小クラスター/サイズの価格があります。


ネイキッドVMでのApacheスタックのコスト


解決策価格
スパーク204ドル
カフカ219ドル
合計433ドル

ADLAベースのプラットフォームソリューションのコスト


解決策価格
Azure Data Lake Analytics108ドル
Azure Event Hubs11ドル
合計119ドル

Azure Databricksプラットフォームプラットフォームコスト


解決策価格
Azure Databriks292ドル
Azure Event Hubs11ドル
合計303ドル

その他の計算


ベアVM上のKafka


多かれ少なかれ信頼できるソリューションを提供するには、少なくとも3つのノードが必要です。


1 x Zookeeper (Standard A1) = $43.8 / month
2 x Kafka Nodes (Standard A2) = $175.2 / month
Total: $219


公平に言うと、このようなKafka構成は、要件で必要とされるよりもはるかに多くの帯域幅を消費することに注意する価値があります。 したがって、より高い帯域幅が必要な場合、Kafkaはより収益性が高くなります。


ベアVMでのSpark


話し合う価値のある最小構成は、4 vCPU、14GB RAMです。
最も安価なVMの中で、標準D3v2を選択しました。


1 x Standard D3v2 = $203.67 / month


Azure Databricks


Databricksには、標準とサーバーレス(ベータ)の2種類のクラスターがあります。


Azure Databricksの標準クラスターには、少なくとも2つのノードが含まれます。



正直なところ、ここではサーバーレスの意味がわかりませんが、このタイプについて私が気づいたことは次のとおりです。



Databricksには2つの射撃場も含まれており、Premiumにはノートブックのアクセス制御などの機能がいくつかあります。 しかし、私は最低限の標準を検討しました。


計算機で数えてみると、1つの興味深い点に遭遇しました-Driverノードがそこにありません。 その結果、クラスターの最小サイズは2ノードであるため、計算機のコストは完全ではありません。 だから私はペンを数えました。


Databricks自体はDBU(コンピューティングパワー)に対して請求されます。 各タイプのノードには、1時間ごとに独自のDBUがあります。


ワーカーの場合、最小DSv2(\ $ 0.272 /時間)を使用しました。これは0.75 DBUに相当します。
ドライバーの場合、最も安いF4インスタンス(\ $ 0.227 /時間)を使用しました。これは0.5 DBUに相当します。


 DSv2 = ($0.272 + $0.2 * 0.75 DBU  ) * 730  = $308.06 F4 = ($0.227 + $0.2 * 0.75 DBU  ) * 730  = $275.21 Total: $583.27 

この計算は、この小さなクラスターの24時間365日の作業に基づいています。 しかし、実際には、自動終了の機能のおかげで、この数値は大幅に削減できます。 クラスターの最小アイドルタイムアウトは10分です。


クラスターで1日12時間動作するという公理(浮動時間を含むフルタイム)を採用した場合、コストは既に$583 * 0.5 = $291.5ます。


アナリストが作業時間の100%をクラスターに使用しない場合、数値はさらに少なくなる可能性があります。


Azure Data Lake Analytics

ヨーロッパの価格\ 1 アナリティクスユニットあたり2ドル。
分析ユニットは基本的に1つのノードです。 ノードの1時間あたり2ドルは少し高価ですが、このビジネスは毎分課金されます。 通常、ジョブには少なくとも1分かかります。


Jobが大きい場合、それを並列化するにはより多くのAUが必要です。


それから私は、空に指を突くのはあまり良くないことに気づきました。 したがって、以前は小さなテストを実施しました。 100 MBのJSONファイルを1 GBだけ生成し、脇に置いて、Azure Data Lake Analyticsで簡単なデータ集約リクエストを実行し、1 GBの処理にかかる時間を確認しました。 0.09 AU / hになりました。


これで、データ処理のコストを大まかに計算できます。 1か月あたり600 GBのデータを蓄積するとします。 このすべてのデータを少なくとも1回処理する必要があります。


600 * 0.09AU * $2 = $108


これらは、分析の最小構成のかなり粗雑な計算です。


簡単な要約


SQLデータベースに基づくソリューションには、十分な柔軟性とパフォーマンスがありません。


Apache Stackベースのソリューションは非常に強力で柔軟性がありますが、示された要件には少し高価です。 さらに、ハンドルによるクラスターサポートが必要です。 これはオープンソースなので、ベンダーロックは安全です。 さらに、Apache Stackは、コールドデータとホットデータの処理という2つのタスクを同時にカバーできます。これはプラスです。


管理の難しさを恐れないのであれば、これが理想的な解決策です。
大量のアナリティクスを常に使用している場合は、独自のクラスターを作成する方が収益性の高いソリューションになります。


クラウドプラットフォームには、いくつかのソリューションがあります。


イベントのバッファリング-EventHub。 少量の場合、カフカよりも安くなります。


コールドデータの処理には、2つの適切なオプションがあります。



インフラストラクチャをサポートするリソースがなく、かなり安価なスタートが必要な場合、これらのオプションは非常に魅力的です。


Azure Databricksは、大量のジョブが継続的に実行される場合、より安価なオプションになります。


示されたオプションをいくつかのスタジオに提供したことで、多くはプラットフォームソリューションに興味を持つようになりました。 これらは、不必要な管理作業なしで、既存のプロセスやシステムに非常に簡単に統合できます。


以下では、Azure Data Lake Analyticsプラットフォームソリューションに基づいた詳細なアーキテクチャの概要を確認します。


Azure Event Hubのゲーム分析/ Azure Functions / Azure Data Factory / Azure Data Lake Analytics / Azure Stream Analytics / Power BI


建築


長所と短所を見積もり、Azureでのラムダアーキテクチャの実装を取り上げました。 次のようになります。


Azure Lambdaのアーキテクチャ


Azure Event Hubはキューであり、大量のメッセージを受信できるバッファーです。 また、生データをストレージに書き込む便利な機能もあります。 この場合、Azure Data Lake Storage(ADLS)。


Azure Data Lake Storeは、HDFSに基づくストレージです。 Azure Data Lake Analyticsサービスと組み合わせて使用​​します。


Azure Data Lake Analytics-分析サービス。 さまざまなソースからのデータに対してU-SQLクエリを構築できます。 最速のソースはADLSです。 特に難しいケースでは、C#でクエリ用のカスタムコードを作成できます。 Visual Studioには、詳細なクエリプロファイリングを備えた便利なツールボックスがあります。


Azure Stream Analyticsは、データフローを処理するためのサービスです。 この場合、ホットデータを集約し、PowerBでの視覚化のために転送するために使用されます


Azure Functions-サーバーレスアプリケーションをホストするためのサービス。 このアーキテクチャは、イベントキューを「カスタム」処理するために使用されます。


Azure Data Factoryはかなり物議を醸すツールです。 データパイプラインを整理できます。 この特定のアーキテクチャでは、バッチの起動に使用されます。 つまり、ADLAでクエリを起動し、特定の時間のスライスを計算します。


PowerBIはビジネスインテリジェンスツールです。 ゲーム内のすべてのダッシュボードを整理するために使用されます。 リアルタイムデータを表示できます。


同じ決定ですが、異なる視点で。


Azure Lambdaアーキテクチャの全体像


ここでは、Event Hubsクライアントで直接またはGateway APIを介してクライアントができることを明確に見ることができます。 同様に、Event Hubsではサーバー分析をスローできます。


イベントキュー処理


コールドデータ


EventHubに入った後、イベントはコールドとホットの2つの方法で進みます。 コールドパスはADLSストレージにつながります。 イベントを保存するためのオプションがいくつかあります。


EventHubのキャプチャ

最も簡単な方法は、EventHubのキャプチャ機能を使用することです。 ハブに入ってくる生データをストレージの1つ(Azure StorageまたはADLS)に自動的に保存できます。 この機能を使用すると、ファイルの命名パターンをカスタマイズできますが、非常に制限されています。


機能は便利ですが、すべての場合に適しているわけではありません。 たとえば、ファイルのパターンで使用される時間がEventHubのイベントの到着時間に対応するため、私には向いていませんでした。


実際、ゲームでは、イベントは顧客が蓄積し、パックで送信できます。 この場合、イベントは間違ったファイルに保存されます。


ファイル構造でデータを整理することは、ADLAのパフォーマンスにとって重要です。 ファイルを開く/閉じるオーバーヘッドは非常に高いため、ADLAは大きなファイルを操作するときに最も効果的です。 経験的に、30〜50 MBの最適なサイズを見つけました。 負荷によっては、ファイルを日/時間で分割する必要がある場合があります。

もう1つの理由は、イベント自体の種類に応じて、フォルダーにイベントを配置する機能がないことです。 分析に関しては、クエリは可能な限り効率的である必要があります。 不要なデータを除外する最善の方法は、ファイルをまったく読み取らないことです。


タイプごとにイベントがファイル内で混在している場合(たとえば、許可イベントや経済イベント)、不要なデータの破棄に分析計算能力の一部が費やされます。


長所:



短所:



ストリーム分析(コールドデータ)

Stream Analyticsを使用すると、SQLのようなクエリをイベントのストリームに書き込むことができます。 データソースとしてのEventHubと出力としてのADLSのサポートがあります。 これらのリクエストのおかげで、既に変換/集約されたデータをストレージに追加できます。


同様に、ファイル命名機能がわずかです。


長所:



短所:



Azure Functions(コールドデータ)

最も柔軟なソリューション。 Azure FunctionsにはEventHubのバインディングがあり、キューの解析に煩わされる必要はありません。 また、Azure Functionsは自動的にスケーリングされます。


イベントの到着ではなく、イベントが生成された時間に対応するフォルダーにイベントを配置することができたため、この決定に基づいて停止しました。 また、イベントの種類に応じて、イベント自体がフォルダーに散らばっていました。


請求には2つのオプションがあります。



長所:



短所:



ホットデータ


ストリーム分析(ホットデータ)

繰り返しになりますが、Stream Analyticsはホットデータを集約するための最も簡単なソリューションです。 長所と短所は、寒い方法とほぼ同じです。 Stream Analyticsの主な利点は、PowerBIとの統合です。 ホットデータは「リアルタイム」で出荷できます。


長所:



短所:



Azure Functions(ホットデータ)

すべてがコールドデータと同じです。 詳細は説明しません。


長所:



短所:



完全なソリューションの価格を考慮します


したがって、負荷の計算は1秒あたり1000イベントです。


解決策価格
Azure EventHub10.95ドル
Azure Stream Analytics80.30ドル
Azure関数73.00ドル
Azure Data Lake Store26.29ドル
Azure Data Lake Analytics108.00ドル

ほとんどの場合、Stream Analyticsは必要ない場合があるため、合計は217ドルから297ドルになります


今、私がどう思ったかについて。 上記の計算からAzure Data Lake Analyticsのコストを取りました。


Azure Event Hubの計算


Azure Event Hub-100万メッセージごとに課金され、1秒あたりの帯域幅も課金されます。


スループットユニット(TU)のスループットは、1000イベント/秒または1MB /秒のいずれか早いほうです。


1秒あたり1000メッセージをカウントします。つまり、1 TUが必要です。 執筆時点でのTUの価格は、 Basic Tierの場合$0.015です。 730時間の月に信じられています。


1 TU * $0.015 * 730 = $10.95


その月の同じ負荷を考慮して、月あたりのメッセージ数を考慮します(これは起こりません)。


1000 * 3600 * 730 = 2 628 000 000


着信イベントの数の価格を考慮します。 執筆時点での西ヨーロッパの価格は、イベント100万件あたり$0.028


2 628 000 000 / 1 000 000 * $0.028 = $73.584


合計$10.95 + $73.584 = $84.534


何かがうまくいきます。 通常、イベントは非常に小さいため、これは有益ではありません。


複数のイベントを1つにパックするためのアルゴリズムをクライアントで記述する必要があります(ほとんどの場合、そうする)。 これにより、イベントの数が減るだけでなく、負荷がさらに増加し​​て必要なTUの数減ります


既存のシステムから実際のイベントをアンロードし、平均サイズ-0.24KBを計算しました。 EventHubで許可される最大イベントサイズは256KBです。 したがって、約1000個のイベントを1つにまとめることができます。


ただし、微妙な点があります。最大イベントサイズは256KBですが、 64KBの倍数で請求されます 。 つまり、最も圧縮されたメッセージは4つのイベントとしてカウントされます。


この最適化を考慮して再計算します。


$73.584 / 1000 * 4 = $0.294


これはすでにはるかに優れています。 次に、必要な帯域幅を計算しましょう。


1000 events per second / 1000 events in batch * 256KB = 256KB/s


この計算は別の重要な機能を示しています。 イベントのバッチ処理を行わない場合、2.5MB /秒が必要になり、3TUが必要になります。 しかし、1秒間に1000個のイベントを送信するため、1TUだけで十分だと考えました。 しかし、帯域幅の制限は早くなります。


いずれにせよ、3の代わりに1 TUを満たすことができます! そして、計算は変更できません。


TUの価格を考慮します。


合計$10.95 + $0.294 = $11.244ます。


イベントパッケージを除く価格と比較: (1 - $11.244 / $84.534) * 100 = 86.7%
86%の収益性向上!


このアーキテクチャを実装するときは、イベントパッケージを考慮する必要があります。


Azure Data Lake Storeの計算


それでは、ストレージサイズの増加の大まかな順序を推定しましょう。 1秒あたり1000イベントの負荷で256KB / sを取得することを既に計算しました。
256 * 3600 * 730 = 657 000 M = 641


これはかなり大きな数字です。 おそらく、1秒あたり1000イベントは時刻の一部に過ぎませんが、それでも最悪のオプションを計算する価値があります。


641 * $0.04 = $25.64


ADLSは、10,000件のファイルトランザクションごとに請求されます。 トランザクションは、ファイルに対する任意のアクションです:読み取り、書き込み、削除。 幸いなことに、削除は無料です=)。


データを記録するだけの価値があるものを計算しましょう。 前の計算を使用して、1か月あたり2,628,000,000イベントを収集しますが、イベントごとに1,000をパックするため、2,628,000イベントになります。


2 628 000 / 10000 * $0.05 = $13.14


それほど高価ではありませんが、1000個のイベントをまとめて記録することで削減できます。 パッケージングは​​クライアントアプリケーションレベルで行い、EventHubのイベント処理レベルでバッチ記録する必要があります。


$13.14 / 1000 = $0.0134


これは悪くありません。 ただし、EventHubキューを解析するときは、バッチ処理を検討する必要があります。


合計$26.28 + $0.0134 = $26.2934


Azure関数の計算


Azure Functionsの使用は、コールドとホットの両方の方法で可能です。 同様に、単一のアプリケーションとして、または個別にデプロイできます。


それらが1つのアプリケーションとしてスピンするときに、最も簡単なオプションが見つかります。


したがって、1秒あたり1000イベントの負荷があります。 これはそれほどではありませんが、少しではありません。 前に、Azure Functionsはイベントをバッチで処理できると述べました。これは、イベントを個別に処理するよりも効率的に実行されます。


バッチサイズを1000イベントにすると、負荷は1000 / 1000 = 1 ます。 なんてばかげた図。


したがって、すべてを1つのアプリケーションにデプロイでき、1つの最小インスタンスS1がこの負荷を引き出します。 その費用は73ドルです。 もちろん、B1を使用することもできますが、さらに安くなりますが、私は安全で、S1に落ち着きます。


ストリーム分析の計算


Stream Analyticsは、スライディングウィンドウの仕組みが必要な高度なリアルタイムシナリオにのみ必要です。 これはゲームではかなりまれなシナリオです。主な統計は1日あたりのウィンドウに基づいて計算され、翌日にリセットされるためです。


Stream Analyticsが必要な場合、ガイドラインでは、6つのストリーミングユニット(SU)のサイズから開始することをお勧めします。これは、強調表示された1つのノードに相当します。 次に、作業負荷を確認し、それに応じてSUをスケーリングする必要があります。


私の経験では、クエリにDISTINCTが含まれていない場合、またはウィンドウがかなり小さい(時間)場合、SUは1つで十分です。


1 SU * $0.110 * 730 hours = $80.3


まとめ


市場で提供されている既存のソリューションは非常に強力です。 ただし、高度なタスクにはまだ十分ではなく、常にパフォーマンスの制限またはカスタマイズの制限があります。 そして、中規模のゲームでさえ、すぐにそれらに遭遇し始めます。 これにより、独自のソリューションの開発が促進されます。


技術スタックを選択する前に立って、価格を考えました。 強力なApacheスタックは、あらゆるタスクと負荷に対処できますが、手動で管理する必要があります。 簡単にスケーリングできない場合、特にマシンに24時間年中無休で負荷がかかっていない場合は、非常に高価です。 さらに、スタックに精通していない場合、そのようなソリューションは安価で迅速なスタートには機能しません。


インフラストラクチャの開発とサポートに投資したくない場合は、クラウドプラットフォームを検討する必要があります。 ゲーム分析には、主に定期的な計算が必要です。 たとえば、1日に1回。 したがって、使用した分のみに料金を支払う能力がまさにポイントです。


最も安価で最速のスタートは、ADLAベースのソリューションです。 よりリッチで柔軟なソリューションは、Azure Databricksです。


ハイブリッドオプションもあります。


既存のプロセスおよびシステムに統合するための最も簡単なオプションとして、優先クラウドソリューションと連携したスタジオ。


クラウドサービスを使用する場合、ソリューションの構築には細心の注意が必要です。 価格設定の原則を検討し、コストを削減するために必要な最適化を検討する必要があります。


その結果、計算では、1秒あたり1,000クエリ(平均)に対して、1か月あたり300ドルでカスタム分析システムを取得できることが示されています。 これはかなり安いです。 この場合、ソリューションの開発に投資する必要はありません。 興味深いことに、ADLAオプションは、他のソリューションとは異なり、アイドル時にまったくお金を消費しません。 したがって、開発およびテストスクリプトにとって非常に興味深いものです。


次の記事では、実装の技術的な側面について詳しく説明します。


不快な瞬間についてお話しします。 たとえば、ゲームシナリオのAzure Stream Analyticsのパフォーマンスはあまりよくありませんでした。 多くの要求はDAUに関連付けられており、その計算にはDISTINCTを介した一意の要求の計算が必要です。 それは生産性を殺し、多くのお金を注ぎました。 Azure Functions + Redisの簡単なコードで問題を解決しました。


好き、欲しい、欲しい、欲しい


— Microsoft, . , , . .


, , , , , . . .


, , .



Source: https://habr.com/ru/post/J351206/


All Articles