SlideShare a Scribd company logo
HTTP/2 時代の Web
Web over HTTP2
#yapcasia 2015 Jxck
● id: Jxck
● github: Jxck
● twitter: @jxck_
● about: http://jxck.io
● blog: http://jxck.hatenablog.com
● podcast: http://mozaic.fm
● Love: music
Jack
3
#http2study #wdpress vol.75#http2go (wip)
and more...
#mozaicfm ep2
http2 activity
4
5
http://http2.info
● #1 2013/08/14
● #2 2013/10/17
● #3 2014/01/28
● #4 2014/03/20
● #5 2014/07/30
● #6 2014/11/25
Meetup - #http2study
http://connpass.com/series/457/
● IETF briefing session
● spec discuttion
● implementation tips
● project sharing
● etc
● #1 2014/02/23
● #2 2014/05/24
● #3 2014/09/06
● #4 2015/01/24
Hackathon
● issuethon 2014/04/12
○ discuttion on http2
issues on ML & github
Implementations in Japan
nghttp2
C
iij-http2
node.js
http2-go
Go
sasazuka
node.js
haskell-http2
haskell
h2o
C
Local Activity Report @IETF89
RFC7540
10
本当に出た
11
今何がおこっているか?
12
策定フェーズ
から
使うフェーズ
13
Position Matrix
14
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
どう有るべきか?
15
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
積極的に使いこなして
行く?
使わない方がいい場合
がある?
気にせずとにかく入れる
べき?
現状把握
16
コンテンツサイズ
17
http://httparchive.org/trends.php?s=All&minlabel=Dec+16+2010&maxlabel=Aug+1+2015#bytesTotal&reqTotal
1 ページ中のリクエスト数とレスポンスサイズ (2010/12 ~ 2015/8)
サイズもリクエスト数も増加の一途
=> サイズが増えるなら帯域が増えればいいのか?
帯域 vs レイテシ
帯域 の増加よりも、 レイテシ の削減の方が効果が
大きい。
18
https://docs.google.com/presentation/d/1r7QXGYOLCh4fcUq0jDdDwKJWNqWK1o4xMtYpKZCJYjM/present?slide=id.g518e3c87f_2_0
速くするために
● RTT (Round Trip Time) を減らす
○ 物理的に近くする
○ レスポンスを速くする
● RT (Round Trip) を減らす
○ アクセスする回数を減らす
○ キャッシュしてアクセスを減らす
○ なんとかしてアクセスしないで済ます
19
HTTP/1.1
20
advanced だから駆け足で
HTTP/1.*
21
HTTP/1.*
22
● Header
○ テキストベース
○ 圧縮不可
○ 毎回送る
○ 重複が多い(UA)
● Body
○ 何でも良い
○ 圧縮可能(gzip etc)
HTTP/1.*
23
● TCP を毎回確立
○ 毎回 3-W-H
○ 毎回 initial cwnd から
HTTP/1.*
24
● HTTP Head of Line Blocking
○ 一度に一つの HTTP リクエスト
○ 一つ詰まると後続がブロック
HTTP/1.*
25
● ブラウザは 6 本同時に接続
● 同時に 6 つのコンテンツを並行取得
1
2
3
4
5
6
1
2
3
4
5
6
シンプルな一方
高速化に限界が
26
回避策
27
● HTTP
○ Keep Alive
○ CSS Sprite
○ File Concat
○ Domain Sharding
● TCP
○ TCP Fast Open
○ InitCWND 10
○ TLS Session Ticket
○ TLS False Start
http://www.oreilly.co.jp/books/9784873114460/
http://www.oreilly.co.jp/books/9784873113616/
回避策
28
● HTTP
○ Keep Alive
○ CSS Sprite
○ File Concat
○ Domain Sharding
● TCP
○ TCP Fast Open
○ InitCWND 10
○ TLS Session Ticket
○ TLS False Start
Bad
Hack
Kernel
level
http://www.oreilly.co.jp/books/9784873114460/
http://www.oreilly.co.jp/books/9784873113616/
HTTP/2
29
advanced だから駆け足で
HTTP2
30
HTTP2
31
● バイナリフレーム
○ パースしやすい
○ サイズ効率が良い
○ データ分割しやすい
● セマンティクス維持
○ 語彙は変わらない
○ 互換性
HTTP2
32
● HPACK
○ Huffman 圧縮
○ 頻出ヘッダを共有
○ 送信済みデータを再利用
● 圧縮率は実装次第
● see also:http://bit.ly/1E8aHYL
HTTP2
33
● 1 コネクションにストリームを多重化
HTTP2
34
● コンテンツの優先度制御
● 必要に応じたリソース分配
see also: http://bit.ly/1EFDnD7 1 : 2 : 3
35http://www.slideshare.net/shigeki_ohtsu/http2-quic
コネクションを使い切る
Head of Line Blocking 回避
36
https://jxck.io/labs/hol/
プロトコルを改善し
最適化の余地が産まれた
37
Server Push
38
● 依存コンテンツを先に送ってキャッシュさせる
● リクエスト発生時キャッシュヒットする
● 1Req / 1RT の壁を超える
積極的な Cache Contorl
● Browser Cache
○ 熾烈な奪い合い
○ 75% の人は 48h で領域を使い切る
○ see also: http://bit.ly/1HUy0Ex
● Push で積極的な Cache 管理
39https://github.com/h2o/h2o/issues/421
with Service Worker
40
● HTTP2 Push を Push API 受け取れる予定
● Fetch - Push が全て JS でコントロール可能
● HTTP2 + SW で積極的なミドルコントロール
Push が入ることの意味
41
● HTTP が Fetch と Push の両方をカバーした
● 双方向通信に必要な機能が揃った
● コンテンツ配信だけじゃもったいない
● 使用例
○ WebSocket over HTTP2 (策定中)
○ gRPC (push は未サポート?)
○ Servlet 4.0 (push の扱いを議論中)
○ Service Worker の Push API (議論中)
コンテンツ配信の枠を超え
アプリケーションからより
積極的に使えるプロトコルに
Position Matrix (now)
42
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
HTTP2 は自分にとって
必要か?
43
必要?
44
● HTTP よりも他にボトルネックあるし
● HTTP/1.1 に最適化して速度出てるし
● HTTPS にするのがなぁ。。
● Push って必要?
● インフラどうなるの?
● G と FB と Tw が必要としてるだけでしょ?
● そもそも実装が。。
● etc
Performance
45
Response Time の後の世界
46
FilmStrip
https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index
● 同じレンスポンスタイムでも、表示の最適化により
体感は変わる。
● 一枚の画像が、バックエンドのチューニングを台無
しにすることもある。
Res Time は全体の半分しか測れてない
● Response Time の後の世界
○ Cache の最適化
○ Critical Rendering Path の最適化
○ SPA
● 何を見るか
○ Speed Index
○ Film Strip
○ TTFB (time to first byte)
○ First Paint
○ RUM (real user monitoring)
○ etc
47
see also:
http://bit.ly/1fsJZhD
http://bit.ly/1U1hWDx
Speed Index
http://bit.ly/1HMvBg6
HTTP/1.1 の呪縛
48
最適化
49
● HTTP/1.1 向けハック
○ JS の concat
○ CSS の concat
○ 画像の Sprite
○ Sprite のための CSS
○ ドメイン分ける
○ etc
Bad Hack 無しの素直な作りでも遅くなら
なかったとしたら?
http://www.oreilly.co.jp/books/9784873114460/
http://www.oreilly.co.jp/books/9784873113616/
実装・インフラ
50
進む実装
51
● Nginx
● Apache HTTPd
● Apache Trafic Server
● IIS
● Akamai
● H2O
● nghttp2
● etc
今は実装がこなれるまでの過渡期。
各所で検証も進んでいる。
インフラ
● Load Balance どうするの?
● HTTPS の終端は?
● CDN は?
● 証明書管理は?
● etc
52see also: http://bit.ly/1PqYWNB
need more
知見
HTTPS
53
様々な問題
● NSA: PRISM (広域盗聴)
● AT&T: NSA への協力
TLS 推奨の流れ
● W3C
○ End-to-End Encryption and the Web
● IETF
○ Privacy Protected Security Considerations
● Google
○ HTTPS as a ranking signal
● Mozilla
○ Deprecating Non-Secure HTTP
● Let’s Encrypt (延期11月)
○ https://letsencrypt.org/
54
"Edward Snowden-2" by Laura Poitras / Praxis Films. Licensed under CC 表示 3.0 via ウィキメディア・コモンズ
Pervasive Surveillance
HTTPS は前提?
55
● HTTP2
○ 仕様上は平文もあるが、ブラウザは実装してない。
● WebRTC
○ HTTPS じゃないと getUserMedia が毎回要確認
● Service Worker
○ HTTPS じゃないと登録できない
● HSTS
○ HTTPS で接続させる
● Oppotunistic Encryption
○ HTTP でも暗号化する
● Upgrade Insecure Request
○ http:// を https:// に読み替えてリクエスト
see also: http://bit.ly/1Lq1fT9
HTTP2 は
ハイパージャイアント
のもの?
56
ハイパージャイアントニーズ
● 戦ってるレベルが違う
○ 毎日が DOS
○ 1byte 減らすインパクトが違う
○ 効率が良くなると DC レベルでメリット
○ 知見もリソースも潤沢
● そうじゃないと HTTP2 はいらない?
○ 小さくても複雑なアプリ
○ 中くらいでもよく使われるサービス
○ HTTP/1.1 との戦いは Web 全体の課題
57
使わないといけなくはない
使ってはいけなくもない
クライアントの普及
58
良く知らない
導入しない
理解した
導入しない
知らないうちに
導入してる
理解した
導入する
標準化の功。
すでにクライアントの普及は
始まってる。
あとは、サービスが対応する
かどうか次第。
カジュアルに使っちゃだめ
なの?
59
良く知らないで使うと失敗する?
割と単純に入れるだけで効果がある場合も
60also: http://bit.ly/1NLszIR
敷居は高いのか
● 突き詰めれば難しい
○ それは HTTP/1.1 も同じでは?
○ ノウハウがどこまで増えるか
● 敷居は仕様よりエコシステム
○ ツールなどの支援
○ フレームワークの抽象化
○ 気がついたら使ってた までの道のり
● HTTP/1.1 とのセマンティクス互換
○ 深入りしないなら入るのも抜けるのもできる
○ ミドルウェアの抽象化に任せていれば意識しない?
61
広がるエコシステム
● servlet 4.0
○ ミドルレイヤの仕様への導入: http://bit.ly/1PDc8iW
● HDFS
○ ミドルウェアの通信プロトコルに: http://bit.ly/1hvxhR9
● grpc:
○ 汎用 RPC として: http://bit.ly/1MI5QjP
● F5-BigIP:
○ gateway レベルで対応: http://bit.ly/1LmYxe4
● CURL:
○ いつものツールが: http://bit.ly/1Eb19wi
62
これからどうなるか?
63
研究課題
● priority 最適化戦略
● hpack の圧縮戦略
● push による cache 管理戦略
● フレームワーク API (Push etc)
● P2P など拡張仕様
64
HTTP3
65
https://github.com/HTTPWorkshop/workshop/wiki/HTTP-Ideas
TCP の限界
● TCP レベルの Head of Line Blocking
● 一本のコネクションに全て載せている
● パケットが一つ落ちると再送が発生
● コネクション全体が詰まる
66
TCP 自体は直せない
UDP それは最後の希望
67
● TCP 自体の問題
○ TCP 自体が持つ問題の解決は難しい
○ 別ポートプロトコルの普及は難しい
○ ミドルボックスを通れない
● UDP がある!!
○ UDP には良い意味で何も無い
○ そこに全て載せればいいのでは?
○ ポートも同じ、暗号化すればミドルボックスも通る
そして QUIC へ
● Head of Line Block を解消
● 0RTT での接続確立
● TLS 1.3 ベース
● 輻輳制御も独自に実装
● UDP 上に実装することで迅速なデプロイ
● TCP の限界を突破
68
HTTP2 over
QUIC over
UDP
Position Matrix
69
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
HTTP/1.1 は生き続けるので、
これからも問題なく動く。
Position Matrix
70
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
戦略としてはあり
(ただし留まり続けることが低コストである保証は無い)
Position Matrix
71
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
エコシステムの成
熟次第でそうなる
かも
Position Matrix
72
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
既存課題の解決
+
次のステージへ
Position Matrix
73
良く知らない
導入しない
理解した
導入しない
良く知らない
導入する
理解した
導入する
まずはここから
まとめ
● 今何が起こっているか
○ HTTP2 RFC が発行された
○ HTTP2 実装が進んでいる
○ エコシステムの芽も見え始めた
● これからどうなっていくのか
○ HTTP/1.1 が消える事は無い
○ HTTPS 化は止まらなそう
○ Web はまだまだ進化しそう
○ HTTP2 はそのうちのひとつ
○ そして QUIC へ
74
Next Checkpoint
75
Nginx ! Nginx ! Nginx !
76
by the end of 2015!!
すでに patch あり
http://nginx.org/patches/http2/
IETF at 横浜 (11月)
77
#http2study も日本でなにかやるかも
78
JOIN US !!
have a nice web :)
79
Jack

