Cloudflare Realtime は、リアルタイム体験を構築するための、シンプルかつ強力な枠組みを提供します。このシステムの中核は、Application(アプリケーション)、Session(セッション)、Track(トラック)の 3 つです。Realtime を使ううえで、これらの概念を把握しておくことが重要です。
Realtime の Application は、異なる Session と Track がやり取りできる環境です。本番、ステージング、Session と Track を分離したい環境などが該当します。Cloudflare Realtime の利用状況は、Application、Session、Track の各レベルで照会できます。
Cloudflare Realtime の Session は、WebRTC の PeerConnection に直接対応します。クライアントと、Cloudflare の anycast ルーティングで決まる最寄りのデータセンターとの通信チャネル確立を表します。通常、クライアントは 1 つの Session を維持し、クライアントと Cloudflare の間の通信をすべてその Session で扱います。
- PeerConnection との 1 対 1 の対応: 各 Session は WebRTC の PeerConnection を直接表し、リアルタイムのメディアデータ転送を支えます。
- Anycast ルーティング: クライアントは最寄りの Cloudflare データセンターに接続し、遅延とパフォーマンスを最適化します。
- 統合された通信チャネル: 1 つの Session で、クライアントと Cloudflare の間のあらゆる種類の通信を扱い、データの流れを簡潔にします。
1 つの Session には、1 つ以上の Track を含められます。
- Track は MediaStreamTrack に対応します: Track は MediaStreamTrack の概念に沿い、音声、映像、データの送信を支えます。
- グローバルに一意な ID: Track を Cloudflare にプッシュすると一意の ID が割り当てられ、別の Session からその Track をプルできます。
- グローバルに利用可能: Track のプッシュとプルは、Realtime をリアルタイムアプリケーション向けの柔軟なツールにしている中心機能です。各 Track は、同じ App 内のどの Session からでも取得できます。
Realtime を理解するには、交換台の比喩が分かりやすいです。かつては交換手がジャックを差し替えて通話をつないでいました。同様に、Realtime はメディアストリームを動的にルーティングでき、現代のリアルタイム通信向けのプログラム可能な交換台として働きます。
多くの SFU は「rooms」のような概念でユーザー間のメディアストリームを管理します。この方式には、スケーラビリティと柔軟性の制約があります。Cloudflare Realtime は、Session と Track による、より細かく柔軟なモデルを採用し、幅広いユースケースに対応します。
- 数千人が参加する「fireside chats」のような大規模リモートイベント。
- 視聴者を「ステージ」に上げられるインタラクティブな会話。
- 講師が複数の仮想教室へ同時に講義する教育アプリケーション。
Realtime は Presence Protocol(在席プロトコル)とメディアフローを区別します。これにより、リアルタイムアプリケーションのスケーラビリティと柔軟性が高まります。この分離により、少人数の通話から大規模で低遅延の配信まで、目的に合わせた体験を作れます。