SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O
making  HTTP  better
DeNA  Co.,  Ltd.
Kazuho  Oku
1	
  
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
⾃自⼰己紹介
n  奥  ⼀一穂(株式会社ディー・エヌ・エー  CTO室)
n  これまでの仕事:
⁃  Palmscape  /  Xiino
•  世界初のPalm  OS⽤用本格的ウェブブラウザ
⁃  IPA未踏スーパークリエータ(Webアプリ開発環境)
⁃  Q4M,  mycached  等  MySQL  拡張
⁃  picohttpparser,  Server::Starter,  Starlet,  …
•  Perl  のWebアプリケーションサーバ⽤用ライブラリ群
⁃  JSX
•  静的型付なJavaScript⽅方⾔言+最適化コンパイラ
2	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
HTTP  の現状と課題
3	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
Webアプリ実⾏行行環境の変遷(これまで)
n  CGI
⁃  外部プロセス起動による柔軟性
n  Apache  +  mod_̲XXX
⁃  mod_̲fastcgi,  mod_̲jk,  mod_̲perl,  mod_̲php,  ...
⁃  Apacheと密結合してプロセス起動コストを改善
n  reverse  proxy
⁃  Jetty,  Unicorn,  Plack,  ...
⁃  粗結合化
4	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
Webアプリ実⾏行行環境の変遷(現在)
n  クラウド化
⁃  アプリサーバの⾃自動追加/削除等
⁃  Infrastructure  as  Code
n  TLSが必須に
⁃  「広範な盗聴は攻撃である」(RFC  7258)
⁃  ウェブブラウザにおいてHTTPを「安全でない」と表
⽰示する動き
5	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
Webアプリ実⾏行行環境の変遷(現在その2)
n  HTTP/2
⁃  HTTP/1  の問題を解決
⁃  優先度度制御による表⽰示速度度の⾼高速化
•  依存関係と重みづけによってコンテンツの優先順位を決定
⁃  例例:  CSS  /  JavaScript  の後に画像をダウンロード
•  サーバからのpush
⁃  CSSをHTMLの前に送信
⁃  ヘッダのデータ量量が⼤大きい
•  プロトコルのバイナリ化と圧縮によりヘッダサイズを削減
⁃  標準化完了了まで秒読み段階
6	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
HTTPの適⽤用範囲拡⼤大と、その意義
n  Web  の普及とともに、HTTP  の適⽤用範囲は広がってきた
⁃  WebDAV(ファイルシステム)
⁃  Google  Apps(メールやアプリ)
⁃  Canvas  API  /  WebSocket(リアルタイムゲーム)
n  プロトコルを  HTTP  に集約するメリット
⁃  実装間の競争による品質向上
⁃  ロックインの回避
⁃  相互運⽤用性の確保
⁃  問題解析の容易易性
7	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
「⾮非ウェブ」領領域の拡⼤大
n  例例:
⁃  スマホアプリ(HTTP  はプロトコルの⼀一選択肢)
⁃  IoT(HTTP/1  はバンド幅的に重たいケースも)
n  懸念念:
⁃  マイナーなプロトコルを使うことによるコスト増⼤大
•  品質や相互運⽤用性、ロックイン等
8	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
HTTPサーバが直⾯面している課題
n  最適化されたリバースプロキシ実装
⁃  アプリケーションサーバとの接続の使い回し
⁃  動的な再構成や負荷分散制御
n  TLS  の適切切な設定
⁃  OCSP  Stapling,  Session  Resumption  w.  
Memcached,  Session  Ticket  w.  automatic  key  
rollover,  ...
n  HTTP/2
⁃  最適化された優先度度制御
⁃  プッシュ配信
⁃  通信オーバーヘッドの圧縮
9	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O
10	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O
n  2014年年夏より開発しているウェブサーバ
⁃  HTTP/1,  HTTP/2  (draft),  WebSocket  に対応
⁃  2014/12/25  に最初のバージョンがリリース
⁃  現在  Version  0.9.2-‐‑‒alpha1
n  もともとはディー・エヌ・エー社内のゲーム⽤用サーバ
⁃  HTTP/1  処理理に  picohttpparser  を利利⽤用
•  picohttpparser  =  PerlのWebアプリにおけるデファクト
11	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O  の⽬目標
n  ⾼高品質かつ便便利利な  HTTP  サーバ実装を提供すること
⁃  競争を促進することで  HTTP  実装の⽔水準を上げる
⁃  それにより  HTTP  の適⽤用範囲を広げ、運⽤用を容易易に
n  短期的には:
⁃  HTTP/1,  HTTP/2  と  TLS  の⾼高品質な実装たること
n  中期的には:
⁃  クラウドのメッセージングの中⼼心となる実装たること
12	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
デモとベンチマーク
13	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
14	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
なぜ速いのか
n  シンプルで⾼高速なコードを書いているから
15	
  H2O  -‐‑‒  making  HTTP  better