More Related Content

PDF
HTTP2 RFC 発行記念祝賀会
PDF
HTTP2入門
PPTX
HTTP/2でも初めてみます?
PDF
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
PDF
HTTP 2.0のヘッダ圧縮(HPACK)
PDF
HTTP/2時代のウェブサイト設計
PDF
HTTP/2の現状とこれから
PDF
IETF93 Prague報告Web関連+QUIC
HTTP2 RFC 発行記念祝賀会
HTTP2入門
HTTP/2でも初めてみます?
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
HTTP 2.0のヘッダ圧縮(HPACK)
HTTP/2時代のウェブサイト設計
HTTP/2の現状とこれから
IETF93 Prague報告Web関連+QUIC

What's hot (20)

PPTX
TLS & LURK @ IETF 95
PDF
H2O - making HTTP better
PDF
HTTP/2: ぼくたちのWebはどう変わるのか
PDF
QUIC標準化動向 〜2017/7
PPTX
最新Webプロトコル傾向と対策
PDF
Rust-DPDK
PDF
10分で作るクラスライブラリ
PDF
Stuart attacking http2 implementations truefinal-jp
PDF
Rust-DPDK
PDF
Ietf95 http2
PPT
ウェブアーキテクチャの歴史と未来
PDF
hpingで作るパケット
PDF
サーバPUSHざっくりまとめ
PDF
Lagopus, raw socket build
PDF
Lagopus 0.2.2
PPT
Webアプリケーションの無停止稼働
PDF
about Tcpreplay
PDF
NetBSD/evbarm on Raspberry Pi
PDF
http2study 20160423 IETF95 Report
PDF
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
TLS & LURK @ IETF 95
H2O - making HTTP better
HTTP/2: ぼくたちのWebはどう変わるのか
QUIC標準化動向 〜2017/7
最新Webプロトコル傾向と対策
Rust-DPDK
10分で作るクラスライブラリ
Stuart attacking http2 implementations truefinal-jp
Rust-DPDK
Ietf95 http2
ウェブアーキテクチャの歴史と未来
hpingで作るパケット
サーバPUSHざっくりまとめ
Lagopus, raw socket build
Lagopus 0.2.2
Webアプリケーションの無停止稼働
about Tcpreplay
NetBSD/evbarm on Raspberry Pi
http2study 20160423 IETF95 Report
HTML5と WebSocket / WebRTC / Web Audio API / WebGL 技術解説
Ad

