ペパボ福岡での「体感」を向上させる Webサービス基盤技術に関する取り組み / UI Turn 2017

ペパボ福岡での「体感」を向上させる Webサービス基盤技術に関する取り組み / UI Turn 2017

なめらかなシステムにおけるWebサービスのユーザ体感と技術者体感に関する研究
ペパボ研究所 主席研究員 シニア・プリンシパルエンジニア 松本亮介 / Pepabo R&D Institute, GMO Pepabo, Inc.
2017.10.16 【福岡U・Iターン希望者向け】エンジニア向けトーク&相談会@東京

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

October 17, 2017
Tweet

Transcript

  1. ͳΊΒ͔ͳγεςϜʹ͓͚ΔWebαʔϏεͷϢʔβମײͱٕज़ऀମײʹؔ͢Δݚڀ ϖύϘݚڀॴ ओ੮ݚڀһ γχΞɾϓϦϯγύϧΤϯδχΞ দຊ྄հ / Pepabo R&D Institute, GMO

    Pepabo, Inc. 2017.10.16 ʲ෱ԬUɾIλʔϯر๬ऀ޲͚ʳΤϯδχΞ޲͚τʔΫˍ૬ஊձˏ౦ژ ϖύϘ෱ԬͰͷʮମײʯΛ޲্ͤ͞Δ WebαʔϏεج൫ٕज़ʹؔ͢ΔऔΓ૊Έ
  2. • ϖύϘݚڀॴ ओ੮ݚڀһ • ژ౎େֶത࢜ʢ৘ใֶʣ • γχΞɾϓϦϯγύϧ ΤϯδχΞ • ݩΠϯϑϥΤϯδχΞ

    • ೔ຊOSS঑ྭ৆ɾ৘ใॲཧֶձ ࢁԼه೦ݚڀ৆ 2 দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory
  3. ෱ԬͰओʹ׆ಈ͍ͯ͠Δ ϖύϘݚڀॴͷऔΓ૊Έͷ঺հ

  4. • ւࢁ઒ͱඒຯ͍͠͝͸Μʹғ·Εͳ͕Βͬ͘͡Γݚڀ։ൃ • ओʹࡋྔ࿑ಇɾϦϞʔτϫʔΫɾ࣌ؒ͸ࣗ༝ • ձࣾͷٕज़త՝୊ʹج͍ͯҰൠԽͨ͠ख๏ΛఏҊɾධՁ • ੵۃతʹ࿦จࣥචɾࠪಡ΍ݚڀձࢀՃɾӡӦ • དྷ೥͸ࠃࡍԽʹ޲͚ͯੵۃతʹ׆ಈΛ։࢝͢Δ༧ఆ

    4 ؆୯ʹϖύϘݚڀॴͷಇ͖ํͱਐḿ
  5. 1. ͳΊΒ͔ͳγεςϜ 2. WebαʔϏεج൫ٕज़ͷݚڀͱ͸ 3. ڞ༗ϗεςΟϯάαʔϏεͷηΩϡϦςΟͱੑೳͷݚڀ 4. ৗ࣌HTTPSͷ࣌୅ͷେن໛ূ໌ॻ؅ཧͷݚڀ 5. ·ͱΊ

    5 ໨࣍
  6. 1. ͳΊΒ͔ͳγεςϜ

  7. • ίϯϐϡʔλ΍Πϯλʔωοτʹؔ͢Δٕज़͸ൃల͕ͨ͠… • ࠓ΋೔ৗతʹ৮ΕΔγεςϜ͸༷ʑͳোนʹຬͪᷓΕ͍ͯΔ • োน(ΰπΰπ)ͷऔΓআ͔ΕͨະདྷͷγεςϜΛ࣮ݱ͍ͨ͠ • ͳΊΒ͔ͳγεςϜ΁ 7 ίϯϐϡʔλͷൃలͱোน

  8. 1. γεςϜʹͱͬͯͷϢʔβ΍ɺγεςϜΛߏ੒͢Δαʔό౳ͷཁૉ͕ɺͲ ͷΑ͏ͳΧςΰϦʹଐ͢Δ͔ɺ͍͔ͳΔಛ௃Λ͔࣋ͭΛɺਫ਼៛ʹೝࣝ͢Δ 2. ͦͷࡍɺϢʔβ΍γεςϜ؅ཧऀͱ͍ͬͨਓؒʹ࿑ۤΛڧ͍ΔΑ͏ͳ໌ࣔ తͳૢ࡞Λ՝͞ͳ͍ 3. 1.͓Αͼ2.ͰಘͨΑΓਫ਼៛ͳΧςΰϦ΍ݸผͷಛ௃ɺ͋Δ͍͸ͦΕΒͷؒ ͷؔ܎ੑʹج͖ͮɺͦͷ࣌ʑͷঢ়گʹԠͯ͡࠷దͳαʔϏεΛఏڙ͢Δ ͳΊΒ͔ͳγεςϜΛ࣮ݱ͢ΔWebαʔϏεج൫ٕज़ͷݚڀ

    8 ͳΊΒ͔ͳγεςϜ͸ҎԼͷཁ݅Λຬͨ͢
  9. 2. WebαʔϏεج൫ٕज़ͷݚڀͱ͸

  10. • ਓؒͷϓϩμΫτ΁ͷൃ૝Λࢧ͑ΒΕΔج൫͕ඞཁ • ͜Ε·Ͱ͸֤छྖҬΛਓखͰΧόʔ͢Δ͜ͱ͕ଟ͔ͬͨ • ੑೳɾηΩϡϦςΟɾϦιʔε؅ཧɾӡ༻ٕज़ͳͲ • ج൫ΛػցͰࢧ͑ࣗಈԽ͠αʔϏεͷݶքΛ௒͑Δ • ਓؒͷൃ૝ͷݶքͱج൫ͷݶքͱͷউෛͷੈքͱ͍͑Δ

    10 WebαʔϏεج൫ٕज़ͷݶք͸αʔϏεͷݶք
  11. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ 11 ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ਓͷମྗɾਫ਼ਆͷݶք ਓͷମྗɾਫ਼ਆͷݶք

    ਓྗͰࢧ͑ଓ͚Δ ਓྗͰ޿͛ଓ͚Δ ਓྗͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ػցͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ • ॎ࣠͸ϓϩμΫτ։ൃɾӡ༻ͷίετͱ΋ݴ͑Δ • ج൫ٕज़ͷݶքΛ௒͑Δ΂͘ਓͰΧόʔ͍ͯ͠Δ • ॎ࣠ͷίετΛ୹͘ɺԣ࣠ͷݶքͷ෯Λ޿͛Δͨ Ίͷݚڀ։ൃΛߦ͍ͬͯΔ দຊͷݚڀ
  12. • WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ • WebαʔϏεར༻ऀͷແҙࣝԼʹ͓͚Δշదͳײ֮ͷఏڙ • ౰ͨΓલʹී௨ʹҧ࿨ײͳ͘࢖͍ଓ͚ΒΕΔ͜ͱͷշద͞ • WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ

    • ౰ͨΓલʹγεςϜͷ҆ఆੑΛอͪɺਓͷڧ੍հೖΛ௿ݮ 12 ࢲͷݚڀςʔϚ
  13. 1. ηΩϡϦςΟͱੑೳͷཱ྆ʹؔ͢Δݚڀ 2. HTTPSԽʹ޲͚ͨӡ༻ٕज़ͱϦιʔε࢖༻ྔվળͷݚڀ 13 ຊεϥΠυͰ͸2ͭͷݚڀΛ঺հ

  14. 3. ڞ༗ϗεςΟϯάαʔϏεͷ ηΩϡϦςΟͱੑೳͷݚڀ

  15. 1. ηΩϡϦςΟͱੑೳͷཱ྆ʹؔ͢Δݚڀ 2. ηΩϡϦςΟͷͨΊͷӡ༻ٕज़ͱੑೳվળͷݚڀ 15 ຊεϥΠυͰ͸2ͭͷݚڀΛ঺հ দຊ྄հ, Ԭ෦णஉ,εϨου୯ҐͰݖݶ෼཭Λߦ͏WebαʔόͷΞΫηε੍ޚΞʔΩςΫνϟ,ిࢠ ৘ใ௨৴ֶձ࿦จࢽ Vol.J96-B,

    No.10, pp.1122-1130, Oct 2013.
  16. • ௿Ձ֨ԽͷͨΊ୯ҰͷαʔόʹߴूੵʹϗετΛऩ༰ • Ϣʔβ͕ར༻͢Δϗετ୯ҐͰηΩϡϦςΟΛ୲อ • HTTPϦΫΤετ࣌ʹϓϩηε୯ҐͰݖݶ෼཭ • ϦΫΤετຖʹϓϩηεͷੜ੒ɾഁغ͕ඞཁͰ௿ੑೳ • ͍͔ʹϦΫΤετ୯Ґͷݖݶ෼཭ͷίετΛ௿͘͢Δ͔

    16 ڞ༗ϗεςΟϯάαʔϏεͷηΩϡϦςΟ
  17. • ݖݶ෼཭ΛLinuxεϨουੜ੒ɾഁغͷίετͰ࣮ݱ • εϨου୯ҐͰݖݶΛ੍ޚ͢ΔͷͰ࣮૷͸ෳࡶ • εϨουͷੜ੒ഁغ͸ϓϩηεͱൺ΂ͯ਺ेഒ௿ίετ※1 17 εϨου୯ҐͰݖݶ෼཭ ※1 Gu

    Yan, Bu-Sung Lee, Wentong Cai, "Evaluation of Java thread performance on two different multithreaded kernels." ACM SIGOPS Operating Systems Review, Vol. 33, No. 1, pp. 34-46, 1999.
  18. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ

  19. Ұ೔ͷΞΫηε਺1000ສͷαʔόʹಋೖ 19 ˙TZTUFN ˙VTFS ˙JEMF ैདྷख๏ ఏҊख๏ ࣮ࡍʹ͸͜ͷఔ౓ͷαʔό͕਺ඦ୆ଘࡏ͢Δ

  20. • ฐࣾϗεςΟϯάαʔϏεʢϨϯλϧαʔόʣʹಋೖࡁΈ • ϩϦϙοϓʂͰ͸2015೥͔Βݚڀॴͷٕज़Λੵۃతʹಋೖத • ϔςϜϧ΋2016೥͔Βಋೖޙ໰୊ͳ͘Քಇத 20 ಋೖޙ໰୊ͳ͘Քಇத

  21. ੑೳ͕ߴ͘ͳΓ ࣗવͱϢʔβʔʮମײʯ͕޲্

  22. αʔόෛՙ΍؅ཧίετ͕Լ͕Γ ࣗવͱٕज़ऀʮମײʯ΋޲্

  23. 3. ৗ࣌HTTPSͷ࣌୅ͷূ໌ॻ؅ཧͷݚڀ

  24. 1. ηΩϡϦςΟͱੑೳͷཱ྆ʹؔ͢Δݚڀ 2. ηΩϡϦςΟͷͨΊͷӡ༻ٕज़ͱੑೳվળͷݚڀ 24 ຊεϥΠυͰ͸2ͭͷݚڀΛ঺հ • দຊ ྄հ, Ԭ෦

    णஉ, mod_mruby: εΫϦϓτݴޠͰߴ଎͔ͭলϝϞϦʹ֦ுՄೳͳWebαʔόͷػ ೳ֦ுࢧԉػߏ, ৘ใॲཧֶձ࿦จࢽɼVol.55, No.11, pp.2451-2460, Nov 2014. • দຊ ྄հ, ฏݪ ਖ਼༟, ࡾ୐ ༔հ, ྗ෢ ݈࣍, ܀ྛ ݈ଠ࿠, ߴूੵϚϧνςφϯτWebαʔόͷେن໛ূ ໌ॻ؅ཧͱ࣮ӡ༻্ͷධՁ, ৘ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-39, Vol.14, pp.1-8, 2017೥9݄.
  25. • υϝΠϯ΍ϗετΛେྔʹ࣋ͭαʔϏε͸ରԠࠔ೉ • ݱࡏͷαʔόιϑτ΢ΣΞ͸େྔͷূ໌ॻͷѻ͍ʹෆ޲͖ • ͜ͷ··Ͱ͸EC΍ϗεςΟϯάͷHTTPSಋೖ͕ۃΊͯࠔ೉ • Ͱ͸େྔূ໌ॻʹରԠͨ͠ιϑτ΢ΣΞΛ࡞Γ·͠ΐ͏ 25 ৗ࣌HTTPSԽʹରԠ͍ͯ͘͠ඞཁ༗Γ

  26. • αʔόϓϩηεىಈ࣌ʹશͯͷূ໌ॻΛಡΈࠐΉ • ىಈ͕࣌ؒ஗͘ઃఆ൓ө࣌ͷӡ༻͕ࠔ೉ • ৽͍͠ϗετͱূ໌ॻ௥Ճ࣌ʹ͸ϓϩηε࠶ىಈ͕ඞཁ • αʔόϓϩηεͷϝϞϦ࢖༻ྔଟ͍ 26 ैདྷख๏ͷ՝୊

  27. • αʔόϓϩηεىಈ࣌ʹূ໌ॻ͸ಡΈࠐ·ͳ͍ • αʔόϓϩηεͷ࠶ىಈ/࠶ಡΈࠐΈ࣌ؒΛߴ଎Խ • TLSϋϯυγΣΠΫ࣌ʹඞཁͳূ໌ॻͱઃఆΛಈతʹಡΈࠐΈ • ߴ଎ͳϓϩηε࠶ಡΈࠐΈʹΑΔϝϞϦղ์΋Մೳ • ূ໌ॻ΍ϗετͷ৽ن௥Ճઃఆʹ࠶ىಈ͕ෆཁ

    27 ఏҊख๏
  28. • 10ສϗετ෼ͷ4096bitsͷ伴௕ͷൿີ伴ͱαʔόূ໌ॻΛ nginxόʔδϣϯ1.11.13ͰಡΈࠐΈ • ैདྷख๏͸࠶ಡΈࠐΈॲཧͰ΋αʔϏεఀࢭʹܨ͕Δ 28 ैདྷख๏ͱఏҊख๏ͷىಈ࣌ؒͷ࣮ݧ ߲໨ ैདྷख๏ ఏҊख๏

    ϓϩηεىಈͷ࣮࣌ؒ ඵ  ϓϩηεىಈͷϢʔβ$16࢖༻࣌ؒ ඵ  ϓϩηεىಈͷγεςϜ$16࢖༻࣌ؒ ඵ 
  29. 10ສϗετऩ༰࣌ͷ੩తϑΝΠϧͷੑೳൺֱ 29 ਺ेCZUFTͷܰྔͳ)5.-ϑΝΠϧ΁ͷϦΫΤετ 3FRVFTUTFD      ಉ࣌઀ଓ਺

        ैདྷख๏ ఏҊख๏
  30. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ

  31. • ैདྷख๏ͱఏҊख๏ͷ1ϲ݄ؒͷϦιʔε࢖༻ྔΛൺֱ • ैདྷख๏͸2017೥3݄͔Β4݄ɺఏҊख๏͸7݄͔Β8݄ • ෳ਺୆ͷಉҰϋʔυ΢ΣΞ্ʹ4݄຤ΛػʹϦϓϨʔε • ैདྷख๏͸Apache2.4ɺఏҊख๏͸nginx1.11Ͱ࣮૷ • ূ໌ॻ਺ͷ૿Ճ΍ϦΫΤετॲཧ਺ͷมԽͱൺֱ͠ͳ͕Βߟ࡯

    31 ແྉূ໌ॻαʔϏεΛػʹ࣮ӡ༻্ͷධՁ
  32. ैདྷख๏ͰऔΓ૊ΜͰ͍ͨΒ ͲΕ͙Β͍େม͔ͩͬͨΛ͖ͪΜͱධՁ

  33. ͏·͍͍ͬͯ͘Δ࣌ͦ͜ ͦͷ༗ޮੑΛఆྔతʹ໌Β͔ʹ͢Δ

  34. 1ϲ݄ؒͷূ໌ॻ਺ͷભҠ 34 0 5000 10000 15000 20000 25000 1 6

    11 16 21 26 31 The number of cer-ficates day The number of cer-ficate in a month dynamic load preload Θ͔Γʹ͍͕͘Ұϲ݄Ͱ͔Β΁ͱ ূ໌ॻఔ౓૿͍͑ͯΔ ূ໌ॻ਺͸ϦϓϨʔεલͷഒ͔Βഒ
  35. 1ϲ݄ؒͷCPU࢖༻཰ͷભҠ 35 0.00 1.00 2.00 3.00 4.00 5.00 6.00 7.00

    8.00 9.00 1 6 11 16 21 26 31 CPU usage(%) day CPU usage in a mouth dynamic load preload ূ໌ॻ਺͕͔Βഒʹ΋ؔΘΒͣ$16࢖༻཰͸ඍ͕ࠩͩ௿ݮ܏޲
  36. 1ϲ݄ؒͷϝϞϦ࢖༻཰ͷભҠ 36 0 1000 2000 3000 4000 5000 6000 7000

    8000 1 6 11 16 21 26 31 Memory usage(MBytes) day Memory usage in a mouth dycamic load preload ূ໌ॻ਺͸͔Βഒʹ΋ؔΘΒͣϝϞϦ࢖༻཰͸௿ݮ ఏҊख๏͸ສҎ্૿Ճ͍ͯ͠Δূ໌ॻ਺ʹ΋΄΅ґଘ͍ͯ͠ͳ͍ ূ໌ॻ਺૿Ճʹ൐͍ϝϞϦ࢖༻ྔ͸αʔόશମͰ(#ZUFTఔ౓૿Ճ
  37. • ैདྷख๏͸20ສূ໌ॻΛॲཧ͢Δͷʹ500Gbytesඞཁ • 32GBytesͷαʔό͕15୆Ҏ্ඞཁ • ఏҊख๏͸20ສূ໌ॻͰ΋1୆ͰॲཧՄೳͷݟࠐΈ • 1ສূ໌ॻ૿Ճͯ͠΋ϝϞϦ࢖༻ྔ͸3GBytesͰ҆ఆ • ఏҊख๏ʹΑΓඞཁϋʔυ΢ΣΞίετΛେ෯ʹ௿ݮՄೳ

    37 ϝϞϦ࢖༻ྔ͔Βඞཁͳϋʔυ΢ΣΞΛݟੵ΋Γ
  38. ஌Β͵ؒʹϋʔυ΢ΣΞ΍ӡ༻ίετ͕ ௿ݮ͞Εٕͯज़ऀʮମײʯ͕޲্

  39. 5. ·ͱΊ

  40. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ 40 ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ਓͷମྗɾਫ਼ਆͷݶք ਓͷମྗɾਫ਼ਆͷݶք

    ਓྗͰࢧ͑ଓ͚Δ ਓྗͰ޿͛ଓ͚Δ ਓྗͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ػցͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ • ॎ࣠͸ϓϩμΫτ։ൃɾӡ༻ͷίετͱ΋ݴ͑Δ • ج൫ٕज़ͷݶքΛ௒͑Δ΂͘ਓͰΧόʔ͍ͯ͠Δ • ॎ࣠ͷίετΛ୹͘ɺԣ࣠ͷݶքͷ෯Λ޿͛Δͨ Ίͷݚڀ։ൃΛߦ͍ͬͯΔ দຊͷݚڀ
  41. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ 41 ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ਓͷମྗɾਫ਼ਆͷݶք ਓͷମྗɾਫ਼ਆͷݶք

    ਓྗͰࢧ͑ଓ͚Δ ਓྗͰ޿͛ଓ͚Δ ਓྗͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ ج൫ٕज़ ػց ϓϩμΫτ ਓؒͷൃ૝ ػցͰࢧ͑ଓ͚Δ ϓϩμΫτͷݶքͷ෯ • ॎ࣠͸ϓϩμΫτ։ൃɾӡ༻ͷίετͱ΋ݴ͑Δ • ج൫ٕज़ͷݶքΛ௒͑Δ΂͘ਓͰΧόʔ͍ͯ͠Δ • ॎ࣠ͷίετΛ୹͘ɺԣ࣠ͷݶքͷ෯Λ޿͛Δͨ Ίͷݚڀ։ൃΛߦ͍ͬͯΔ দຊͷݚڀ ࣮ӡ༻্ͷධՁΛେ੾ʹ͠ ͔ͦ͜Β৽نੑɾ༗ޮੑɾ৴པੑΛࣔ͢
  42. • WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ • WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ • ݚڀ։ൃΛ௨ͯ྆͠ํ޲ͷମײΛվળ͍ͯ͘͠ • ج൫ٕज़ͷվળΛ௨ͯ͠ਓ͕ࢧ͑Δ΂͖ྖҬΛΑΓߴ౓ʹ

    • WebαʔϏεج൫ͷݶքΛ௒͑ɺϓϩμΫτͷݶքΛ௒͑Δ 42 WebαʔϏεج൫ٕज़ͷݚڀ঺հ
  43. ݚڀһɺੵۃతʹืूதʂ http://rand.pepabo.com/