SPDY導入物語

F7f3f730faf3184cd732154b792aff91?s=47 urapico
October 15, 2015

 SPDY導入物語

2015/10/15に開催されたGoodpatch Engineer Meetup Vol.1での発表資料です。

"なぜ、我々はHAProxyからNginxに切り替えなければならなかったのか"というサブタイトルでお話しさせていただきました。

http://goodpatch.connpass.com/event/20857/
http://togetter.com/li/887371

F7f3f730faf3184cd732154b792aff91?s=128

urapico

October 15, 2015
Tweet

Transcript

  1. SPDYಋೖ෺ޠ 10/15 2015 Goodpatch, Inc. ԘӜ ੣ (PPEQBUDI&OHJOFFS.FFUVQ7PM ͳͥɺզʑ͸)"1SPYZ͔Β/HJOYʹ ੾Γସ͑ͳ͚Ε͹ͳΒͳ͔ͬͨͷ͔

  2. ԘӜɹ੣ @urapico ɾPrott αʔόʔαΠυɾΠϯϑϥ ɾEmacs / Atom ɾ࠷ۙ : YAML

    / Ruby / JavaScript
  3. 41%:  ಋೖɺͦͯ͠ʜ  )"1SPYZͱͷ֨ಆ  ͜Μʹͪ͸ɺ/HJOY  ΞδΣϯμ

  4. 41%:ʁ  BCPVU41%:

  5. SPDY? • Google ͕ఏএ͍ͯ͠ΔWWWͷϓϩτίϧ • HTTP/2΁ʢRFC ඪ४Խʣ • SSLඞਢ •

    Webදࣔͷߴ଎Խ
  6. SPDY? • ϖʔδϩʔυ͕ଳҬ෯ͱ͸ൺྫͯ͠ͳ͍ • TCPίωΫγϣϯΛ̍ͭʹ·ͱΊΔ • ಉ࣌ʹϦιʔεͷϦΫΤετॲཧ͕Մೳʹ • ಡΈࠐ·ΕΔϦιʔεͷ਺ΛݮΒ͢ΑΓɺϑΝΠ ϧαΠζΛখ͘͢͞Δํ͕ޮՌత

    • CSS Spritesͱ͔͸ɺٯޮՌʂʁ
  7. ಋೖ͢Δͧʂ ·ͣ͸ɺϕϯνΛʂʂ

  8. ϕϯνϚʔΫπʔϧͷ஫ҙ SPDYͷϓϩτίϧΛ஻Δ πʔϧ͡Όͳ͍ͱଌఆͰ͖ͳ͍

  9. h2load in nghttp2

  10. ϕϯν݁Ռ *ϩʔΧϧ؀ڥͰ؆қతʹ࣮ࢪ

  11. ϕϯν݁Ռ *ϩʔΧϧ؀ڥͰ؆қతʹ࣮ࢪ վળ͕ݟࠐΊͨ

  12. ಋೖɺͦͯ͠ʜ 

  13. • Load Balancer ʢL7ʣ • SSLͷऴ୺ • SPDYରԠʢઃఆมߋʣ

  14. Why HAProxy? PrimusͳͲͰɺਪ঑͞Ε͍ͯͨΓ… IUUQTHJUIVCDPNQSJNVTQSJNVT

  15. Why HAProxy? PrimusͳͲͰɺਪ঑͞Ε͍ͯͨΓ… IUUQTHJUIVCDPNQSJNVTQSJNVT ͿͬͪΌ͚ Joinͨ࣌͠ʹ͸ɺ ͢Ͱʹಋೖ͞Ε͍ͯͨͷͰ…

  16. αʔόʔߏ੒ user LB sv Amazon S3 CloudFront AP sv AP

    sv DB svs Cache sv Private Network
  17. 6/4 SPDYରԠ΁ HAProxyͷઃఆΛมߋͯ͠

  18. 6/4 SPDYରԠ΁ HAProxyͷઃఆΛมߋͯ͠ ΫϥΠΞϯταΠυͰͷ վળͷͨΊ ࣮ࡍͷޮՌଌఆ͕೉͍͠ ࠓޙͷ՝୊

  19. ಋೖɺͦͯ͠… • ΞΫηεϩά͕࣮ଶͱဃ཭͍ͯ͠Δঢ়ଶ΁ • ΞΫηεݩͷIPΞυϨε͕શͯɺ
 Load BalancerͷIPΞυϨεʹͳͬͯΔ!! • ೔ຊͰͷࣄྫ͕ҟৗʹগͳ͍ •

    ͳΜͱ͔͠ͳ͍ͱʼʻ
  20. )"1SPYZͱͷ֨ಆ  )"1SPYZʜ

  21. HAProxyͱͷ֨ಆ • L7 → L4 ͷLB΁ • L4͔ΒHTTPϔομʔͷΞΫηεෆೳ • forwardfor

    option͕ແޮ • ಁաϓϩΩγʔͳΒ࣮ݱͰ͖Δʂʂ
  22. ಁաϓϩΩγʔ • iptablesΛઃఆ࣮ͯ͠ݱ͢Δ • ઃఆ͢Δͷ͕ඇৗʹ೉͍͠ • ஌ݟ͕ͳ͍ • ઃఆϛε͕αʔϏεશମͷμ΢ϯ΁

  23. ಁաϓϩΩγʔ • iptablesΛઃఆ࣮ͯ͠ݱ͢Δ • ઃఆ͢Δͷ͕ඇৗʹ೉͍͠ • ஌ݟ͕ͳ͍ • ઃఆϛε͕αʔϏεશମͷμ΢ϯ΁ ࢥ͍೰Μͩ݁Ռ

  24. w ಋೖ͢Δͧʂ /HJOY͕࢖͍͍ͨͰ͢ɾɾɾ

  25. ͜Μʹͪ͸ɺ/HJOY  )FMMP/HJOY

  26. • ίϛϡχςΟʔɾ։ൃ͕׆ൃ • LBͱͯ͠ͷར༻ࣄྫ΋ଟ͍ • ׳Ε͍ͯΔ (HAProxyΑΓ) • L7ͰSPDYʹରԠՄೳʂʂ

  27. • ίϛϡχςΟʔɾ։ൃ͕׆ൃ • LBͱͯ͠ͷར༻ࣄྫ΋ଟ͍ • ׳Ε͍ͯΔ (HAProxyΑΓ) • L7ͰSPDYʹରԠՄೳʂʂ ੾Γସ͑ͯ΋

    ໰୊͕ͳ͍ͷ͔ ϕϯνΛ࣮ࢪ
  28. ઀ଓ਺͕ଟ͍؀ڥʹΑͬͯ͸ɺ)"1SPYZΑΓྑ͍਺ࣈ͕ग़Δ ϕϯνϚʔΫɹ

  29. ࣄલʹϦΧόϦʔͷखॱ΋ؚΊͯ2JJUB5FBNͰڞ༗

  30. 8/11 ೖΕସ࣮͑ࢪ HAProxy͔ΒNginx΁

  31. Nginx΁ೖΕସ͑ͨ݁Ռ… *HAProxyΑΓେ෯ʹϨΠςϯγʔͷվળ΁

  32. Nginx΁ೖΕସ͑ͨ݁Ռ… *HAProxyΑΓେ෯ʹϨΠςϯγʔͷվળ΁ ϨΠςϯγʔ͕ ໿3.4ഒվળ

  33. ·ͱΊ

  34. ·ͱΊ SPDYΛಋೖ͠Α͏ͱ͚ͨͩ͠ͳͷʹɺ ؾ෇͍ͨΒɺLBͷϛυϧ΢ΣΞΛ มߋ͢ΔӋ໨ʹ…

  35. ·ͱΊ ࠓޙ΋ɺੵۃతʹϛυϧ΢ΣΞͷࠩ͠ସ͑΍ɺ όʔδϣϯΞοϓ͸ߦ͍ͬͯ͘ ΋ͪΖΜɺHTTP/2ʹ΋ॱ࣍ରԠ͍͖͍ͯͨ͠

  36. ·ͱΊ ࠓޙ΋ɺੵۃతʹϛυϧ΢ΣΞͷࠩ͠ସ͑΍ɺ όʔδϣϯΞοϓ͸ߦ͍ͬͯ͘ ΋ͪΖΜɺHTTP/2ʹ΋ॱ࣍ରԠ͍͖͍ͯͨ͠ Nginx HAProxy H2O

  37. ·ͱΊ ϑϩϯταΠυͷ ϨΠςϯγʔͷଌఆ͸ɺ೉͍͠ ਪଌ͢Δͳܭଌ͠Ζʂ ʊਓਓਓਓ ਓਓਓਓʊ ʼ վળ͍͖ͯ͠·͢ʂʂ ʻ ʉY^Y^Y^Y^Y^Y^Y^Yʉ

  38. ͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