Viewers also liked (20)

PPTX
20151110 ドメイン駆動設計によるサービス開発
PDF
Javaトラブルに備えよう #jjug_ccc #ccc_h2
PDF
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
PPTX
うしちゃん WebRTC Chat on SkyWayの開発コードw
PDF
Goにおける静的解析と製品開発への応用
PDF
Go静的解析ハンズオン
PDF
Static Analysis in Go
PDF
Namespace API を用いたマルチテナント型 Web アプリの実践
PDF
Cloud Functionsの紹介
PDF
粗探しをしてGoのコントリビューターになる方法
PDF
条件式評価器の実装による管理ツールの抽象化
PDF
Go1.8 for Google App Engine
PDF
Mobile Apps by Pure Go with Reverse Binding
PDF
goパッケージで型情報を用いたソースコード検索を実現する
PDF
GoによるiOSアプリの開発
PDF
Cloud functionsの紹介
PDF
メルカリ・ソウゾウでは どうGoを活用しているのか?
PDF
オススメの標準・準標準パッケージ20選
PDF
Google Assistant関係のセッションまとめ
PPTX
WebRTC Browsers n Stacks Implementation differences
20151110 ドメイン駆動設計によるサービス開発
Javaトラブルに備えよう #jjug_ccc #ccc_h2
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
うしちゃん WebRTC Chat on SkyWayの開発コードw
Goにおける静的解析と製品開発への応用
Go静的解析ハンズオン
Static Analysis in Go
Namespace API を用いたマルチテナント型 Web アプリの実践
Cloud Functionsの紹介
粗探しをしてGoのコントリビューターになる方法
条件式評価器の実装による管理ツールの抽象化
Go1.8 for Google App Engine
Mobile Apps by Pure Go with Reverse Binding
goパッケージで型情報を用いたソースコード検索を実現する
GoによるiOSアプリの開発
Cloud functionsの紹介
メルカリ・ソウゾウでは どうGoを活用しているのか?
オススメの標準・準標準パッケージ20選
Google Assistant関係のセッションまとめ
WebRTC Browsers n Stacks Implementation differences
Ad

