メインコンテンツへスキップ

大量のソーシャルデータイベントに備える方法

国内外の大規模イベントの際には、ソーシャルメディア全体でユーザーのアクティビティが急激に増加することがよくあります。Super Bowl、政治選挙、世界各地の新年の祝賀のように事前に予定がわかっているものもあれば、自然災害、突発的な政治イベント、ポップカルチャーの話題、COVID-19 のような健康危機など、想定外の出来事によってボリュームが急増することもあります。 このようなアクティビティの急増は、一瞬(秒単位)で収まる場合もあれば、数分間続くこともあります。発生要因にかかわらず、X から data を取得・処理するアプリケーションへの影響を考慮することが重要です。以下は、チームが大量のソーシャルデータイベントに備えるためのベストプラクティスです。

現在の Filtered stream ルールを見直す

  • メジャーなスポーツイベントでブランドがスポンサーになる場合のブランド言及など、高ボリュームのイベント時には特定のキーワードが急増することがあります。
  • 不要なアクティビティを生むおそれのある、不必要または過度に汎用的なルールは避けるよう注意してください。
  • 事前に高ボリュームが見込まれるイベントについてクライアントと連絡を取り、適切な計画立案を支援することを検討してください。  

アプリケーションのストレステスト

バースト時のトラフィックが平均的な日次消費量の5〜10倍に達する可能性を見込んでください。ルールセットによっては、さらに大幅に増加する場合があります。

接続における配信上限の理解

フローおよび配信上限はアクセスレベルに基づきます。これにより、stream の配信結果のボリュームは一定になります。
  • Academic: 250 Posts/秒
  • Enterprise: Posts/秒はアクセスレベルで設定されます

接続維持の最適化

stream を使用する場合、data を取りこぼさないためには接続を保つことが重要です。クライアントアプリケーションは切断を検知し、再接続に失敗した場合は指数バックオフを用いつつ、直ちに再接続を試みるロジックを備えてください。  

クライアント側で組み込みのバッファリングを追加する

マルチスレッドのアプリケーションを構築することは、高トラフィックなstreamを処理するうえで重要な戦略です。大枠として、dataのstreamを管理するベストプラクティスは、streaming接続を確立する専用のスレッド/プロセスを用意し、受信したJSONのアクティビティをメモリ構造体またはバッファ付きのstreamリーダーに書き込むことです。この「軽量」なstream処理スレッドは受信dataの処理を担い、必要に応じて増減可能な形でメモリ上でバッファリングします。続いて、別のスレッドがそのhashを取り込み、JSONの解析、データベース書き込みの準備、その他Appが必要とする「重い処理」を実行します。  

グローバルなイベント = グローバルなタイムゾーン

イベントは営業時間外や週末にも発生し得るため、通常の営業時間外のスパイクにも対応できるよう、チームの準備を整えておいてください。
I