n  例例:  node.js  のものより10倍
⾼高速な  HTTP/1  パーサ
⁃  これに触発され  http-‐‑‒
parser  が⾼高速化
⁃  →  io.js  が5%⾼高速に
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O  の現状
n  HTTP/2  のサーバ実装におけるフロントランナー
⁃  we hope to see http2 support soon get added to popular
server implementations such as the Apache HTTP Server
and nginx. H2O is a new blazingly fast HTTP server with
http2 support that shows potential.	

http://daniel.haxx.se/http2/http2-v1.8.pdf	

⁃  So in the HTTP/2 era, we may see H2O as a new rising star,
next to the proven webservers like Nginx and Apache.	

https://ma.ttias.be/architecting-websites-http2-era/	

n  HTTP/2  のプロトコル実装としては  nghttp2  が最有⼒力力
16	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O  の現状
17	
  H2O  -‐‑‒  making  HTTP  better
n  注⽬目度度⾼高
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
H2O  の主要機能⼀一覧
n  HTTP/1
n  HTTP/2(依存関係と重みづけによる優先度度制御,  Push)
n  リバースプロキシ(keep-‐‑‒alive,  実⾏行行中の再構成,  上流流接
続数の制限,  負荷のモニタリング)
n  YAML  による設定
n  SSL(⾃自動的なOCSP  stapling,  Memcached  を利利⽤用した  
session  resumption,  ⾃自動的な鍵更更新を伴う  session  
ticket)
※灰⾊色は未実装
18	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
まとめ
19	
  H2O  -‐‑‒  making  HTTP  better
Copyright	
  (C)	
  2015	
  DeNA	
  Co.,Ltd.	
  All	
  Rights	
  Reserved.	
  
まとめ
n  H2O  の⽬目標はクラウド,  HTTP/2,  常時  TLS  時代に最適
化された  HTTP  サーバ
⁃  優れた性能を低い管理理コストで提供
⁃  HTTP  実装全体への波及効果も狙い
n  ⽣生まれたてだが、注⽬目度度の⾼高いプロジェクト
⁃  コントリビュータ絶賛募集中
⁃  「使ってみた」レポートや、感想、要望等お待ちして
おります!
20	
  H2O  -‐‑‒  making  HTTP  better

Más contenido relacionado

La actualidad más candente

TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95Kazuho Oku
 
HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)Jun Fujisawa
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理Takuya ASADA
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwardingMasakazu Asama
 
Ia 2016-12-15
Ia 2016-12-15Ia 2016-12-15
Ia 2016-12-15Ruo Ando
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始めtetsusat
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜Taro Matsuzawa
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発slankdev
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pitokudahiroshi
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策Kensaku Komatsu
 
Word press on conoha このべん #3
Word press on conoha このべん #3Word press on conoha このべん #3
Word press on conoha このべん #3Wataru OKAMOTO
 
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Recruit Technologies
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法Takuya ASADA
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いMasakazu Asama
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondTaisuke Yamada
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例kazuhcurry
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in LinuxTomofumi Hayashi
 

La actualidad más candente (20)

TLS & LURK @ IETF 95
TLS & LURK @ IETF 95TLS & LURK @ IETF 95
TLS & LURK @ IETF 95
 
HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)HTTP 2.0のヘッダ圧縮(HPACK)
HTTP 2.0のヘッダ圧縮(HPACK)
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Kernel vm-2014-05-25
Kernel vm-2014-05-25Kernel vm-2014-05-25
Kernel vm-2014-05-25
 
Ethernetの受信処理
Ethernetの受信処理Ethernetの受信処理
Ethernetの受信処理
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Linux packet-forwarding
Linux packet-forwardingLinux packet-forwarding
Linux packet-forwarding
 
Ia 2016-12-15
Ia 2016-12-15Ia 2016-12-15
Ia 2016-12-15
 
FD.io VPP事始め
FD.io VPP事始めFD.io VPP事始め
FD.io VPP事始め
 
ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜ゆるふわLinux-HA 〜PostgreSQL編〜
ゆるふわLinux-HA 〜PostgreSQL編〜
 
DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発DPDKを用いたネットワークスタック,高性能通信基盤開発
DPDKを用いたネットワークスタック,高性能通信基盤開発
 
NetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry PiNetBSD/evbarm on Raspberry Pi
NetBSD/evbarm on Raspberry Pi
 
最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策最新Webプロトコル傾向と対策
最新Webプロトコル傾向と対策
 
Word press on conoha このべん #3
Word press on conoha このべん #3Word press on conoha このべん #3
Word press on conoha このべん #3
 
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
Node.jsv0.8からv4.xへのバージョンアップ ~大規模Push通知基盤の運用事例~
 
マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法マルチコアとネットワークスタックの高速化技法
マルチコアとネットワークスタックの高速化技法
 
Hydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違いHydrogen → Helium での Linux kernel の違い
Hydrogen → Helium での Linux kernel の違い
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例PG-REXで学ぶPacemaker運用の実例
PG-REXで学ぶPacemaker運用の実例
 
nftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linuxnftables: the Next Generation Firewall in Linux
nftables: the Next Generation Firewall in Linux
 

Similar a H2O - making HTTP better

ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先Kazuho Oku
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Weibo Corporation
 
エンタープライズ環境におけるWebRTC活用のポイント
エンタープライズ環境におけるWebRTC活用のポイントエンタープライズ環境におけるWebRTC活用のポイント
エンタープライズ環境におけるWebRTC活用のポイントWebRTCConferenceJapan
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)J-Stream Inc.
 
Lolipop server
Lolipop serverLolipop server
Lolipop serverJun Chiba
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketYu Nobuoka
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方Toru Makabe
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_bYahoo!デベロッパーネットワーク
 
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~日本ヒューレット・パッカード株式会社
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話shigeki_ohtsu
 
Web of Thingsの現状とWebRTC活用の可能性
Web of Thingsの現状とWebRTC活用の可能性Web of Thingsの現状とWebRTC活用の可能性
Web of Thingsの現状とWebRTC活用の可能性Kensaku Komatsu
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
IETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICIETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICKaoru Maeda
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーHideo Kimura
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...Tomoya Hibi
 
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0DataWorks Summit
 
The Twelve-Factor App (2017)
The Twelve-Factor App (2017)The Twelve-Factor App (2017)
The Twelve-Factor App (2017)Kihyun Kim
 

Similar a H2O - making HTTP better (20)

HTTP/2.0と標準化
HTTP/2.0と標準化HTTP/2.0と標準化
HTTP/2.0と標準化
 
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
ウェブを速くするためにDeNAがやっていること - HTTP/2と、さらにその先
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
 
エンタープライズ環境におけるWebRTC活用のポイント
エンタープライズ環境におけるWebRTC活用のポイントエンタープライズ環境におけるWebRTC活用のポイント
エンタープライズ環境におけるWebRTC活用のポイント
 
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
 
Lolipop server
Lolipop serverLolipop server
Lolipop server
 
WebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocketWebSocket Protocol と Plack::Middleware::WebSocket
WebSocket Protocol と Plack::Middleware::WebSocket
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
OpenStack超入門シリーズ いまさら聞けないNeutronの使い方
 