Similar to HTTP2 時代の Web - web over http2 (20)

PPTX
HTML はネットワークを いかに変えてきたか
PDF
HTTP/2.0と標準化
PPTX
HTTP/2入門
PPTX
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
PDF
20120525 mt websocket
PDF
最新プロトコル HTT/2 とは
PDF
HTTP/2.0がもたらす Webサービスの進化(後半)
PDF
第43回HTML5とか勉強会 SPDY/QUICデモ
PDF
いまさら聞けないHTML5概要
PDF
Janogia20120921 yoshinotakeshi
PDF
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
PDF
HTTPを理解する
 
PPTX
httpbis interim とhttp2.0相互接続試験の話
PDF
【17-A-5】ウェブアーキテクチャの歴史と未来
PPTX
HTML5から始まる技術革新
PDF
20161017 セレス合同勉強会http:2 web公開用
PPTX
新しいWEB時代の幕開けだ!次世代プロトコルHTTP2.0でWEBを最適化しよう!
PPTX
HTTPとサーバ技術の最新動向
PPT
Lesson01
 
HTML はネットワークを いかに変えてきたか
HTTP/2.0と標準化
HTTP/2入門
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
20120525 mt websocket
最新プロトコル HTT/2 とは
HTTP/2.0がもたらす Webサービスの進化(後半)
第43回HTML5とか勉強会 SPDY/QUICデモ
いまさら聞けないHTML5概要
Janogia20120921 yoshinotakeshi
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
HTTPを理解する
 
