メインコンテンツへスキップ
国内外の主要イベントでは、ソーシャルメディア全体でユーザーのアクティビティが劇的に急増することがよくあります。Super Bowl、政治選挙、世界各地の新年の祝賀など事前に予測できるものもあれば、自然災害、突発的な政治イベント、ポップカルチャーの話題、COVID-19 のような感染症のパンデミックなど予期せぬ出来事が原因でボリュームが跳ね上がることもあります。
こうしたユーザーアクティビティのバーストは、秒単位で短期間に収まる場合もあれば、数分間継続する場合もあります。発生要因にかかわらず、X から data を取得するアプリケーションへの影響を考慮することが重要です。以下は、チームが大規模なソーシャルデータイベントに備えるためのベストプラクティスです。
- 主要なスポーツイベントでブランドがスポンサーになる場合など、高トラフィックのイベントでは特定のキーワードが急増することがあります。
- 不要なアクティビティを生みかねない、不要または過度に一般的なルールは避けるよう注意してください。
- 事前に高トラフィックが見込まれるイベントについてクライアントと連絡を取り、適切な計画策定を支援することを検討してください。
バースト時のトラフィックが、平均的な1日あたりの消費量の5~10倍に達する可能性を見込んでください。ルールセットによっては、増加率がさらに高くなる場合があります。
フローおよび配信上限はアクセスレベルに基づきます。これにより、ストリームに配信される結果の量は一定になります。
- Academic: 1秒あたり250 Post
- エンタープライズ: 1秒あたりのPost数はアクセスレベルで設定されます
ストリームでは、データの取りこぼしを防ぐために接続を維持することが不可欠です。クライアントアプリは切断を検知し、再接続が失敗した場合は指数バックオフを用いつつ、直ちに再接続を試みるロジックを備える必要があります。
マルチスレッドのアプリを構築することは、大量のストリームを処理するための重要な戦略です。大枠として、データストリームを管理するベストプラクティスは、ストリーミング接続を確立する専用のスレッド/プロセスを用意し、受信した JSON のアクティビティをメモリ上のデータ構造やバッファ付きのストリームリーダーに書き込むことです。この「軽量」なストリーム処理スレッドは受信データの取り扱いを担い、必要に応じて増減するメモリ内バッファに蓄えます。続いて別のスレッドがそのデータを取り出し、JSON の解析、データベース書き込みの準備、その他アプリで必要な「重い処理」を実行します。
イベントは営業時間外や週末に発生することがあるため、通常の営業時間外にスパイクが起きても対応できるよう、チームの体制を整えておきましょう。