Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kazuho Oku
PPTX, PDF
45,588 views
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
DeNA Techcon (2016/01/29) 登壇資料
Internet
◦
Read more
118
Save
Share
Embed
Embed presentation
Download
Downloaded 101 times
1
/ 85
2
/ 85
3
/ 85
4
/ 85
5
/ 85
6
/ 85
7
/ 85
8
/ 85
9
/ 85
10
/ 85
11
/ 85
12
/ 85
13
/ 85
14
/ 85
15
/ 85
16
/ 85
17
/ 85
18
/ 85
19
/ 85
20
/ 85
21
/ 85
22
/ 85
23
/ 85
24
/ 85
25
/ 85
26
/ 85
27
/ 85
28
/ 85
29
/ 85
30
/ 85
31
/ 85
32
/ 85
33
/ 85
34
/ 85
35
/ 85
36
/ 85
37
/ 85
38
/ 85
39
/ 85
40
/ 85
41
/ 85
42
/ 85
43
/ 85
44
/ 85
45
/ 85
46
/ 85
47
/ 85
48
/ 85
49
/ 85
50
/ 85
51
/ 85
52
/ 85
53
/ 85
54
/ 85
55
/ 85
56
/ 85
57
/ 85
58
/ 85
59
/ 85
60
/ 85
61
/ 85
62
/ 85
63
/ 85
64
/ 85
65
/ 85
66
/ 85
67
/ 85
68
/ 85
69
/ 85
70
/ 85
71
/ 85
72
/ 85
73
/ 85
74
/ 85
75
/ 85
76
/ 85
77
/ 85
78
/ 85
79
/ 85
80
/ 85
81
/ 85
82
/ 85
83
/ 85
84
/ 85
85
/ 85
More Related Content
PDF
Elasticsearchを使うときの注意点 公開用スライド
by
崇介 藤井
PDF
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
KEY
Go言語のスライスを理解しよう
by
Yasutaka Kawamoto
PDF
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
by
whywaita
PPTX
地理分散DBについて
by
Kumazaki Hiroki
PPTX
脱RESTful API設計の提案
by
樽八 仲川
Elasticsearchを使うときの注意点 公開用スライド
by
崇介 藤井
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
by
infinite_loop
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
Go言語のスライスを理解しよう
by
Yasutaka Kawamoto
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
by
whywaita
地理分散DBについて
by
Kumazaki Hiroki
脱RESTful API設計の提案
by
樽八 仲川
What's hot
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
by
Amazon Web Services Japan
PDF
老害について
by
Ken SASAKI
PDF
第1回 配信講義 計算科学技術特論A (2021)
by
RCCSRENKEI
PDF
BigQueryでJOINを極める!
by
Miki Katsuragi
PPTX
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
by
Shinji Takao
PDF
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
by
whywaita
PPTX
NW入門
by
Shuntaro Saiba
PDF
MySQLやSSDとかの話 前編
by
Takanori Sejima
PDF
Dockerからcontainerdへの移行
by
Kohei Tokunaga
PPTX
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
PDF
A5 SQL Mk-2の便利な機能をお教えします
by
ester41
PDF
Apache NiFi の紹介 #streamctjp
by
Yahoo!デベロッパーネットワーク
PDF
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
PDF
PostgreSQL Unconference #26 No Error on PostgreSQL
by
Noriyoshi Shinoda
PPTX
やってはいけない空振りDelete
by
Yu Yamada
PDF
DNS再入門
by
Takashi Takizawa
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
PDF
初心者向けWebinar AWSで開発環境を構築しよう
by
Amazon Web Services Japan
PPTX
Spring CloudとZipkinを利用した分散トレーシング
by
Rakuten Group, Inc.
PPTX
これがCassandra
by
Takehiro Torigaki
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
by
Amazon Web Services Japan
老害について
by
Ken SASAKI
第1回 配信講義 計算科学技術特論A (2021)
by
RCCSRENKEI
BigQueryでJOINを極める!
by
Miki Katsuragi
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
by
Shinji Takao
Development myshoes and Provide Cycloud-hosted runner -- GitHub Actions with ...
by
whywaita
NW入門
by
Shuntaro Saiba
MySQLやSSDとかの話 前編
by
Takanori Sejima
Dockerからcontainerdへの移行
by
Kohei Tokunaga
押さえておきたい、PostgreSQL 13 の新機能!!(Open Source Conference 2021 Online/Hokkaido 発表資料)
by
NTT DATA Technology & Innovation
A5 SQL Mk-2の便利な機能をお教えします
by
ester41
Apache NiFi の紹介 #streamctjp
by
Yahoo!デベロッパーネットワーク
Amazon Aurora - Auroraの止まらない進化とその中身
by
Amazon Web Services Japan
PostgreSQL Unconference #26 No Error on PostgreSQL
by
Noriyoshi Shinoda
やってはいけない空振りDelete
by
Yu Yamada
DNS再入門
by
Takashi Takizawa
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
by
NTT DATA Technology & Innovation
初心者向けWebinar AWSで開発環境を構築しよう
by
Amazon Web Services Japan
Spring CloudとZipkinを利用した分散トレーシング
by
Rakuten Group, Inc.
これがCassandra
by
Takehiro Torigaki
Viewers also liked
PPTX
HTTPとサーバ技術の最新動向
by
Kazuho Oku
PDF
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
by
Makoto Haruyama
PDF
Developing the fastest HTTP/2 server
by
Kazuho Oku
PDF
H2O - making HTTP better
by
Kazuho Oku
PPTX
DeNAが取り組む Software Engineer in Test
by
Masaki Nakagawa
PPTX
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
by
Toshiharu Sugiyama
PDF
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
by
Kentaro Matsumae
PDF
DeNAのゲーム開発を支える技術 (クライアントサイド編)
by
denatech2016
PDF
B2B2Cなヘルスケアサービスの作り方
by
Tomohiro MITSUMUNE
PDF
DeNAインフラの今とこれから - 今編 -
by
Tomoya Kabe
PDF
これからの Microservices
by
Toru Yamaguchi
PDF
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
by
dena_study
PDF
Reorganizing Website Architecture for HTTP/2 and Beyond
by
Kazuho Oku
PDF
チラシルiOSでの広告枠開発
by
Satoshi Takano
PDF
自動運転に向けた取り組みと安全管理
by
Kuwabara Kunihito
PDF
SmartNews Ads System - AWS Summit Tokyo 2015
by
SmartNews, Inc.
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
by
Toru Kawamura
PDF
DeNA TechCon2016 360VR Live Streaming
by
Takeyuki Ogura
PDF
実世界の人工知能@DeNA TechCon 2017
by
Preferred Networks
PDF
HTTP/2の課題と将来
by
Kazuho Oku
HTTPとサーバ技術の最新動向
by
Kazuho Oku
DeNAオリジナル ゲーム専用プラットフォーム Sakashoについて
by
Makoto Haruyama
Developing the fastest HTTP/2 server
by
Kazuho Oku
H2O - making HTTP better
by
Kazuho Oku
DeNAが取り組む Software Engineer in Test
by
Masaki Nakagawa
DeNAtechcon_DeNAのセキュリティの取り組みと、スマートフォンセキュリティ(same-origin policy)
by
Toshiharu Sugiyama
iOSレガシーコード改善ガイド〜マンガボックス開発における事例〜
by
Kentaro Matsumae
DeNAのゲーム開発を支える技術 (クライアントサイド編)
by
denatech2016
B2B2Cなヘルスケアサービスの作り方
by
Tomohiro MITSUMUNE
DeNAインフラの今とこれから - 今編 -
by
Tomoya Kabe
これからの Microservices
by
Toru Yamaguchi
DeNA の新しいネイティブ開発(パズル戦隊デナレンジャー)
by
dena_study
Reorganizing Website Architecture for HTTP/2 and Beyond
by
Kazuho Oku
チラシルiOSでの広告枠開発
by
Satoshi Takano
自動運転に向けた取り組みと安全管理
by
Kuwabara Kunihito
SmartNews Ads System - AWS Summit Tokyo 2015
by
SmartNews, Inc.
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
by
Toru Kawamura
DeNA TechCon2016 360VR Live Streaming
by
Takeyuki Ogura
実世界の人工知能@DeNA TechCon 2017
by
Preferred Networks
HTTP/2の課題と将来
by
Kazuho Oku
Similar to ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
PPTX
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
by
SEGADevTech
PDF
HTTP/2時代のウェブサイト設計
by
Kazuho Oku
PDF
HTTP入門
by
Sota Sugiura
PDF
HTTP入門
by
Sho A
PPTX
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
PDF
HTTP/2.0と標準化
by
Taketo Takashima
PDF
HTTP/2の現状とこれから
by
shigeki_ohtsu
PDF
HTTP/2.0がもたらすWebサービスの進化(後半)
by
shigeki_ohtsu
PDF
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
by
hagino 3000
PPTX
Httpを振り返ってみる
by
galluda
PDF
HTTP2入門
by
Sota Sugiura
PPTX
HTML はネットワークをいかに変えてきたか
by
彰 村地
PPTX
新しいWEB時代の幕開けだ!次世代プロトコルHTTP2.0でWEBを最適化しよう!
by
Citrix Systems Japan
PPTX
Speed Up Web 2012
by
彰 村地
PDF
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
by
Naotoshi Seo
PDF
第43回HTML5とか勉強会 SPDY/QUICデモ
by
shigeki_ohtsu
PDF
HTTP2 時代の Web - web over http2
by
Jxck Jxck
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
by
SEGADevTech
HTTP/2時代のウェブサイト設計
by
Kazuho Oku
HTTP入門
by
Sota Sugiura
HTTP入門
by
Sho A
AWSとmod_pagespeedで楽々サクサク高速化!!
by
aasakawa
HTTP/2.0と標準化
by
Taketo Takashima
HTTP/2の現状とこれから
by
shigeki_ohtsu
HTTP/2.0がもたらすWebサービスの進化(後半)
by
shigeki_ohtsu
ハイパフォーマンスブラウザネットワーキング 12章「HTTP 2.0」と現在の仕様
by
hagino 3000
Httpを振り返ってみる
by
galluda
HTTP2入門
by
Sota Sugiura
HTML はネットワークをいかに変えてきたか
by
彰 村地
新しいWEB時代の幕開けだ!次世代プロトコルHTTP2.0でWEBを最適化しよう!
by
Citrix Systems Japan
Speed Up Web 2012
by
彰 村地
HTTP/2 でリバプロするだけでグラフツールを 高速化できた話
by
Naotoshi Seo
第43回HTML5とか勉強会 SPDY/QUICデモ
by
shigeki_ohtsu
HTTP2 時代の Web - web over http2
by
Jxck Jxck
More from Kazuho Oku
PDF
HTTP/2で 速くなるとき ならないとき
by
Kazuho Oku
PDF
H2O - the optimized HTTP server
by
Kazuho Oku
PPTX
Recent Advances in HTTP, controlling them using ruby
by
Kazuho Oku
PDF
TLS 1.3 と 0-RTT のこわ〜い話
by
Kazuho Oku
PPTX
Programming TCP for responsiveness
by
Kazuho Oku
PPTX
JSX 速さの秘密 - 高速なJavaScriptを書く方法
by
Kazuho Oku
PDF
QUIC標準化動向 〜2017/7
by
Kazuho Oku
PPTX
JSON SQL Injection and the Lessons Learned
by
Kazuho Oku
PDF
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
by
Kazuho Oku
PPTX
JSX の現在と未来 - Oct 26 2013
by
Kazuho Oku
PPTX
JSX
by
Kazuho Oku
PDF
JSX - 公開から1年を迎えて
by
Kazuho Oku
PDF
H2O - making the Web faster
by
Kazuho Oku
PPTX
Cache aware-server-push in H2O version 1.5
by
Kazuho Oku
PDF
Programming TCP for responsiveness
by
Kazuho Oku
PPTX
TLS & LURK @ IETF 95
by
Kazuho Oku
PPTX
JSX Design Overview (日本語)
by
Kazuho Oku
PDF
JSX - developing a statically-typed programming language for the Web
by
Kazuho Oku
PPTX
Using the Power to Prove
by
Kazuho Oku
PPTX
JSX Optimizer
by
Kazuho Oku
HTTP/2で 速くなるとき ならないとき
by
Kazuho Oku
H2O - the optimized HTTP server
by
Kazuho Oku
Recent Advances in HTTP, controlling them using ruby
by
Kazuho Oku
TLS 1.3 と 0-RTT のこわ〜い話
by
Kazuho Oku
Programming TCP for responsiveness
by
Kazuho Oku
JSX 速さの秘密 - 高速なJavaScriptを書く方法
by
Kazuho Oku
QUIC標準化動向 〜2017/7
by
Kazuho Oku
JSON SQL Injection and the Lessons Learned
by
Kazuho Oku
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
by
Kazuho Oku
JSX の現在と未来 - Oct 26 2013
by
Kazuho Oku
JSX
by
Kazuho Oku
JSX - 公開から1年を迎えて
by
Kazuho Oku
H2O - making the Web faster
by
Kazuho Oku
Cache aware-server-push in H2O version 1.5
by
Kazuho Oku
Programming TCP for responsiveness
by
Kazuho Oku
TLS & LURK @ IETF 95
by
Kazuho Oku
JSX Design Overview (日本語)
by
Kazuho Oku
JSX - developing a statically-typed programming language for the Web
by
Kazuho Oku
Using the Power to Prove
by
Kazuho Oku
JSX Optimizer
by
Kazuho Oku
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
1.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ウェブを速くするために DeNAがやっていること HTTP/2と、さらにその先 DeNA Co., Ltd. Kazuho Oku 1
2.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. DeNAは○○の会社 2ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
3.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. DeNAはウェブの会社 3ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
4.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. DeNAはウェブの会社 ウェブ技術を使ったサービス群 ⁃ Mobage ⁃ DeNAショッピング・モバオク ⁃ DeNA Palette ⁃ … スマホアプリも HTTP や WebView を使用 4ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
5.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. DeNAはウェブの会社 (まあ、だいたい) 5ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
6.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ウェブ基盤技術の研究開発 6ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
7.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ウェブ基盤技術の研究開発 2種類のアプローチ ⁃ スループットの最適化 ⁃ レスポンスタイムの高速化 メリットは何? 7ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
8.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. スループットの最適化=コスト削減 HandlerSocket ⁃ DeNA の樋口が開発 ⁃ MySQL Conference Community Awards 2011 受賞 HandlerSocket とは? ⁃ MySQL サーバむけ KVS プロトコル実装 ⁃ 単純なクエリに SQL を使わないことにより、大量の 接続を高速に処理 ⁃ 効果: • スレーブ台数とネットワーク負荷を削減 • サーバが数千台規模だと、削減コスト>>開発費 8ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
9.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. レスポンスタイム削減=売上増大 9ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 出典: http://radar.oreilly.com/2009/06/bing-and-google-agree-slow-pag.html
10.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 本日のテーマ HTTP/2 の基本 HTTP/2 の最適化 ⁃ レスポンスタイム最適化 ⁃ スループット最適化 H2O と他ソフトウェアの実装の話を織り交ぜつつ 10ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
11.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O DeNA で開発している HTTP/2 サーバ ⁃ 中の人: Kazuho Oku (me) タイムライン: ⁃ 2014年7月: 開発開始 ⁃ 2014年12月: 初回リリース (0.9.0) ⁃ 2014年2月: 1.0リリース • HTTP/2策定作業の完了と同時 ⁃ 現在: 1.7.0beta-4 スループットとレスポンスタイムの双方で、おそらく世 界最速の HTTP/2 実装 11ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
12.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2 誕生の背景 12ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
13.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 転送データ量は増大中 13ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 出典: http://httparchive.org/trends.php?s=All&minlabel=Aug+1+2011&maxlabel=Aug+1+2015#bytesTotal&reqTotal
14.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. バンド幅も増大中 エンドユーザのバンド幅は年率50%で増加(ニールセン の法則) 14ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 出典: http://www.nngroup.com/articles/law-of-bandwidth/
15.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 未来はバラ色? 15ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
16.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ページロード時間はバンド幅に比例しない 16ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 出典: More Bandwidth Doesn't Matter - 2011 Mike Belshe (Google) ※実効バンド幅は1.6Mbps程度で頭打ちに
17.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ページロードはレイテンシが小さいほど速い 17ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 出典: More Bandwidth Doesn't Matter - 2011 Mike Belshe (Google)
18.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Why? 18ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
19.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/1.1は多重性がない 19ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 RTT request response request response client server … RTT HTTP/1.1では、1RTTあたり1リクエスト/レスポンスし か送受信できない ⁃ RTT=ラウンドトリップタイム • レイテンシの大きさを表す値 緩和策:複数のTCP接続を使う ⁃ 同時6本が一般的 • 1RTTあたり6リクエスト!!! • それでも遅い
20.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/1.1パイプラインの問題 20ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 RTT requests responses client server 仕様上、レスポンス受信前に次のリクエストを送信可能 問題: ⁃ 切断時に、レスポンス未受信のリクエストを再送信し ていいかわからない • サーバが同じリクエストを複数回処理する可能性 ⁃ 先行リクエストの処理に時間がかかると後続が詰まる (head-of-line blocking) ⁃ バグのあるサーバ実装が多い
21.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. レイテンシは今後も小さくならない 光の速度はかわらない ⁃ アメリカまで光ファイバーで往復すれば80ミリ秒 携帯回線はレイテンシが大きい ⁃ LTE ~ 50ms 21ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
22.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. やばい!ウェブが遅くなってきた! 22ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
23.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. どうしよう? 23ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
24.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 解決策:レイテンシに負けないプロトコルを作る 24ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
25.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2! 25ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
26.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2 RFC 7540 (2015/5) ⁃ Google の QUIC プロトコルの実験を参考に規格化 基本的な技術要素 ⁃ バイナリプロトコル ⁃ 多重化 ⁃ ヘッダ圧縮 26ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
27.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. バイナリプロトコルな理由 脆弱性を防ぐ ⁃ HTTP Request/Response Splitting Attack • HTTP/1.1のパーサによる解釈の差をつく攻撃 転送データ量の低減 ⁃ 細かな粒度でレスポンスの順序を変更したい • 転送単位が小さいなら、その単位毎につけるヘッダは小さ くないといけない → バイナリにするしかない ⁃ ヘッダ圧縮 • 圧縮するんだから、どのみちバイナリ 全てのデータは、「フレーム」に分解して送受信 27ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
28.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 典型的な通信フロー (クライアントが送信) GET / HTTP/1.1 Host: example.com User-Agent: MySuperClient/1.0 (サーバが送信) HTTP/1.1 200 OK Date: Thu, 20 Aug 2015 06:48:36 GMT Server: Apache/2.2.29 (Unix) Last-Modified: Wed, 12 Mar 2014 05:03:17… ETag: "50b5e5-33a-4f461c1300f40" Content-Length: 826 Content-Type: text/html <html> … 28ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 HEADERSフレーム(クライアント送信): :method: GET :scheme: https :authority: example.com :path: / user-agent: MySuperClient/1.0 HEADERSフレーム(サーバ送信): :status: 200 date: Thu, 20 Aug 2015 06:48:36 GMT server: Apache/2.2.29 (Unix) last-Modified: Wed, 12 Mar 2014 05:03:… etag: "50b5e5-33a-4f461c1300f40" content-length: 826 content-type: text/html DATAフレーム(サーバ送信): <html>…
29.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 多重化 同時に100以上のリクエストを発行可能 任意のタイミングでリクエスト送信可能 レスポンスの順序に制限なし レスポンスを織り交ぜ可能 ⁃ DATAのstream IDを見よ 29ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 client server …
30.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (1) HTTP/1.1のヘッダは大きい ⁃ リクエスト: • 最低でも300バイト程度 • Google Analytics使うとCookieで+200バイトなど ⁃ レスポンスも通常300バイト程度 100個レスポンスを受け取るなら、それだけで30KB ⁃ レイテンシがなくなるなら、ヘッダサイズも小さくし たい • 大量に 304 Not Modified を返すこととかありますよね 30ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
31.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (2) HPACK (RFC 7541) として規定 技術要素 ⁃ 初見の文字列は、静的ハフマン圧縮 ⁃ 2回目以降は、前回出現時からのオフセットで表現 ⁃ 頻出文字列は、固定テーブルのインデックスで表現 31ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
32.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (3) 想定例: ⁃ https://example.com/ にアクセス ⁃ 参照されている /banner.jpg と /icon.png をロード 32ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
33.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (4) / へのリクエスト 33ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 (圧縮前: 291バイト) :method: GET :scheme: https :authority: example.com :path: / user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/… accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 accept-language: ja,en-US;q=0.7,en;q=0.3 accept-Encoding: gzip, deflate (圧縮後: 147バイト) 02 # :method: GET 07 # :scheme: https 41 88 2f 91 d3 5d 05 5c 87 a7 # :authority: example.com 04 # :path: / 7a bc d0 7f 66 a2 81 b0 da e0 53 ...(46 bytes) # user-agent: ... 53 b0 49 7c a5 89 d3 4d 1f 43 ae ...(50 bytes) # accept: ... 51 93 e8 3f a2 d4 b7 0d df 7d a0 ...(21 bytes) # accept-language: ... 10 # accept-encoding: ...
34.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (5) /banner.jpg へのリクエスト 34ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 (圧縮前: 300バイト) :method: GET :scheme: https :authority: example.com :path: /banner.jp user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/… accept: image/png,image/*;q=0.8,*/*;q=0.5 accept-language: ja,en-US;q=0.7,en;q=0.3 accept-encoding: gzip, deflate referer: https://example.com/ (圧縮後: 62バイト) 02 # :method: GET 07 # :scheme: https c1 # :authority: example.com 44 89 62 31 d5 51 6c 5f a5 73 7f # :path: /banner.jpg c1 # user-agent: … 53 9a 35 23 98 ac 57 54 df 46 a4 ...(28 bytes) # accept: ... c0 # accept-language: ... 10 # accept-encoding: ... 73 8f 9d 29 ad 17 18 60 be 47 4d ...(17 bytes) # referer: ...
35.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (6) /icon.png へのリクエスト 35ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 (圧縮前: 298バイト) :method: GET :scheme: https :authority: example.com :path: /icon.png user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/… accept: image/png,image/*;q=0.8,*/*;q=0.5 accept-language: ja,en-US;q=0.7,en;q=0.3 accept-encoding: gzip, deflate referer: https://example.com/ (圧縮後: 17バイト) 02 # :method: GET 07 # :scheme: https c4 # :authority: example.com 44 87 60 c4 3d 4b d7 54 df # :path: /icon.png c4 # user-agent: … c0 # accept: ... c2 # accept-language: ... 10 # accept-encoding: ... bf # referer: ...
36.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ヘッダ圧縮 (7) 最初のリクエストでもそこそこ圧縮される 画像等アセットへのリクエストが繰り返すとすごい縮む ⁃ レスポンスも同様 36ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 リクエストパス ヘッダサイズ(圧縮前,バイト) ヘッダサイズ(圧縮後,バイト) 圧縮率 / 291 147 50.5% /banner.jpg 300 62 20.7% /icon.png 298 17 5.7%
37.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ここまでのまとめ HTTP/2の基本 ⁃ 多重化によりレイテンシの影響を低減 ⁃ ヘッダ圧縮により通信量を低減 上記2点を体感できるデモ ⁃ https://www.symfony.fi/entry/compare- resource-loading-between-http-2-and-http-1-1 37ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
38.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2 におけるレスポンスタイム最適化 38ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
39.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2のレスポンスタイムベンチマーク コンテンツ系ウェブサイトが表示されるまでの時間測定 初期描画(first-paint)までの時間に大差、H2O が最短 39ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
40.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 差が出た理由: 優先度制御 40ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
41.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2 の規定する優先度制御 クライアントがリクエスト毎に優先度を指定する ⁃ 2種類の制御手法の組み合わせ • 重みづけ (weight) ⁃ 値に比例したバンド幅の配分 • 依存関係 (dependency) ⁃ 依存されているレスポンスを先に送信 ⁃ グループ化にも利用 サーバは指定された優先度を「参考にする」 41ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
42.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御実装 42ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
43.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 43ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 Unblocked weight: 101 1. 初期状態(接続直後)
44.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 44ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 Unblocked weight: 101 2. HTML受信開始
45.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 45ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 CSS weight: 32 JS (HEAD) weight: 32 Unblocked weight: 101 3. <HEAD>にあったCSSとJavaScriptをリクエスト ⁃ CSS/JSを圧倒的に優先 • Follower vs. CSS/JS の weight は 1:32:32:32…
46.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 46ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 Unblocked weight: 101 4. CSSとJavaScriptの受信完了 ⁃ HTMLの<BODY>部も届き始める ⁃ first paint (ウェブページをレンダリングできるぞ!)
47.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 47ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 Image weight: 22 Image weight: 22 Image weight: 22 Unblocked weight: 101 5. <BODY>にあった<IMG>の画像をリクエスト ⁃ 画像はHTMLよりちょっと低めのweight • ブラウザ画面では画像がじわじわ表示
48.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 48ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 Image weight: 22 Image weight: 22 Image weight: 22 Unblocked weight: 101 JS (BODY) weight: 32 6. <BODY>末尾のJavaScriptは別の優先度で
49.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 49ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 Image weight: 22 Image weight: 22 Image weight: 22 Unblocked weight: 101 JS (BODY) weight: 32 7. HTMLの配信完了
50.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 50ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 Image weight: 22 Image weight: 22 Unblocked weight: 101 8. JavaScriptの配信も完了 ⁃ DOMContentLoaded
51.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 51ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 Unblocked weight: 101 9. 全てのダウンロードが完了 ⁃ onload event
52.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. Firefox の優先度制御 52ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root Leader weight: 201 Follower weight: 1 HTML weight: 32 Image weight: 22 Image weight: 22 Image weight: 22 CSS weight: 32 JS (HEAD) weight: 32 Unblocked weight: 101 JS (BODY) weight: 32 まとめ: ⁃ 優先度(図の縦方向)と重みづけを併用 ⁃ リソースの「利用形態」にあわせて優先度を設定
53.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O の優先度制御実装 53ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
54.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O の優先度制御実装 H2O は ⁃ Webブラウザの指示に従い、バンド幅を配分 • 割当は HTTP/2 の規定どおり ⁃ 優先度制御の粒度が細かい • 16KB単位でストリームを切り替え • 約64KB単位でバッファリング 全ての HTTP/2 サーバが優先度制御を(正しく)実装し ているわけではない 54ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
55.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O の優先度制御実装 優れた優先度制御の要件: weighted fair queuing ⁃ 次に送信すべきストリームを、queue の中から • 重み (weight) に基づいて • 公平 (fair) に選択 H2O の wfq は、リングバッファを使用した O(1) 実装 ⁃ ツリーの深さに対しては高速な O(n) • タイトなループなので高速 ⁃ 高速な実装 → 細粒度で送信ストリームを切替可能 他の HTTP/2 実装も wfq を採用へ ⁃ nghttp2, Apache (mod_h2), hyper, ... 55ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
56.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 他のWebブラウザの優先度制御実装 56ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
57.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御 (Chromeの場合) 57ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 重みづけのみを使用(依存関係は未使用) HTTP/2でfirst-paintは劣化 0 0.5 1 1.5 2 2.5 3 Nginx (HTTP/1.1) Nginx (SPDY/3.1) H2O (HTTP/2) Chrome/43 Download Timing (unit: seconds, latency: 100ms) first paint load complete
58.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御 (Chromeの場合) 58ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 1. HTMLを受信開始 Root HTML weight: 256
59.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御 (Chromeの場合) 59ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 2. <HEAD>をパース、CSSとJSをリクエスト Root HTML weight: 256 CSS weight: 220 JS weight: 183
60.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御 (Chromeの場合) 60ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 3. <BODY>が徐々に到着、画像もリクエスト ⁃ この時点でのバンド幅の配分は? • HTML:CSS:JS:Image*3 = 256:220:183:330 • CSSやJSよりも画像のほうがバンド幅を食ってる ⁃ これではfirst-paint が早くならない Root HTML weight: 256 CSS weight: 220 JS weight: 183 Image weight: 110 Image weight: 110 Image weight: 110
61.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御 (他のウェブブラウザの場合) 61ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Edge – 優先度制御なし Safari – 優先度制御なし サーバ側でなんとかしないと… Root HTML weight: 16 CSS weight: 16 JS weight: 16 Image weight: 16 Image weight: 16 Image weight: 16
62.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O による優先度の書き換え クライアントが依存関係ツリーを構築しない場合に レンダリングをブロックしそうな content-type のレス ポンスを最優先で配信 62ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 Root HTML weight: 16 CSS weight: max JS weight: max Image weight: 16 Image weight: 16 Image weight: 16 (internal root)
63.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O の reprioritize-blocking-assets オプション first paint が大幅に改善 63ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 0 0.5 1 1.5 2 2.5 3 Nginx (HTTP/1.1) Nginx (SPDY/3.1) H2O (HTTP/2) H2O+repriori ze (HTTP/2) Chrome/43 Download Timing (unit: seconds, latency: 100ms) first paint load complete
64.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. 優先度制御まとめ ユーザの体感速度を大幅に向上させる技術 ⁃ first-paint time が改善するため クライアント側: ⁃ Firefox – すばらしい ⁃ 他のWebブラウザ – 要改善 サーバ側: ⁃ 実装状況がまちまち ⁃ H2O は Firefox 以外のブラウザむけの最適化も実装 64ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
65.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ 65ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
66.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ HTTP/2はRTTを隠蔽する技術 でも、1RTT(リクエストを投げてからレスポンスを受け 取るまで)は絶対かかるよね? それ、0RTTでできるよ! ⁃ サーバが、クライアントの発行するリクエストを予測 して、レスポンスをプッシュすればいい ※これ以外の目的でも使える技術ですが、今回はウェブブラ ウザのレスポンスタイムに絞った議論をします 66ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
67.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ 例: RTT=50ms, アプリサーバの処理時間=200ms 67ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 req. processrequest push-asset HTML push-asset push-asset push-asset req. processrequest asset HTML asset asset asset req. 450ms(5RTT+processingme) 250ms(1RTT+processingme) without push with push
68.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ CDNによるウェブ高速化にも応用可能 ⁃ アプリサーバの応答を待つ間も回線を有効活用可能 ⁃ アプリ提供者は、その分、アプリサーバの設置拠点を 減らすことが可能に 68ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 req. push-asset HTML push-asset push-asset push-asset client edge server (CDN) app. server req. HTML
69.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ 実用にむけた課題: ⁃ (クライアントに頼らない)優先度制御 ⁃ プッシュの起動方法 ⁃ ブラウザキャッシュとの兼ね合い 69ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
70.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュと優先度制御 RFC どおり実装してあっても、あまり役に立たない ⁃ プッシュされるレスポンスは、プッシュを 起動したレスポンスに依存する形でスケ ジュールされるから H2O は、プッシュの mime-type を見て優先度を決定 ⁃ reprioritize-blocking-assets と同様 70ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先 HTML weight: ?? CSS (pushed) weight: 16
71.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュの使い方 (1) Link: rel=preload ヘッダ ⁃ アプリサーバが返す Link ヘッダを認識してプッシュ HTTP/1.1 200 OK Content-Type: text/html Link: </style.css>; rel=preload # このヘッダ!!! ⁃ H2O, nghttpx (nghttp2), mod_h2 (Apache) が対応 ⁃ 問題: アプリサーバが応答を返すまでプッシュ不可能 71ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
72.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュの使い方 (2) H2O では、アプリサーバへリクエストを転送する前にプ ッシュを開始可能 # 1. mrubyハンドラでプッシュを開始 (Linkヘッダをセット) mruby.handler: | Proc.new do |env| [399, { "Link" => "</style.css>; rel=preload" }, []] end # 2. リバースプロキシハンドラがアプリサーバにリクエストを転送 proxy.reverse.url: http://app.example.com:8080/ 72ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
73.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュ vs. ブラウザキャッシュ キャッシュ済のファイルはプッシュしたくない ⁃ バンド幅(と場合によっては時間)のムダ キャッシュの有無を判断する方法は? ⁃ ブラウザキャッシュ内の状況を確認するためにリクエ スト/レスポンスを送信してはいけない • そのために1RTTかかるとプッシュのメリットがなくなる 73ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
74.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. cache-aware server-push H2O 1.5 以降で実装 (experimental) ブラウザキャッシュ内の CSS, JS を fingerprinting ⁃ Golomb coded sets (bloom filterの圧縮版) を使用 fingerprint を全てのリクエストに cookie として添付 ⁃ cookie サイズは100バイト程度 • さらに HPACK による圧縮が効く ⁃ ServiceWorker を使った実装も開発中 (jxck氏) H2O は fingerprint を基に、ウェブアプリの要求するプ ッシュを実際に行うか判定 ⁃ プッシュした場合は fingerprint を更新 74ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
75.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. cache-aware server-push cookieを使うアプローチの問題: ⁃ Webブラウザキャッシュに何が入ってるか、ブラウザ 以外には正確には分からない ⁃ cookieは消される可能性/細かな更新が困難 理想的には、Webブラウザが fingerprint を送信すべき ↓ 2014/10: 関係者と議論 @ http2/quic meetup 2015/01: インターネットドラフト(RFC化の提案)を提出 (共著者: Mark Nottingham) mod_h2 (Apache) がドラフトを実装 75ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
76.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. cache-aware server-push fingerprint を含むリクエストの例 :method: GET :scheme: https :authority: example.com :path: / cache-digest: IdrjaOrSB4wfpbxdx5Q/ ⁃ この cache-digest ヘッダは、以下12の URL がキャ ッシュ済であることを示している https://example.com/assets/css/bootstrap.min.css, https://example.com/assets/css/font-awesome.css, https://example.com/assets/css/header.css, https://example.com/assets/css/magnific-popup.css, https://example.com/assets/css/main.css, https://example.com/assets/css/pinstrap.css, https://example.com/assets/css/pinterest.css, https://example.com/js/bootstrap.min.js, https://example.com/js/jquery-1.11.0.js, https://example.com/js/jquery-ui.min.js, https://example.com/js/jquery.magnific- popup.js, https://example.com/js/pinterest.js 76ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
77.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. サーバプッシュまとめ ポテンシャルはあるが使いにくい(と思われてきた) ⁃ H2O がそれらの問題を解決 ⁃ 今後の期待: • 仕様の標準化 • ウェブブラウザや、他のサーバでの実装 77ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
78.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. レスポンスタイム最適化まとめ HTTP/2 はユーザの待ち時間を最適化 ⁃ ユーザ体験向上と売上増加につながると考えられる HTTP/2 の基本要素 ⁃ 多重化によるレイテンシの隠蔽 ⁃ バイナリ化による通信データ量の削減 どれだけ高速になるかはサーバの実装依存 ⁃ 優先度制御 ⁃ サーバプッシュ 78ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
79.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP サーバのスループット最適化 79ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
80.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. ベンチマーク:静的ファイルの配信 ベンチマーク環境: AWS c3.8xlarge (2台) ⁃ クライアントとサーバは、同一network placement ファイルサイズ: 612バイト (デスクリプタキャッシュ:on) 80ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
81.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. HTTP/2 は高スループットなプロトコル HTTP/2 over TLS は、暗号化のない HTTP/1 と同等か より高速 ⁃ TLS の負荷は HTTPS に移行しない理由にならない 81ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
82.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. なぜ H2O は速いのか ステートマシンを極力廃した設計 SIMD 命令でチューニングされた HTTP/1 パーサ HTTP/2 と TLS を前提にした設計 ⁃ ヘッダを文字列ではなく、ポインタ演算で比較 ⁃ 大量のレスポンスをマージして、できるだけ少ないシ ステムコールで送信 82ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
83.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. H2O - その他の特徴 (m)rubyによるスクリプティング: ⁃ mod_rewriteよりも保守しやすい ⁃ Rack 標準に則っている → ベンダロックインが発生 しない 先進のTLSサポート: ⁃ セッションキャッシュのサーバ間共有 ⁃ セッションチケットのマスター鍵の自動更新 ⁃ レコードサイズの最適化 ⁃ 自動化されたOCSPステープリング 83ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
84.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. まとめ 84ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
85.
Copyright (C) 2016
DeNA Co.,Ltd. All Rights Reserved. まとめ HTTP/2 が約束する未来はバラ色 ⁃ より短いレスポンスタイム ⁃ より高いスループット H2O が、HTTP/2 サーバ実装の競争をリード ⁃ 優先度制御/サーバプッシュ/スループット DeNA は、H2O の成果を社会に還元 ⁃ OSS として世界と共有 • H2O は DeNA 単独ではなく OSS コミュニティの成果 ⁃ IETF 等での標準化 85ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
Editor's Notes
#5
ただまあ、あまりウェブの会社だって連呼してるとラミネス監督や瀬古総監督に怒られるので怖いですね。
#14
ウェブサイトあたりの転送データ量 (2011/8-2015/8)
#17
測定条件:ウェブ全体の上位25ページのコンテンツを使用。レイテンシ60ms、パケットロスなし。 10Mbpsのときの実効バンド幅は1.6Mbps。100Mbpsになっても同じ
#29
HEADERSフレームとDATAフレームを使う リクエスト行とヘッダの区別がなくなった。メソッドやパスは、特殊な名前のヘッダで表現する レスポンス行とについても同様
#68
最後:で、この手法っていうのは、アプリケーションサーバが遅い場合以外にも応用できる訳です。どういう場合かと言うと
#69
アプリケーションサーバが遠くにある場合ですね。たとえば、ユーザは日本にいて、サーバはアメリカにある場合です
#70
ただ、実際は色々課題があるわけです。 (以下、時間があれば) ひとつは、優先度制御をどうするか。一般的なプルリクエストの場合は、クライアントが優先度を指定してくれるわけですが、プッシュの場合はサーバが自分で決めないといけない。 もうひとつは、プッシュの起動方法。ウェブアプリはどうやってプッシュの開始をウェブサーバに指示すべきか。 最後は、ブラウザキャッシュとの兼ね合いになります。
Download