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も定める必要があります。