Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HTTP/2 速習会

2b4f9f20b554d4c77c46fe6a9930d6fe?s=47 Nao Minami
October 14, 2016

HTTP/2 速習会

2016/10/13 に Wantedly オフィスで行った「HTTP/2 速習会」の発表資料です。
当日は、H2Oを動かして HTTP/2 による高速化を体感してみるデモなども行いました。
cf. http://wantedly.connpass.com/event/42024/
cf. https://github.com/south37/http2-sokusyukai

2b4f9f20b554d4c77c46fe6a9930d6fe?s=128

Nao Minami

October 14, 2016
Tweet

Transcript

  1. )551଎शձ!8BOUFEMZ  /BP.JOBNJ !TPVUI

  2. ࣗݾ঺հ

  3. None
  4. None
  5. w )551ͱ͸ʁ w )551͕ੜ·Εͨഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  6. w )551ͱ͸ʁ w )551͕ੜ·Εͨഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  7. )551ͱ͸ʁ w *&5'͕ఏএ͢Δ)551ϓϩτίϧͷ࠷৽൛ w ೥݄ʹɺਖ਼ࣜʹঝೝʂ w ʢ೥Ҏདྷ೥ͿΓͷόʔδϣϯΞοϓʣ w 8FCͷޮ཰Խɺߴ଎Խʹओ؟ʂʂ

  8. )551ͱ͸ʁ w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w

    ༏ઌ౓੍ޚ w αʔόʔϓογϡ
  9. )551ͱ͸ʁ w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w

    ༏ઌ౓੍ޚ w αʔόʔϓογϡ )551஀ੜͷഎܠʹ͸ɺ)551ͷ՝୊
  10. w )551ͱ͸ʁ w )551஀ੜͷഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  11. )551஀ੜͷഎܠ w )551஀ੜͷഎܠʹ͸ɺ)551ͷ՝୊ w Ͱ͸ɺ)551ͱ͸ͦ΋ͦ΋ͲΜͳ΋ͷͩͬͨʁ

  12. )551 w ͭͷ5$1ίωΫγϣϯ্ͰͭͷSFRVFTUʹରͯ͠ ͭͷSFTQPOTFΛฦ͢γϯϓϧͳϓϩτίϧ GET / HTTP/1.1 Host: example.com Connection:

    keep-alive HTTP/1.1 200 OK Content-Type: text/html Server: Nginx Content-Length: 1024 <html> <head> <title>sample</title> </head> <body> …… </body> </html> request response UFYUϕʔεͷIFBEFS ༷ʑͳNJNFUZQFͷCPEZ
  13. )551 w ͭͷ5$1ίωΫγϣϯ্ͰͭͷSFRVFTUʹରͯ͠ ͭͷSFTQPOTFΛฦ͢γϯϓϧͳϓϩτίϧ $MJFOU 4FSWFS NT NT

  14. )551ͷ՝୊ w )FBEPG-JOF#MPDLJOH )0-#MPDLJOH  w ͭͷ5$1ίωΫγϣϯ্ͰɺSFRVFTUॱʹ͔͠ SFTQPOTFΛฦͤͳ͍ w )FBEFSͷૹ৴ʹແବ͕ଟ͍

    w ςΩετϕʔε͔ͭѹॖෛՙͰඇޮ཰ w ࣅͨ಺༰ΛԿ౓΋ૹΔ
  15. )551ͷ՝୊ w )FBEPG-JOF#MPDLJOH )0-#MPDLJOH  w ͭͷ5$1ίωΫγϣϯ্ͰɺSFRVFTUॱʹ͔͠ SFTQPOTFΛฦͤͳ͍ w )FBEFSͷૹ৴ʹແବ͕ଟ͍

    w ςΩετϕʔε͔ͭѹॖෛՙͰඇޮ཰ w ࣅͨ಺༰ΛԿ౓΋ૹΔ
  16. )551ͷ՝୊ w )FBEPG-JOF#MPDLJOH )0-#MPDLJOH  w ͭͷ5$1ίωΫγϣϯ্ͰɺSFRVFTUॱʹ͔͠ SFTQPOTFΛฦͤͳ͍ $MJFOU 4FSWFS

    NT NT NT ͕͔͔࣌ؒΓ͗͢Δʂ ϦΫΤετ਺ʷNT 355
  17. )0-#MPDLJOHճආͷͨΊͷΞϓϩʔν w ϒϥ΢β͔ΒͷฒྻϦΫΤετ w )551ύΠϓϥΠϯ w )551ϦΫΤετ਺ΛݮΒͨ͢ΊͷϋοΫ

  18. )0-#MPDLJOHճආͷͨΊͷΞϓϩʔν w ϒϥ΢β͔ΒͷฒྻϦΫΤετ w )551ύΠϓϥΠϯ w )551ϦΫΤετ਺ΛݮΒͨ͢ΊͷϋοΫ

  19. ϒϥ΢β͔ΒͷฒྻϦΫΤετ w ϒϥ΢β͸ͭͷϗετʹ͖ͭͭͷ5$1ίωΫγϣϯ w ฒྻͰϦΫΤετΛૹΔ $MJFOU 4FSWFS NT NT ͋Δఔ౓͸ղܾ

  20. w ϒϥ΢β͸ͭͷϗετʹ͖ͭͭͷ5$1ίωΫγϣϯ w ฒྻͰϦΫΤετΛૹΔ $MJFOU 4FSWFS NT NT ز͔ͭ໰୊͸࢒Δ w

    ͭ໨ͷSFRVFTU͸CMPDL w UDQTPDLFU౳ͷϦιʔε ࿘අʹͭͳ͕Δ ϒϥ΢β͔ΒͷฒྻϦΫΤετ
  21. )0-#MPDLJOHճආͷͨΊͷΞϓϩʔν w ϒϥ΢β͔ΒͷฒྻϦΫΤετ w )551ύΠϓϥΠϯ w )551ϦΫΤετ਺ΛݮΒͨ͢ΊͷϋοΫ

  22. w ͭͷ5$1ίωΫγϣϯͰɺSFTQPOTFΛ଴ͨͣʹ SFRVFTUΛૹΔ )551ύΠϓϥΠϯ $MJFOU 4FSWFS NT NT Ұݟྑͦ͞͏ɻɻʁʁʁ

  23. w ͭͷ5$1ίωΫγϣϯͰɺSFTQPOTFΛ଴ͨͣʹ SFRVFTUΛૹΔ )551ύΠϓϥΠϯ $MJFOU 4FSWFS NT NT 4FSWFSॲཧͷ஗ԆͰ໰୊ )5.-

    $44 )5.- $44 $44 )5.- w SFTQPOTF͸SFRVFTUॱ w ஗͍ͭʹҾ͖ͣΒΕΔ
  24. )0-#MPDLJOHճආͷͨΊͷΞϓϩʔν w ϒϥ΢β͔ΒͷฒྻϦΫΤετ w )551ύΠϓϥΠϯ w )551ϦΫΤετ਺ΛݮΒͨ͢ΊͷϋοΫ

  25. w %PNBJO4IBSEJOH w ϗετ͝ͱʹฒྻͳΒɺϗετͷ਺Λ૿΍͢ w $44 +4ͳͲͷBTTFUTΛDPODBUͯͭ͠ͷϑΝΠϧʹ w BTTFUTϑΝΠϧͷϦΫΤετ਺ΛݮΒ͢ w

    $444QSJUF w খ͞ͳͨ͘͞Μͷը૾Λ݁߹ͯ͠ຕͷେ͖ͳը૾ʹ w FUD )551ϦΫΤετ਺ΛݮΒ͢ϋοΫ
  26. w %PNBJO4IBSEJOH w ϗετ͝ͱʹฒྻͳΒɺϗετͷ਺Λ૿΍͢ w $44 +4ͳͲͷBTTFUTΛDPODBUͯͭ͠ͷϑΝΠϧʹ w BTTFUTϑΝΠϧͷϦΫΤετ਺ΛݮΒ͢ w

    $444QSJUF w খ͞ͳͨ͘͞Μͷը૾Λ݁߹ͯ͠ຕͷେ͖ͳը૾ʹ w FUD )551ϦΫΤετ਺ΛݮΒ͢ϋοΫ )0-#MPDLJOH͕ແ͘ͳΕ͹ɺ͜ΜͳϋοΫ͸ඞཁͳ͍ʂ
  27. )551

  28. w )551ͱ͸ʁ w )551஀ੜͷഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  29. w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ

    w αʔόʔϓογϡ )551ͷػೳ
  30. w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ

    w αʔόʔϓογϡ )551ͷػೳ
  31. ଟॏԽ w ͭͷ5$1ίωΫγϣϯ্Ͱɺෳ਺ͷSFRVFTUɺ SFTQPOTFΛ΍ΓऔΓͰ͖ΔΑ͏ʹͳͬͨ w )0-#MPDLJOHղফʂ w ਺ʹ੍ݶ΋ͳ͍ʂ $MJFOU 4FSWFS

    NT NT )551࣌୅ͷଟ͘ͷ໰୊͕ղܾ
  32. ଟॏԽ͸Ͳ͏࣮ݱͯ͠Δͷ͔ʁ w ετϦʔϜΛར༻ w ͭͷUDQίωΫγϣϯ্ʹෳ਺ͷετϦʔϜ w SFRVFTUSFTQPOTFʹɺετϦʔϜΛׂΓ౰ͯ ͭͷ5$1ίωΫγϣϯ ετϦʔϜ ετϦʔϜ

    SFRVFTU SFTQPOTF $MJFOU 4FSWFS
  33. ଟॏԽ͸Ͳ͏࣮ݱͯ͠Δͷ͔ʁ w σʔλૹ৴ͷ୯Ґ͸όΠφϦͷϑϨʔϜ w ϑϨʔϜͷγʔέϯε͕ϝοηʔδ w ͭͷSFRVFTU ͭͷSFTQPOTF͕ϝοηʔδ HEADERS ϑϨʔϜ

    HEADERS ϑϨʔϜ DATA ϑϨʔϜ ετϦʔϜ SFRVFTUϝοηʔδ SFTQPOTFϝοηʔδ
  34. ଟॏԽ͸Ͳ͏࣮ݱͯ͠Δͷ͔ʁ w ͭͷ5$1ίωΫγϣϯ্Ͱɺ༷ʑͳετϦʔϜͷ ϑϨʔϜ͕ࠞͬͯ͟ૹΒΕΔ ετϦʔϜ1 DATA ϑϨʔϜ ͭͷ5$1ίωΫγϣϯ ετϦʔϜ2 HEADERS

    ϑϨʔϜ ετϦʔϜ1 HEADERS ϑϨʔϜ
  35. ଟॏԽ͸Ͳ͏࣮ݱͯ͠Δͷ͔ʁ w ϑϨʔϜΛσίʔυͨ͠಺༰͸)551ͱมΘΒͣ )&"%&34ϑϨʔϜ NFUIPE(&5 QBUIJOEFYIUNM TDIFNFIUUQT BVUIPSJUZXXXFYBNQMFDPN )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍

  36. w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ

    w αʔόʔϓογϡ )551ͷػೳ
  37. ϔομѹॖ w ϔομϑϨʔϜ͸)1"$,Ͱѹॖ w )V⒎NBOූ߸Խ w සग़ϔομ͸ڞ༗ w ૹ৴ࡁΈσʔλ࠶ར༻ w

    ৄ͘͠஌Γ͍ͨํ͸3'$ HEADERS ϑϨʔϜ SFRVFTUϝοηʔδ
  38. w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ

    w αʔόʔϓογϡ )551ͷػೳ
  39. ༏ઌ౓੍ޚ w ଟॏԽ͞ΕͨSFTQPOTFΛ༏ઌ౓ʹԠͯ͡ฦ͢ w ʮॏΈ෇͚ʯͱʮґଘؔ܎ʯͰࢦఆ w DG)5.-͸࠷༏ઌɺ͕࣍$44ͱ+4ɺը૾͸༏ઌ౓௿ w ϒϥ΢β౳ͷ$MJFOU͕ࢦఆ w

    ҰൠϢʔβʔ͕΍ΕΔ͜ͱ͸͋·Γແ͍ɻɻɻ
  40. w )551ͷηϚϯςΟΫε͸มߋ͠ͳ͍ w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ

    w αʔόʔϓογϡ )551ͷػೳ
  41. αʔόʔϓογϡ w ͭͷSFRVFTUʹରͯ͠ɺෳ਺SFTQPOTFΛฦͤΔʂ w ͭ໨Ҏ߱͸αʔόʔ͔Βૹ৴͢Δαʔόʔϓογϡ w $44΍+4ͳͲɺͲ͏ͤඞཁʹͳΔ΋ͷͳΒૹͬͯ͠·͏ ετϦʔϜ ϓογϡετϦʔϜ $MJFOU

    4FSWFS ίϯςϯπΛϓογϡʂ
  42. w ओཁͳػೳ w ଟॏԽ w ϔομѹॖ w ༏ઌ౓੍ޚ w αʔόʔϓογϡ

    )551ͷػೳ·ͱΊ )551ͷ໰୊఺Λղܾ͢ΔͨΊͷػೳ 8FCΛޮ཰Խɾߴ଎Խ͢ΔͨΊͷػೳ
  43. w )551ͱ͸ʁ w )551஀ੜͷഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  44. ηοτΞοϓ $ git clone https://github.com/south37/http2-sokusyukai $ cd http2-sokusyukai $ docker

    run -p "8080:80" -ti south37/h2o-http2-demo-server
  45. λεΫ w IPDPOGٴͼ഑৴͢ΔϑΝΠϧΛม͑ͯɺڍಈΛݟΔ w )FMMP8PSME w )5514ʢ)551ʣ w .VMUJQMFYJOHʢଟॏԽʣ w

    4FSWFS1VTI w "OENPSF
  46. w )551ͱ͸ʁ w )551஀ੜͷഎܠ w )551ͷػೳ w <ϋϯζΦϯ>)551ରԠαʔόʔ)0Λಈ͔ͯ͠ΈΔ w ·ͱΊ

    ࠓ೔଎श͢Δ಺༰
  47. w ޮ཰Խɾߴ଎ԽΛ໨ࢦͯ͠ɺ)551͕ࡦఆ͞Εͨ w )551ͷηϚϯςΟΫε͸ม͑ͳ͍ w ଟॏԽ΍ϔομѹॖ౳ɺ)551ͷ໰୊఺Λղܾ ·ͱΊ w )551ରԠ8FCαʔόʔΛಋೖ͢Ε͹ɺ͙͢ಈ͘ w

    )0ͳͲɺ)551ͷQFSGPSNBODF΋ྑ͍࣮૷ )551Ͱޮ཰తɾߴ଎ͳ8FCΛ࣮ݱ͠Α͏ʂ