httpbis interim とhttp2.0相互接続試験の話
【17-A-5】ウェブアーキテクチャの歴史と未来
HTML5から始まる技術革新
20161017 セレス合同勉強会http:2 web公開用
新しいWEB時代の幕開けだ!次世代プロトコルHTTP2.0でWEBを最適化しよう!
HTTPとサーバ技術の最新動向
Lesson01
 

More from Jxck Jxck (20)

PDF
Http2 on go1.6rc2
PDF
ORTC SVC SimulCast
PDF
Isomorphic Architecture & Interface
PDF
Extensible web #html5j
PDF
Extensible web
PDF
HTTP2Study chronicle #http2conf
PDF
mozaicfm-ep8 #altJS @ll-diver
PDF
Updates of socket.io@1.0
PDF
Why HTML Form dose not support PUT & DELETE ?
PDF
Next generation web talk @cross2014
PDF
HTTP2 & HPACK #pyfes 2013-11-30
PDF
Network server in go #gocon 2013-11-14
PDF
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
PDF
Http2.0 Guide 2013-08-14 #http2study
PDF
Gtug girls meetup web socket handson
PDF
Next generation web talk @cross2013
PDF
Nodefest2011-Live
PDF
Test it in Node.js
PDF
Real Time App with Node.js
PDF
I visited JSConf + NodeConf + Joyent
Http2 on go1.6rc2
ORTC SVC SimulCast
Isomorphic Architecture & Interface
Extensible web #html5j
Extensible web
HTTP2Study chronicle #http2conf
mozaicfm-ep8 #altJS @ll-diver
Updates of socket.io@1.0
Why HTML Form dose not support PUT & DELETE ?
Next generation web talk @cross2014
HTTP2 & HPACK #pyfes 2013-11-30
Network server in go #gocon 2013-11-14
SPDY & HTTP2.0 & QUIC - #bpstudy 2013-08-28
Http2.0 Guide 2013-08-14 #http2study
Gtug girls meetup web socket handson
Next generation web talk @cross2013
Nodefest2011-Live
Test it in Node.js
Real Time App with Node.js
I visited JSConf + NodeConf + Joyent

HTTP2 時代の Web - web over http2