第43回html5とか勉強会 最新webプロトコル傾向と対策

56
最最 Web 最最最最最 最最最最最 最 43 最 HTML5 最最最最最 最最最最最最最

Upload: kensaku-komatsu

Post on 15-Jan-2015

1.876 views

Category:

Technology


0 download

DESCRIPTION

第43回HTML5とか勉強会でのセッション資料 spdyやWebSocketに対するLong Fat PipeやHead of Line Blockingの影響や、WebRTC BaaS SkyWayの説明など

TRANSCRIPT

Page 1: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

最新 Web プロトコル 傾向と対策第 43 回 HTML5 とか勉強会

こまつけんさく

Page 2: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

自己紹介名前:小松健作

HTML5 の研究開発 HTML5 の啓蒙・コミュニティ運営 html5j スタッフ カンファレンスの NW (ケーブル)頑張ってひきま

した。

Google Developer Expert (HTML5)

Microsoft Most Valuable Professional(IE)

Page 3: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

最新 Web プロトコルが続々とWebSocket

SPDY, HTTP2.0

WebRTC

Raw Socket API

SCTP over DTLS (for WebRTC reliable data channel )

QUIC

Page 4: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

なぜこんなに?

Page 5: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTP/1.1

Browser ServerGET /index.html

index.html

GET /style.css

style.css

画像素材: http://www.emstudio.jp/free/data1030/

Page 6: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTP/1.1

Browser ServerGET /index.html

index.html

GET /style.css

style.css

Round Trip Tiime

Page 7: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Concurrent HTTP複数の TCP を同時に用いることで高速化

車の例で言えば、道路の車線を増やすことに相当

Page 8: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策
Page 9: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Concurrent HTTP

超えられない GAPリソースも多く使う

Browser Server

Page 10: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Gap を超えるために複数リソースを一つのセッションにまとめる。

まとめたリクエストを送る

Browser Server

Page 11: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Gap を超える practiceCSS sprite

Page 12: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

もっとGeneric に !

Page 13: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY の考え方複数リソースを一つの TCP にまとめているBrowser Server

Page 14: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

DEMO

Page 15: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY 使えば何も考えなくてもいい?

Page 16: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

リソースサイズを変えてみる

Page 17: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

更に、ネットワークをエミュレート (MacOS)

sudo ipfw add pipe 1 ip from any to anysudo ipfw pipe 1 config delay 50ms

Page 18: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

エミュレート環境で測ってみる

Page 19: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

リソースサイズ、 latency

HTTPS

SPDY

Page 20: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP : Long Fat PipeACK が返ってくるまで、データを送信で

きないBrowser Server

Page 21: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

計測データ

about 15KB

ACK time(100ms)

総データ送信量

データ送信量

Page 22: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SPDY と HTTPS の違いSPDY

複数リソースダウンロードをを一つの TCP で Long Fat Pipe の制限が顕著となる

HTTPS Long Fat Pipe は、個々の TCP に対して起こる TCP の数だけ早くなる

Page 23: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

何が言えるか?Latency が多い環境

ACK の待ち時間が支配的 リソースサイズが増えるに従い、顕著となる SPDY より、 HTTPS のほうが早いケースも

Page 24: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Head of Line Blocking

Browser Server

Page 25: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

HTTPS では、 HoL の影響を受けづらい

Browser Server

Page 26: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

計測データ

Page 27: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

ケアしたほうがいいことSPDY を使う際は

大容量のファイルが多量に存在する場合 モバイル環境(ロスも latency も大きい)でのテストに注意したほうがいい

ファイルサイズの最小化など、従来からのプラクティス・サイト設計は引き続き重要

※ WebSocket についても同様のことが言えます。(場合によっては、 WebSocket 複数コネクション使ったほうがいいかも!?)

Page 28: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

何が原因?SPDY, WebSocket … NO

TCP の制限が原因

Web の進化により TCP の制限にぶつかるようになった

HTTP / HTTPS

TCP

IP

SPDY, WebSocket

HTTP2.0TCP

IP

LayerDependency

Page 29: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP alternativeSCTP over DTLS

QUIC

Page 30: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TCP alternative はいつ?

Browser Server

AccessNW

CGN

FireWall

Load Balancer

インターネット上のあらゆる機器に影響が出てくる・・・

Page 31: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC 的な話

Page 32: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC の特徴

Browser Browser

Server

WebSocket

Browser Browser

Server

WebRTC

Page 33: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

P2P を実現するには?

Browser Browser

相手の IP アドレス、ポート

番号が必要

Page 34: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

NAT がある場合

Browser Browser

NAT NAT

実際のアドレス、ポート番号は分か

らない

Page 35: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

アドレス、ポート番号を知るために : STUN

Browser Browser

NAT NAT

STUN実際のアドレス、ポート番号をブラ

ウザに返す

Page 36: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

フルコーン NAT

Browser Browser

NAT NAT

STUN

STUN に教えてもらった情報を使い

通信

ポート番号だけを見て変換( UDP Hole Punching)

Page 37: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

シンメトリック NAT

Browser Browser

NAT NAT

STUN

STUN に教えてもらった情報を使い

通信

アドレスが違うのでブロック

Page 38: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

TURN

Browser Browser

NAT NAT

TURN

サーバーを中継するため、シンメトリック NAT でも

OK

Page 39: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

同一セグメント内なら ICE はSTUN, TURN は不要

Browser Browser

BroadbandRouter

LAN

Page 40: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

同一セグメントでも・・・

Browser Browser

Wireless Controller セキュリティの観

点からセグメント内

P2P を禁止公衆無線 LAN

TURN が必要

Page 41: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC もうちょっと詳しく

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

http://blog.livedoor.jp/kotesaki/archives/1794148.html

サーバーサイドコーディング

Page 42: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC もうちょっと詳しく

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

とにかくめんどくさい

Page 45: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

毎回こんなコード書いてられない・・・

Page 47: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (preview release!)

http://nttcom.github.io/skyway/

Peerjs 互換

Page 48: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

WebRTC を簡単に使えるBaaS

WebRTCWebapp

WebRTCWebapp

BrokerServer

Stunserver

NAT NAT

セッション情報の交換

NAT の hole punching

データの交換

サーバーサイドコーディング

この部分は、 SkyWay が提供(気にしなくていい)

ブラウザ部分の開発に集中

Page 49: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

コードの短縮化

https://gist.github.com/KensakuKOMATSU/5377673

220 line => 50 line

サンプルレベルならサーバーサイドコーディン

グは不要!!

Page 50: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (PeerJS) のコーディングパターンWebSocket と若干コーディングパターンが変わる

WebSocketサーバー

サーバーに接続すれば、お互いが自動的につながる

SkyWayサーバー

相手先の Peer ID を指定して、明示的に繋がる(呼ばれる側はサーバー的なコーディングが必要)

(裏側で接続制御)

Page 51: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

SkyWay (PeerJS) のコーディングパターン

SkyWayサーバー

caller callee

最初に SkyWayサーバーに接続

SkyWayサーバー

接続先 ID を指定してp2p接続

(裏側でうまいこと橋渡し)

Page 52: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

DataChannel の相互接続性問題DataChannel の reliable 通信の実装がブ

ラウザ(バージョン)ごとに異なる当面は sctp をオフにしたほうがベターutil.supports.sctp = false;

Page 53: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

より詳しくは・・・

http://nttcom.github.io/skyway/docs/

Page 56: 第43回HTML5とか勉強会 最新webプロトコル傾向と対策

Thank You!!@komasshu