Ietf95 http2
Ietf95 http2Ietf95 http2
Ietf95 http2
 
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b大規模運用で見えるWebプロトコルの理想と現実、そして今後  #html5j #html5j_b
大規模運用で見えるWebプロトコルの理想と現実、そして今後 #html5j #html5j_b
 
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
企業の成長を飛躍させるクラウドを ~クラウド勝者に導く次世代インフラとは~
 
httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話httpbis interim とhttp2.0相互接続試験の話
httpbis interim とhttp2.0相互接続試験の話
 
Web of Thingsの現状とWebRTC活用の可能性
Web of Thingsの現状とWebRTC活用の可能性Web of Thingsの現状とWebRTC活用の可能性
Web of Thingsの現状とWebRTC活用の可能性
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
IETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUICIETF93 Prague報告Web関連+QUIC
IETF93 Prague報告Web関連+QUIC
 
Perl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバーPerl で作るメディアストリーミングサーバー
Perl で作るメディアストリーミングサーバー
 
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
 
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
Start of a New era: Apache YARN 3.1 and Apache HBase 2.0
 
The Twelve-Factor App (2017)
The Twelve-Factor App (2017)The Twelve-Factor App (2017)
The Twelve-Factor App (2017)
 

Más de Kazuho Oku

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときKazuho Oku
 
HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来Kazuho Oku
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondKazuho Oku
 
Recent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyRecent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsivenessKazuho Oku
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 serverKazuho Oku
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Kazuho Oku
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web fasterKazuho Oku
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP serverKazuho Oku
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedKazuho Oku
 
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法Kazuho Oku
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013Kazuho Oku
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to ProveKazuho Oku
 
JSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてKazuho Oku
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebKazuho Oku
 
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜Kazuho Oku
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)Kazuho Oku
 

Más de Kazuho Oku (20)

HTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないときHTTP/2で 速くなるとき ならないとき
HTTP/2で 速くなるとき ならないとき
 
HTTP/2の課題と将来
HTTP/2の課題と将来HTTP/2の課題と将来
HTTP/2の課題と将来
 
Reorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and BeyondReorganizing Website Architecture for HTTP/2 and Beyond
Reorganizing Website Architecture for HTTP/2 and Beyond
 
Recent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using rubyRecent Advances in HTTP, controlling them using ruby
Recent Advances in HTTP, controlling them using ruby
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Programming TCP for responsiveness
Programming TCP for responsivenessProgramming TCP for responsiveness
Programming TCP for responsiveness
 
Developing the fastest HTTP/2 server
Developing the fastest HTTP/2 serverDeveloping the fastest HTTP/2 server
Developing the fastest HTTP/2 server
 
Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5Cache aware-server-push in H2O version 1.5
Cache aware-server-push in H2O version 1.5
 
H2O - making the Web faster
H2O - making the Web fasterH2O - making the Web faster
H2O - making the Web faster
 
H2O - the optimized HTTP server
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
 
JSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons LearnedJSON SQL Injection and the Lessons Learned
JSON SQL Injection and the Lessons Learned
 
JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法JSX 速さの秘密 - 高速なJavaScriptを書く方法
JSX 速さの秘密 - 高速なJavaScriptを書く方法
 
JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013JSX の現在と未来 - Oct 26 2013
JSX の現在と未来 - Oct 26 2013
 
Using the Power to Prove
Using the Power to ProveUsing the Power to Prove
Using the Power to Prove
 
JSX - 公開から1年を迎えて
JSX - 公開から1年を迎えてJSX - 公開から1年を迎えて
JSX - 公開から1年を迎えて
 
JSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the WebJSX - developing a statically-typed programming language for the Web
JSX - developing a statically-typed programming language for the Web
 
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
ウェブブラウザの時代は終わるのか 〜スマホアプリとHTML5の未来〜
 
JSX
JSXJSX
JSX
 
JSX Optimizer
JSX OptimizerJSX Optimizer
JSX Optimizer
 
JSX Design Overview (日本語)
JSX Design Overview (日本語)JSX Design Overview (日本語)
JSX Design Overview (日本語)
 

