Slide 1

Slide 1 text

5SVTUFSE  NSVCZͰৼΔ෣͍Λهड़Մೳͳ ߴ଎ʹಈ࡞͢Δ)5518FCαʔό  দຊ྄հ

Slide 2

Slide 2 text

໨࣍ •  5SVTUFSEͷಛ௃ •  3VCZΛద༻ͨ͠Օॴ •  3VCZΛ׆༻ͨ͜͠ͱʹΑΔޮՌ •  ࣾձʹٴ΅͢Өڹ 第7回フクオカRuby大賞 本審査 2

Slide 3

Slide 3 text

5SVTUFSEͷಛ௃ 第7回フクオカRuby大賞 本審査 3

Slide 4

Slide 4 text

5SVTUFSE •  )5518FCαʔό •  3VCZͰઃఆ͕ॻ͚Δ •  3VCZͰػೳ֦ுͰ͖Δ •  αʔόػೳ౳ΛΞϓϦʹ૊ࠐΈՄೳ •  ඇৗʹߴ଎ʹಈ࡞͢Δ  第7回フクオカRuby大賞 本審査 4

Slide 5

Slide 5 text

ߴ଎ʢ೥݄ݱࡏʣ HTTP/2  Server  \ size  of  content 6  bytes 4,096  bytes ngh)pd(single  thread) 148,841 73,812 ngh)pd(mul=  thread) 347,152 104,244 =ny-­‐ngh)pd(single  thread) 190,223 82,047 trusterd(single  thread) 204,769 92,068 trusterd(mul=  process) 509,059 134,542 H2O(single  thread) 216,453 112,356 H2O(mul=  thread) 379,623 146,343 第7回フクオカRuby大賞 本審査 5 HTTP/1  Server  \ size  of  content 6  bytes 4,096  bytes nginx(single  thread) 21,708 22,366 nginx(mul=  process) 67,349 56,203 ࢀߟɿಉ؀ڥͷ)551ͷ݁Ռɹ ※ https://github.com/matsumoto-r/trusterd#benchmarks

Slide 6

Slide 6 text

։ൃͷܦҢ •  աڈʹNPE@NSVCZOHY@NSVCZΛ։ൃ –  ߴ଎ɾলϝϞϦʹ8FCαʔόΛػೳ֦ு –  3VCZͰ͋Δఔ౓ৼΔ෣͍Λهड़Մೳ –  ಈతͳઃఆɾ֦ுΛ3VCZͰهड़Մೳ •  NPE@NSVCZOHY@NSVCZͷଥڠ఺ –  ੑೳ͕"QBDIF΍OHJOYʹґଘ –  ઃఆͷ֦ு΍࣮૷͕Ϟδϡʔϧ࢓༷ʹґଘ –  ݁ہຊମͷઃఆ͔ΒಀΕΒΕͳ͍ɾࠞࡏ 第7回フクオカRuby大賞 本審査 6

Slide 7

Slide 7 text

͔Β࡞Ζ͏ •  ਺೥ޙΛݟӽͯ͠ •  Ͳ͏ͤͳΒ)5518FCαʔό •  શͯͷઃఆ΍֦ுΛ3VCZͰॻ͚Δ •  NSVCZʹ࠷దԽ͞Εͨ8FCαʔό •  ػೳͷ෼཭ͱଞΞϓϦ΁ͷ૊ࠐΈ 第7回フクオカRuby大賞 本審査 7

Slide 8

Slide 8 text

3VCZΛద༻ͨ͠Օॴ 第7回フクオカRuby大賞 本審査 8

Slide 9

Slide 9 text

5SVTUFSE •  )5518FCαʔό •  3VCZͰઃఆ͕ॻ͚Δ •  3VCZͰػೳ֦ுͰ͖Δ •  αʔόػೳ౳ΛΞϓϦʹ૊ࠐΈՄೳ •  ඇৗʹߴ଎ʹಈ࡞͢Δ  第7回フクオカRuby大賞 本審査 9

Slide 10

Slide 10 text

