チャットプラグイン:大規模環境でのパフォーマンス - リテンションとヘビーなAPI利用の無効化?

Discourse Chat プラグインの代替ユースケースを検討しており、特にデータ保持と大量の API 使用に関するパフォーマンス制限について質問があります。

背景として、スレッド形式のコメントシステムを探しています。Chat プラグイン内の「スレッド返信」機能は、標準のトピック/投稿構造よりもはるかに私たちのニーズに近いユーザーエクスペリエンスを提供します。このため、チャットチャンネルを永続的なコメントスレッドとして使用することを検討しています。

このユースケースのため、チャット履歴を無期限に保持する必要があります。これが私たちの主な懸念事項、つまり大規模でのパフォーマンスにつながります。

予測される使用量は多くなります。

  • 総メッセージ数: 100万から1000万メッセージの間。

  • チャンネル数: 約150から200チャンネル。

主な質問は以下の通りです。

  1. チャットの保持を完全に無効にするか、または言及されたメッセージ数をサポートするように増やすことは可能ですか? 例えば、保持期間を0または非常に大きな数値に設定するなど。

  2. API パフォーマンスへの影響はどのようになりますか? 外部システムとの統合のために Chat プラグインの API を多用する予定です。主なアクセスパターンは、メインチャンネルとスレッドの両方で、**時系列順(新しいものから古いものへ)**でメッセージを取得することになります。このような頻繁な API ポーリングは、膨大な履歴を持つチャンネルに対して、サーバーに大きな負荷をかけるでしょうか?

  3. 数百万のチャットメッセージを永続的に保存することによる、サーバーとデータベースへの一般的なパフォーマンスへの影響はどのようになりますか? 特に、以下にどのように影響しますか?

    • サーバーの CPU および RAM 使用量?

    • サイト全体の応答性?

  4. この種の負荷下でシステムのパフォーマンスが著しく低下し始める既知の「破壊点」またはソフトリミットはありますか?

このチャットプラグインの用途が一般的でないこと、および保持を無効にすることがベストプラクティスでないことは理解しています。私たちの目標は、このアプローチにコミットする前に、システムのアーキテクチャ上の制限(UI および API の両方)を判断することです。

大規模でチャットを実行したチームまたはコミュニティメンバーからの洞察は非常に貴重です。

「いいね!」 4

@Nima1さん、これらの質問にいくつかお答えできます。

はい、可能です。「チャネルのチャット保持日数」を「0」に設定するとメッセージを永久に保持できます。ただし、あなたの行っていることの規模を考えると、パフォーマンスへの影響が気になるのは当然です。また、現在チャットメッセージの検索はサポートしていないことにも注意してください(検討はしていますが、現時点では計画されていません)。これは、メッセージを永久に保持していても、プロジェクトの使用量が多い場合、特定のメッセージを見つけることがメンバーにとって現実的ではない可能性があることを意味します。

これらの質問に対する答えは確実ではありません。チャットに最も多く取り組んできたエンジニアに確認して、彼らがどう考えているか見てみます。

また、あなたのユースケースについてもっと知りたいです。どのようなことを目指しているのか、もう少し詳しく教えていただけますか?

「いいね!」 2

リンジー様

ご返信ありがとうございます。エンジニアリングチームにご確認いただいたとのこと、感謝いたします。ユースケースについて詳しくお話しさせていただきます。

私たちは、仮想通貨愛好家のためのコミュニティを構築しています。主要な仮想通貨アセットごとに、リアルタイムのディスカッションのための専用の永続的なチャンネルを作成したいと考えています。

標準のトピック/投稿モデルは、以下の理由で理想的ではないことがわかりました。

  1. ペースと形式: 会話は急速に進み、短いメッセージ、アップデート、リアクションで構成されており、これはチャット形式に自然に適合します。
  2. 情報フロー: ユーザーは最新のメッセージを最初に表示し、最近の履歴を上にスクロールして表示する必要がありますが、これはチャットのデフォルトの動作です。対照的に、トピックは古いものから新しいものへと時系列で読まれるように設計されています。

チャットプラグインのスレッド返信と逆時系列表示は、私たちが作成したいユーザーエクスペリエンスに完全に一致します。

私たちの主な課題はスケーラビリティです。アセットごとにチャンネルがあるため、数百のチャンネルが必要になると予想しており、それぞれが非常に長い履歴を持つ可能性があります。そのため、パフォーマンスの限界に非常に興味があります。

私たちは、健全なコミュニティを構築するために不可欠な、強力なモデレーション、ユーザー管理、ゲーミフィケーション機能を備えたDiscourseを使用することにコミットしています。

エンジニアの皆様のご意見をお待ちしております。重ねて感謝いたします。

@Nima1 さん、ご希望について共有いただきありがとうございます!

チームと話し合った結果、この量のメッセージによるパフォーマンスへの影響については確実にお話しできません。現在、この規模でチャットを使用しているユーザーは少なく、サイトのホスティング場所によっても大きな影響があります。

Discourse をセルフホストする予定ですか?

「いいね!」 2

こんにちは、迅速なご返信とチームへのご確認ありがとうございます!

ご質問にお答えしますと、はい、セルフホスティングです。すでにインスタンスをセットアップしました。