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

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

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

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

MATSUMOTO Ryosuke
PRO

October 17, 2017
Tweet

More Decks by MATSUMOTO Ryosuke

Other Decks in Technology

Transcript

  1. ͳΊΒ͔ͳγεςϜʹ͓͚ΔWebαʔϏεͷϢʔβମײͱٕज़ऀମײʹؔ͢Δݚڀ
    ϖύϘݚڀॴ ओ੮ݚڀһ γχΞɾϓϦϯγύϧΤϯδχΞ দຊ྄հ / Pepabo R&D Institute, GMO Pepabo, Inc.
    2017.10.16 ʲ෱ԬUɾIλʔϯر๬ऀ޲͚ʳΤϯδχΞ޲͚τʔΫˍ૬ஊձˏ౦ژ
    ϖύϘ෱ԬͰͷʮମײʯΛ޲্ͤ͞Δ
    WebαʔϏεج൫ٕज़ʹؔ͢ΔऔΓ૊Έ

    View Slide

  2. • ϖύϘݚڀॴ ओ੮ݚڀһ
    • ژ౎େֶത࢜ʢ৘ใֶʣ
    • γχΞɾϓϦϯγύϧ ΤϯδχΞ
    • ݩΠϯϑϥΤϯδχΞ
    • ೔ຊOSS঑ྭ৆ɾ৘ใॲཧֶձ ࢁԼه೦ݚڀ৆
    2
    দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory

    View Slide

  3. ෱ԬͰओʹ׆ಈ͍ͯ͠Δ
    ϖύϘݚڀॴͷऔΓ૊Έͷ঺հ

    View Slide

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

    View Slide

  5. 1. ͳΊΒ͔ͳγεςϜ
    2. WebαʔϏεج൫ٕज़ͷݚڀͱ͸
    3. ڞ༗ϗεςΟϯάαʔϏεͷηΩϡϦςΟͱੑೳͷݚڀ
    4. ৗ࣌HTTPSͷ࣌୅ͷେن໛ূ໌ॻ؅ཧͷݚڀ
    5. ·ͱΊ
    5
    ໨࣍

    View Slide

  6. 1.
    ͳΊΒ͔ͳγεςϜ

    View Slide

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

    View Slide

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

    View Slide

  9. 2.
    WebαʔϏεج൫ٕज़ͷݚڀͱ͸

    View Slide

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

    View Slide

  11. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ
    11
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

    ਓͷମྗɾਫ਼ਆͷݶք
    ਓͷମྗɾਫ਼ਆͷݶք
    ਓྗͰࢧ͑ଓ͚Δ
    ਓྗͰ޿͛ଓ͚Δ
    ਓྗͰࢧ͑ଓ͚Δ
    ϓϩμΫτͷݶքͷ෯
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

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

    View Slide

  12. • WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ
    • WebαʔϏεར༻ऀͷແҙࣝԼʹ͓͚Δշదͳײ֮ͷఏڙ
    • ౰ͨΓલʹී௨ʹҧ࿨ײͳ͘࢖͍ଓ͚ΒΕΔ͜ͱͷշద͞
    • WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ
    • ౰ͨΓલʹγεςϜͷ҆ఆੑΛอͪɺਓͷڧ੍հೖΛ௿ݮ
    12
    ࢲͷݚڀςʔϚ

    View Slide

  13. 1. ηΩϡϦςΟͱੑೳͷཱ྆ʹؔ͢Δݚڀ
    2. HTTPSԽʹ޲͚ͨӡ༻ٕज़ͱϦιʔε࢖༻ྔվળͷݚڀ
    13
    ຊεϥΠυͰ͸2ͭͷݚڀΛ঺հ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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.

    View Slide

  18. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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݄.

    View Slide

  25. • υϝΠϯ΍ϗετΛେྔʹ࣋ͭαʔϏε͸ରԠࠔ೉
    • ݱࡏͷαʔόιϑτ΢ΣΞ͸େྔͷূ໌ॻͷѻ͍ʹෆ޲͖
    • ͜ͷ··Ͱ͸EC΍ϗεςΟϯάͷHTTPSಋೖ͕ۃΊͯࠔ೉
    • Ͱ͸େྔূ໌ॻʹରԠͨ͠ιϑτ΢ΣΞΛ࡞Γ·͠ΐ͏
    25
    ৗ࣌HTTPSԽʹରԠ͍ͯ͘͠ඞཁ༗Γ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  29. 10ສϗετऩ༰࣌ͷ੩తϑΝΠϧͷੑೳൺֱ
    29
    ਺ेCZUFTͷܰྔͳ)5.-ϑΝΠϧ΁ͷϦΫΤετ
    3FRVFTUTFD





    ಉ࣌઀ଓ਺

    ैདྷख๏ ఏҊख๏

    View Slide

  30. ຊ൪؀ڥͰ࣮ӡ༻্ͷධՁ

    View Slide

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

    View Slide

  32. ैདྷख๏ͰऔΓ૊ΜͰ͍ͨΒ
    ͲΕ͙Β͍େม͔ͩͬͨΛ͖ͪΜͱධՁ

    View Slide

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

    View Slide

  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
    Θ͔Γʹ͍͕͘Ұϲ݄Ͱ͔Β΁ͱ
    ূ໌ॻఔ౓૿͍͑ͯΔ
    ূ໌ॻ਺͸ϦϓϨʔεલͷഒ͔Βഒ

    View Slide

  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࢖༻཰͸ඍ͕ࠩͩ௿ݮ܏޲

    View Slide

  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ఔ౓૿Ճ

    View Slide

  37. • ैདྷख๏͸20ສূ໌ॻΛॲཧ͢Δͷʹ500Gbytesඞཁ
    • 32GBytesͷαʔό͕15୆Ҏ্ඞཁ
    • ఏҊख๏͸20ສূ໌ॻͰ΋1୆ͰॲཧՄೳͷݟࠐΈ
    • 1ສূ໌ॻ૿Ճͯ͠΋ϝϞϦ࢖༻ྔ͸3GBytesͰ҆ఆ
    • ఏҊख๏ʹΑΓඞཁϋʔυ΢ΣΞίετΛେ෯ʹ௿ݮՄೳ
    37
    ϝϞϦ࢖༻ྔ͔Βඞཁͳϋʔυ΢ΣΞΛݟੵ΋Γ

    View Slide

  38. ஌Β͵ؒʹϋʔυ΢ΣΞ΍ӡ༻ίετ͕
    ௿ݮ͞Εٕͯज़ऀʮମײʯ͕޲্

    View Slide

  39. 5.
    ·ͱΊ

    View Slide

  40. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ
    40
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

    ਓͷମྗɾਫ਼ਆͷݶք
    ਓͷମྗɾਫ਼ਆͷݶք
    ਓྗͰࢧ͑ଓ͚Δ
    ਓྗͰ޿͛ଓ͚Δ
    ਓྗͰࢧ͑ଓ͚Δ
    ϓϩμΫτͷݶքͷ෯
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

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

    View Slide

  41. ਓؒͷൃ૝ vs ج൫ٕज़(ػց)ͱࢲͷݚڀ
    41
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

    ਓͷମྗɾਫ਼ਆͷݶք
    ਓͷମྗɾਫ਼ਆͷݶք
    ਓྗͰࢧ͑ଓ͚Δ
    ਓྗͰ޿͛ଓ͚Δ
    ਓྗͰࢧ͑ଓ͚Δ
    ϓϩμΫτͷݶքͷ෯
    ج൫ٕज़ ػց

    ϓϩμΫτ ਓؒͷൃ૝

    ػցͰࢧ͑ଓ͚Δ
    ϓϩμΫτͷݶքͷ෯
    • ॎ࣠͸ϓϩμΫτ։ൃɾӡ༻ͷίετͱ΋ݴ͑Δ
    • ج൫ٕज़ͷݶքΛ௒͑Δ΂͘ਓͰΧόʔ͍ͯ͠Δ
    • ॎ࣠ͷίετΛ୹͘ɺԣ࣠ͷݶքͷ෯Λ޿͛Δͨ
    Ίͷݚڀ։ൃΛߦ͍ͬͯΔ
    দຊͷݚڀ
    ࣮ӡ༻্ͷධՁΛେ੾ʹ͠
    ͔ͦ͜Β৽نੑɾ༗ޮੑɾ৴པੑΛࣔ͢

    View Slide

  42. • WebαʔϏεར༻ऀͷϢʔβʔମײ(User Sensation)ͷվળ
    • WebαʔϏεఏڙଆͷٕज़ऀମײ(Engineer Sensation)ͷվળ
    • ݚڀ։ൃΛ௨ͯ྆͠ํ޲ͷମײΛվળ͍ͯ͘͠
    • ج൫ٕज़ͷվળΛ௨ͯ͠ਓ͕ࢧ͑Δ΂͖ྖҬΛΑΓߴ౓ʹ
    • WebαʔϏεج൫ͷݶքΛ௒͑ɺϓϩμΫτͷݶքΛ௒͑Δ
    42
    WebαʔϏεج൫ٕज़ͷݚڀ঺հ

    View Slide

  43. ݚڀһɺੵۃతʹืूதʂ
    http://rand.pepabo.com/

    View Slide