3VCZͰઃఆ͕ॻ͚Δ 第7回フクオカRuby大賞 本審査 10 root_dir = "/usr/local/trusterd" s = HTTP2::Server.new({ :port => 8080, :document_root => “#{root_dir}/htdocs”, :server_name => “Trusterd/0.0.1”, :tls => false, :worker => “auto”, }) s.run

Slide 11

Slide 11 text

3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 11 s.set_map_to_strage_cb { if s.r.uri == ”/” s.r.filename = "#{root_dir}/index.html” end if s.r.uri =~ /^.*\.rb$/ s.enable_mruby fi } s.set_content_cb { s.r.rputs "hello trusterd world from cb” }

Slide 12

Slide 12 text

3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 12 f = File.open "#{root_dir}/logs/access.log", "a" s.set_logging_cb { f.write "client_ip:'#{s.conn.client_ip}' date:'#{s.r.date}' status:#{s.r.status} content_length:#{s.r.content_length} uri:'#{s.r.uri}' filename:'#{s.r.filename}' user_agent:'#{s.r.user_agent}'\n" } s.set_access_check_cb { s.r.set_status 403 if deny }

Slide 13

Slide 13 text

3VCZͰػೳ֦ுͰ͖Δ 第7回フクオカRuby大賞 本審査 13 s.set_map_to_strage_cb { # Experiment: reverse proxy # client <=HTTP/2=> trusterd <=HTTP/1=> Upstream if s.r.uri == /^/upstream(¥/.*)/ s.upstream_uri = $1 s.upstream = “http://127.0.0.1:8081” end }

Slide 14

Slide 14 text

αʔόػೳ౳ΛΞϓϦʹ૊ࠐΈ •  NSVCZIUUQͱͯ͠෼཭Մೳ •  NSVCZܦ༝Ͱ૊ࠐΈՄೳ •  ϛυϧ΢ΣΞ΍ΞϓϦͰ)551௨৴ •  NSVCZͷࡌΔσόΠεͰ)551௨৴ 第7回フクオカRuby大賞 本審査 14

Slide 15

Slide 15 text

3VCZΛ׆༻ͨ͜͠ͱʹΑΔޮՌ 第7回フクオカRuby大賞 本審査 15

Slide 16

Slide 16 text

ߴ͍ϨϕϧͰੜ࢈ੑͱੑೳͷཱ྆ •  ैདྷͷಠࣗઃఆ͸ॻ͖ʹ͔ͬͨ͘ – ੩తͳઃఆʹͳΓ͕ͪ – ಠࣗ%4-΋࢖͍ʹ͍͘ – ࠓޙͷ8FCαʔϏεͷߴ౓Խʹ௥͍෇͚ͳ͍ •  NSVCZͰ౷Ұతʹಈతͳઃఆهड़ – )551ΛΞϓϦ΍σόΠεʹ૊ࠐΊΔ – ຊମ͸$ݴޠͰ࣮૷͓ͯ͠Γඇৗʹߴ଎ – ઃఆͷ3VCZԽ͕࣮૷͠΍͍͢ɾअຐ͠ͳ͍ 第7回フクオカRuby大賞 本審査 16

Slide 17

Slide 17 text

ࣾձʹٴ΅͢Өڹ 第7回フクオカRuby大賞 本審査 17

Slide 18

Slide 18 text

NSVCZͰઃఆΛॻ͘ΞϓϦͷීٴ •  ߴ଎͔ͭ3VCZʹΑΔಈతͳઃఆ – 8FCܥΤϯδχΞ͕ѻ͍΍͍͢ – ։ൃऀ΋ӡ༻ऀ΋Ͳ͜Ͱ΋3VCZΛֶ΂Δ – 3VCZ΍NSVCZͷීٴʹߩݙ •  )551ϓϩτίϧΛ༰қʹར༻Մೳ – $ΞϓϦ΍σόΠεʹػೳ૊ࠐΈ – ϓϩτίϧ͸)551Ͱઃఆ͸NSVCZ – )551ͷීٴʹߩݙ 第7回フクオカRuby大賞 本審査 18