ロングポーリングがWebSocketを凌駕:スケーラブルなリアルタイムシステムの実践ガイド

2025-01-05

Inferableチームは、Node.jsとTypeScriptを用いたスケーラブルなリアルタイムシステム構築において、WebSocketではなくHTTPロングポーリングを選択しました。数百ものワーカーノードがリアルタイムで新しいジョブの更新を必要とし、エージェントがリアルタイムの状態同期を必要とするという課題に直面し、ロングポーリングが驚くほど効果的であることを発見しました。新しいデータが到着するか、タイムアウトに達するまでHTTP接続を開いたままにすることで、認証、監視、インフラストラクチャの互換性など、WebSocketの複雑さを回避しました。この記事では、データベースの最適化、エラー処理、必須TTL、クライアント設定可能なTTL、適切なデータベースポーリング間隔などのベストプラクティスを含む、彼らの実装の詳細を説明しています。この選択は、メッセージ配信メカニズムに対するコア製品の制御、外部依存関係のゼロ、コードの容易な理解と変更が必要であることからなされました。ElectricSQLなどの代替案についても簡単に触れられており、WebSocketが好ましいシナリオが強調されています。