375万人の登録者数を誇るチャットシステムを1日の午後だけで構築した

Momento Topicsは、私のエンタープライズレベルのPerfテストに見事に合格しました。サーバーレス、スケールレディのPub/Subサービスを今すぐご利用ください。

私たちは最近、簡単で高速なサーバーレスPub/SubサービスであるMomento Topicsを立ち上げました。あるお客様から、375万人のサブスクライバーを持つゲームチャットをサポートできるかどうか尋ねられました!次の大きなゲームを立ち上げるにせよ、次のホットなジェネレーティブAIチャットボットを立ち上げるにせよ、チャットプラットフォームはこれまで以上に基礎的な機能です。テストのセットアップ、負荷のスケールアップ、そして最後にメトリックスをお見せしましょう。

テストセットアップ

大規模なサービスを運用する場合、本当に必要なのは一貫性であり、負荷がかかったときにシステムがどのように動作するかを簡単に予測することができます。クライアント側を見ることは重要です。なぜなら、クライアント側でレイテンシが大きくなり始めるからです。なぜテールレイテンシが重要なのかについては、こちらをご覧ください。

私たちは、設定された人数のプレイヤーとのゲームセッションと一緒に見られるかもしれない75,000のゲームルームチャットを表現したいと考えています。チャットルームが受信した各メッセージは、ルーム内の購読者にブロードキャストされます。各チャットルームが平均して約6.5秒ごとに新しいメッセージを受信し、それを50人の購読者にブロードキャストするというシナリオをモデル化するつもりです。一度に75,000のチャットルームがあり、合計375万ユーザーが加入し、メッセージ受信レートは575Kメッセージ/秒になります!

このテストで私が狙う正確な目標は以下の通りです:

テストのコストを最適化するために、私は2台のc7g.4xlarge EC2インスタンスからrpc-perfMomento Rust SDKを活用したRustで書かれた効率的な負荷ジェネレータを使用して負荷を駆動します。これにより、大量のトピック、パブリッシャー、サブスクライバーを合理的なコストでスケールアウトできるようになります。

最終的には次のようなセットアップになります:

テスト結果

テスト・パラメーターを定義し、テスト用のロード・ドライバをキックオフしました。そして耐久テストを行いたいと思いました。これは、パフォーマンスがどの程度安定しているかを確認し、レイテンシーやエラー・レートが時間の経過とともに上昇しないことを確認するためです。 最終的に、私はテストを10時間実行したままにしておき、サービスに関する確かなデータを収集することができました。

メッセージレート:

パブリッシャー(メッセージ送信/秒):

ここでは、テスト全体を通して、メッセージ発行レートが1秒あたり11500メッセージで安定していることがわかります。‍

サブスクライバ(メッセージ受信数/秒):

メッセージ受信レートは、テスト期間中、1秒間に約575Kメッセージと安定していました。

サブスクライバの数

テスト期間中は375万人の加入者を維持しました。

遅延時間

パブリッシャー側のレイテンシ

p99.9クライアントのレイテンシは、テストのほとんどで~3.3msにとどまり、テスト全体では6ms以下でした。

サブスクライバのエンド・ツー・エンドレイテンシ

p99.9加入者のe2eレイテンシーは、テストの大半で4.3msにとどまり、テスト全体では6msを下回っています。

結果のまとめ

全体的には、テストの結果と一貫したレイテンシーの数値にとても満足しています。迅速にスピンアップし、これだけの持続的な負荷をこれだけの期間維持できることは、ミッションクリティカルなアプリケーションを構築する際の自信につながります。成長に合わせて拡張できる低レイテンシーのPub/Subサービスを持つことは、チャットシステムのようなリアルタイムアプリケーションにとって画期的なことです。特にゲーム業界では、プレイヤーの大きな波が素早くオンラインになり、一日を通して変化するトラフィックがあります。

独自のアーキテクチャでMomento Topicsを試す準備はできましたか?今すぐ始めましょう