ステートレスから一周回ってステートフルへ
     - WebSocketとか -
 2012/05/25 松本勉強会
ファーストサーバ第II技術G




                    Page 1 / 7
Infomation
 Id:sawanoboly
 HiganWorks LLCの代表をやっています

 Giraffiを作り続けています
 ※本日はコレ向けに調査した内容をネタに出張版
 最近ZCloud利用(検討)者のコンサルも始めました

 一緒に働いてくれる人も(ゆるく)募集中!

※このスライドは第二回松本勉強会にLT参加した際の資料です、配布了承済み。


                                   Page 2 / 7
HTTPのステートレスおさらい
 1リクエストに1レスポンスで完結!


GET / HTTP/1.1                  HTTP/1.1 200 OK
User-Agent: curl/7.22.0         Content-Type:
Host: www.example.com           text/html;charset=utf-8
Accept: */*                     Content-Length: 8

                                Body...



                           コネクション
                          ここでおしまい




                                                          Page 3 / 7
HTTPで困ること
 双方向のデータ交換にあまり向いていない
   送信にHTTPのリクエストがまるまる必要、ヘッダが無駄
 需要の高まってきたリアルタイム通信に弱い
   Pushが弱い、クライアント判別に苦労
   クライアント同士でチャット等に壊滅的
   ポーリング?Commet? Stremingなど工夫の実装はある
   も一方通行

       リアルタイム通信や、サーバサイドPushの需要には
       ステートフルデータ交換の対応が必要

※『FSではステートフルなSMTPもFTPも使こうとるよ?』というのは
 置いといてください


                                      Page 4 / 7
WebSocketってどんなプロトコル?
 HTML5で仕様固められていたがやっぱり別のプロト
 コルとして独立。
 HTTP1.1のUpgradeを利用して、データ交換プロト
 コルをHTTPからWebSocketに更新してつかいます。
 ※HTTPと同じポートで使えるのが最大のメリット。

 平たく言うと、HTTPぽくコネクションしてからの
 Telnet!

※GiraffiのモニタリングデータはWebSocketを使い、リアルタイムでPush
されるようになる(予定)


                                        Page 5 / 7
WebSocketコネクション
GET / HTTP/1 1             HTTP/1 1 101
Upgrade: WebSocket          WebSocket Protocol Handshake
Connection: Upgrade        Upgrade: WebSocket
Host: www.example.com      Connection: Upgrade
Origin:                    Sec-WebSocket-Location:
 http:// www.example.com    ws:// www.example.com /
Sec-WebSocket-Key1:        Sec-WebSocket-Origin:
 ******==                   http:// www.example.com
Sec-WebSocket-Key2:
 ******==
                                WebSocketコネクション確立




               これ以降は双方向でデータの交換が可能
               <ー[データ開始]データ[データ終端]ー>


                                                    Page 6 / 7
HTTPと見せかけてのTCPコネクション
従来のHTTP向けのロードシェアや、キャパシティ
計算にもう一要素が必要。
=>L4の取り回しを考慮する
ESTABLISHEDのTCPコネクション
  無通信時、切断等の制限は? (仕様では切断なし)
  L4ロードバランサのは以下では?
  ex. AmazonのELB (60s)


今後一般向けでリアルタイム需要は近い?

              to be continued...
                                   Page 7 / 7

20120525 mt websocket