WebSocket CDN


Websocket CDNとは、WebsocketをサポートしたCDNです。

Websocket

Websocketとは、Webの枠組みで双方向通信を行う仕組みです。これは、基本的にHTTPプロトコルですが、別コンテクストの通信になり、Upgradeヘッダによる切り替えが行われます。そのため、企業用Proxy等においてUpgradeヘッダに対応できない場合、通信が正常にできない場合があります。

TV連動

WebSocket CDN利用シーンの代表的なものとしては、次のような「TV番組とスマートフォンアプリの連動」があります:

  • 一斉通知
    • TV局からアプリへの通知およびアプリ画面の操作
  • アンケート
    • アプリからの入力を集計し、番組で紹介
  • ゲーム
    • アプリからの指示出しにより、番組内のゲームを操作

そして、番組への「のめりこみ感」を高めるために、リアルタイム性に対する要求は強く(そのため通常のHTTPによるポーリングではなく、常時接続かつ双方向であるWebSocketが使用される)、また、同時接続数についても、数百万程度のキャパシティが必要となります。

WebSocket CDNのメリット

SSL化

モバイル環境の危険性のため、通信のSSL化が必要になっていますが、SSL CDNを使用すれば簡便にWebsocketのSSL化が可能になります。

また、Webscoketを上手く処理できないプロキシを使用せざるを得ない環境(企業環境等)にいるユーザに対しても、WebSocket SSL化を行うことにより、不具合を回避できる場合もあります。つまり、SSL化により通信が暗号化され、プロキシがWebSocket通信の妨害することが無くなります。

CDNサーバ上でのWebSocket処理

一斉通知やアンケートなどの単純なアプリケーションであれば、CDNサーバでWebSocketを終端させ、各種処理を行わせることができます。また、CDNサーバ上でのWebSocket処理とオリジンサーバとの連携については、いくつかのパターンがあります:

  • CDNコンソール利用:オペレータがCDNコンソールから指示だしおよび集計を行う
  • オリジン連携あり:集計結果や一斉通知用の別セッションをCDNサーバとオリジンサーバ間で結ぶ

WebSocket CDNの課題

WebSocket CDNは、まだ本格的に使用されてはおらず、実験レベルです。ここでは、課題についてまとめます。

ポート数

TCPのポート数は、IPアドレスあたり65,536個までです。一方、WebSocket通信自体の処理は軽く、1台のサーバでこれ以上の処理も可能になっています。そのため、ポート数を稼ぐために、1台のサーバに複数のIPアドレスを割り振ることが必要です。

CDNサーバ上でのWebSocket処理

CDNサーバで(セッションあたり)重い処理を実行させると、つまり、基本的には軽いオブジェクト配信と重い処理が混在すると、キャパシティ管理が難しくなります。そのため、基本的には、定型化された軽い処理かつ軽い処理系が必要になります。

CDNサーバとオリジンサーバ間の通信

定型化された軽い処理と関連して、CDNサーバの接続APIも定める必要があります。