H2O - making HTTP better

  • 1. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O making  HTTP  better DeNA  Co.,  Ltd. Kazuho  Oku 1  
  • 2. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   ⾃自⼰己紹介 n  奥  ⼀一穂(株式会社ディー・エヌ・エー  CTO室) n  これまでの仕事: ⁃  Palmscape  /  Xiino •  世界初のPalm  OS⽤用本格的ウェブブラウザ ⁃  IPA未踏スーパークリエータ(Webアプリ開発環境) ⁃  Q4M,  mycached  等  MySQL  拡張 ⁃  picohttpparser,  Server::Starter,  Starlet,  … •  Perl  のWebアプリケーションサーバ⽤用ライブラリ群 ⁃  JSX •  静的型付なJavaScript⽅方⾔言+最適化コンパイラ 2  H2O  -‐‑‒  making  HTTP  better
  • 3. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   HTTP  の現状と課題 3  H2O  -‐‑‒  making  HTTP  better
  • 4. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   Webアプリ実⾏行行環境の変遷(これまで) n  CGI ⁃  外部プロセス起動による柔軟性 n  Apache  +  mod_̲XXX ⁃  mod_̲fastcgi,  mod_̲jk,  mod_̲perl,  mod_̲php,  ... ⁃  Apacheと密結合してプロセス起動コストを改善 n  reverse  proxy ⁃  Jetty,  Unicorn,  Plack,  ... ⁃  粗結合化 4  H2O  -‐‑‒  making  HTTP  better
  • 5. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   Webアプリ実⾏行行環境の変遷(現在) n  クラウド化 ⁃  アプリサーバの⾃自動追加/削除等 ⁃  Infrastructure  as  Code n  TLSが必須に ⁃  「広範な盗聴は攻撃である」(RFC  7258) ⁃  ウェブブラウザにおいてHTTPを「安全でない」と表 ⽰示する動き 5  H2O  -‐‑‒  making  HTTP  better
  • 6. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   Webアプリ実⾏行行環境の変遷(現在その2) n  HTTP/2 ⁃  HTTP/1  の問題を解決 ⁃  優先度度制御による表⽰示速度度の⾼高速化 •  依存関係と重みづけによってコンテンツの優先順位を決定 ⁃  例例:  CSS  /  JavaScript  の後に画像をダウンロード •  サーバからのpush ⁃  CSSをHTMLの前に送信 ⁃  ヘッダのデータ量量が⼤大きい •  プロトコルのバイナリ化と圧縮によりヘッダサイズを削減 ⁃  標準化完了了まで秒読み段階 6  H2O  -‐‑‒  making  HTTP  better
  • 7. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   HTTPの適⽤用範囲拡⼤大と、その意義 n  Web  の普及とともに、HTTP  の適⽤用範囲は広がってきた ⁃  WebDAV(ファイルシステム) ⁃  Google  Apps(メールやアプリ) ⁃  Canvas  API  /  WebSocket(リアルタイムゲーム) n  プロトコルを  HTTP  に集約するメリット ⁃  実装間の競争による品質向上 ⁃  ロックインの回避 ⁃  相互運⽤用性の確保 ⁃  問題解析の容易易性 7  H2O  -‐‑‒  making  HTTP  better
  • 8. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   「⾮非ウェブ」領領域の拡⼤大 n  例例: ⁃  スマホアプリ(HTTP  はプロトコルの⼀一選択肢) ⁃  IoT(HTTP/1  はバンド幅的に重たいケースも) n  懸念念: ⁃  マイナーなプロトコルを使うことによるコスト増⼤大 •  品質や相互運⽤用性、ロックイン等 8  H2O  -‐‑‒  making  HTTP  better
  • 9. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   HTTPサーバが直⾯面している課題 n  最適化されたリバースプロキシ実装 ⁃  アプリケーションサーバとの接続の使い回し ⁃  動的な再構成や負荷分散制御 n  TLS  の適切切な設定 ⁃  OCSP  Stapling,  Session  Resumption  w.   Memcached,  Session  Ticket  w.  automatic  key   rollover,  ... n  HTTP/2 ⁃  最適化された優先度度制御 ⁃  プッシュ配信 ⁃  通信オーバーヘッドの圧縮 9  H2O  -‐‑‒  making  HTTP  better
  • 10. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O 10  H2O  -‐‑‒  making  HTTP  better
  • 11. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O n  2014年年夏より開発しているウェブサーバ ⁃  HTTP/1,  HTTP/2  (draft),  WebSocket  に対応 ⁃  2014/12/25  に最初のバージョンがリリース ⁃  現在  Version  0.9.2-‐‑‒alpha1 n  もともとはディー・エヌ・エー社内のゲーム⽤用サーバ ⁃  HTTP/1  処理理に  picohttpparser  を利利⽤用 •  picohttpparser  =  PerlのWebアプリにおけるデファクト 11  H2O  -‐‑‒  making  HTTP  better
  • 12. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O  の⽬目標 n  ⾼高品質かつ便便利利な  HTTP  サーバ実装を提供すること ⁃  競争を促進することで  HTTP  実装の⽔水準を上げる ⁃  それにより  HTTP  の適⽤用範囲を広げ、運⽤用を容易易に n  短期的には: ⁃  HTTP/1,  HTTP/2  と  TLS  の⾼高品質な実装たること n  中期的には: ⁃  クラウドのメッセージングの中⼼心となる実装たること 12  H2O  -‐‑‒  making  HTTP  better
  • 13. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   デモとベンチマーク 13  H2O  -‐‑‒  making  HTTP  better
  • 14. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   14  H2O  -‐‑‒  making  HTTP  better
  • 15. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   なぜ速いのか n  シンプルで⾼高速なコードを書いているから 15  H2O  -‐‑‒  making  HTTP  better n  例例:  node.js  のものより10倍 ⾼高速な  HTTP/1  パーサ ⁃  これに触発され  http-‐‑‒ parser  が⾼高速化 ⁃  →  io.js  が5%⾼高速に
  • 16. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O  の現状 n  HTTP/2  のサーバ実装におけるフロントランナー ⁃  we hope to see http2 support soon get added to popular server implementations such as the Apache HTTP Server and nginx. H2O is a new blazingly fast HTTP server with http2 support that shows potential. http://daniel.haxx.se/http2/http2-v1.8.pdf ⁃  So in the HTTP/2 era, we may see H2O as a new rising star, next to the proven webservers like Nginx and Apache. https://ma.ttias.be/architecting-websites-http2-era/ n  HTTP/2  のプロトコル実装としては  nghttp2  が最有⼒力力 16  H2O  -‐‑‒  making  HTTP  better
  • 17. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O  の現状 17  H2O  -‐‑‒  making  HTTP  better n  注⽬目度度⾼高
  • 18. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   H2O  の主要機能⼀一覧 n  HTTP/1 n  HTTP/2(依存関係と重みづけによる優先度度制御,  Push) n  リバースプロキシ(keep-‐‑‒alive,  実⾏行行中の再構成,  上流流接 続数の制限,  負荷のモニタリング) n  YAML  による設定 n  SSL(⾃自動的なOCSP  stapling,  Memcached  を利利⽤用した   session  resumption,  ⾃自動的な鍵更更新を伴う  session   ticket) ※灰⾊色は未実装 18  H2O  -‐‑‒  making  HTTP  better
  • 19. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   まとめ 19  H2O  -‐‑‒  making  HTTP  better
  • 20. Copyright  (C)  2015  DeNA  Co.,Ltd.  All  Rights  Reserved.   まとめ n  H2O  の⽬目標はクラウド,  HTTP/2,  常時  TLS  時代に最適 化された  HTTP  サーバ ⁃  優れた性能を低い管理理コストで提供 ⁃  HTTP  実装全体への波及効果も狙い n  ⽣生まれたてだが、注⽬目度度の⾼高いプロジェクト ⁃  コントリビュータ絶賛募集中 ⁃  「使ってみた」レポートや、感想、要望等お待ちして おります! 20  H2O  -‐‑‒  making  HTTP  better