Slide 1

Slide 1 text

WebγεςϜͷ ύϑΥʔϚϯε νϡʔχϯά id:karupanerura (DeNA, Co,. LTD.) CAMPHOR x DeNA

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

ಥવͰ͕࣭͢໰Ͱ͢

Slide 4

Slide 4 text

଎͍ΞϓϦέʔγϣϯ͸ ޷͖Ͱ͔͢ʁ

Slide 5

Slide 5 text

id:karupanerura • DeNA, Co,. LTD. ΤϯδχΞ • Japan Perl Association ୅දཧࣄ • ISUCON8༧બग़୊ • Perl/Go/Java/etc..

Slide 6

Slide 6 text

WebγεςϜͷ ύϑΥʔϚϯεɾνϡʔχϯά ʹ͍ͭͯ࿩͠·͢ ※ࢲݟ͕ͦΕͳΓʹೖ͍ͬͯΔͷͰྃ͝ঝ͍ͩ͘͞

Slide 7

Slide 7 text

ࠓ೔࿩͢͜ͱ • ύϑΥʔϚϯεɾνϡʔχϯά • ໾ׂͱجຊతͳऔΓ૊Έํ • ܭଌʹ͓͚Δ۩ମతͳ໰୊ͱͦͷղܾࡦ • νϡʔχϯάͷ࣮ԋ • ISUCON͸͍͍ͧ

Slide 8

Slide 8 text

ࠓ೔࿩͞ͳ͍͜ͱ • ݸʑݸผͷπʔϧ΍ख๏ͷৄղ • ISUCONͷউͪํ

Slide 9

Slide 9 text

WebγεςϜʁ

Slide 10

Slide 10 text

WebΞϓϦέʔγϣϯ ͡Όͳͯ͘ʁ

Slide 11

Slide 11 text

ͳΜͰʮWebγεςϜʯͳͷʁ • ΞϓϦέʔγϣϯͰ͸ͳ͘γεςϜʹϑΥʔ Χεͯ͠ߟ͑ͯ΋Β͍͍ͨͷͰ͋͑ͯબΜͩ • WebΞϓϦέʔγϣϯͱ͍͏ΑΓWebͰఏڙ ͢ΔγεςϜશମʹࢹ఺Λ޲͚ͯ΄͍͠

Slide 12

Slide 12 text

γεςϜશମʹϑΥʔΧε͢Δ • ΞϓϦ୯ମͰνϡʔχϯά͢Δ͜ͱ͸গͳ͍ • ߏ੒΍ϛυϧ΢ΣΞͷ࠷దԽ΋ηοτ • ৔߹ʹΑͬͯ͸API͢Βม͑Δ • WebγεςϜશମΛ၆ᛌͯ͠ݟΔඞཁ΋͋Δ

Slide 13

Slide 13 text

ͱ͍͏Θ͚Ͱຊ୊

Slide 14

Slide 14 text

ύϑΥʔϚϯεɾνϡʔχϯά #ͱ͸

Slide 15

Slide 15 text

ύϑΥʔϚϯεɾνϡʔχϯά • ύϑΥʔϚϯεʹγεςϜΛ࠷దԽ͢Δ͜ͱ • ʮύϑΥʔϚϯεʯͬͯͳʹʁ • ϨΠςϯγʔʁ • ୯Ґ࣌ؒ͋ͨΓͷ࠷େॲཧ਺ʁ • ίετʁ

Slide 16

Slide 16 text

ύϑΥʔϚϯεʁ • ͦ΋ͦ΋ύϑΥʔϚϯεͷ޲্͸खஈ • ໨త࣍ୈͰͦͷҙຯ͢Δͱ͜Ζ΋มΘΔ • ໨తʹ߹Θͤͦͷ౎౓Ͱఆٛ͢Δඞཁ͕͋Δ • e.g.) 100ສ/࣌ͷϢʔβʔΞΫηεʹ଱͑Δ • e.g.) ຫੑతʹ஗͍APIͷ଎౓Λվળ͢Δ

Slide 17

Slide 17 text

ͳͥ΍Δͷ͔

Slide 18

Slide 18 text

ػձଛࣦΛ๷͙ • ར༻ऀΛ૿΍͢ࢪࡦͳͲΛߦ͏৔߹ • γεςϜ͕໨ඪ஋ͷঢ়گʹ଱͑ΒΕͳ͍ͱʁ • → ຊདྷͷͦͷαʔϏεͷՁ஋͕ಧ͔ͳ͍ • → ػձଛࣦ • → ࣗ෼ୡ΋Ϣʔβʔ΋൵͍͠

Slide 19

Slide 19 text

ޮ཰͕ѱ͍ͱίετֻ͕͔Δ • Ϋϥ΢υαʔϏεͷ΄ͱΜͲ͸ैྔ՝੍ۚ • ޮ཰ྑ͘Ձ஋ΛϢʔβʔʹఏڙͰ͖ͳ͍ͱ… • →ച্্͕͕ͬͯ΋ίετ΋૿͑Δ • →རӹ͕৳ͼ೰Ή • →Ϣʔβʔʹ৽͍͠Ձ஋Λఏڙ͠ʹ͘͘ͳΔ

Slide 20

Slide 20 text

ಥવੑೳ͕ྼԽ͢ΔͱࠔΔ • ҆ఆ͠ͳ͍ͱਖ਼ৗͳঢ়ଶ͕ఆٛͮ͠Β͍ • ΞϥʔτΛग़͢΂͖ᮢ஋Λنఆͮ͠Β͍ • ߴ͘͢Δͱ… ো֐Λݟམͱ͢ • ௿͘͢Δͱ… ΞϥʔτରԠ஍ࠈ • → ໰୊ͷ༗ແΛ౎౓ਓ͕ؒ൑அ͢Δঢ়ଶ

Slide 21

Slide 21 text

ͳͲͳͲ… ঢ়گʹΑ༷ͬͯʑ

Slide 22

Slide 22 text

Ϗδωε্ͷ໰୊ͷղܾ ӡ༻ͷ͠΍͢͞ͷվળ ͜ΕΒ͕໨తʹͳΔ͜ͱ͕ଟ͍

Slide 23

Slide 23 text

ٯʹݴ͑͹ඞཁͳ͍ͷʹ ΍Δҙຯ͸͋·Γͳ͍ ʢଞʹ΋ͬͱॏཁͳ͜ͱ͕͋Δ͸ͣʣ

Slide 24

Slide 24 text

ͭ·ΓԿΛ͢Δͷ͔

Slide 25

Slide 25 text

ύϑΥʔϚϯε্ͷ໰୊ղܾ • σʔλϕʔεͰੑೳ͕಄ଧͬͯ͠·͏ • APIͷϨΠςϯγ͕ߴ͗ͯ͢ଞγεςϜ͕ࠔΔ • όονॲཧʹֻ͕͔࣌ؒΓ͗͢Δ • etc..

Slide 26

Slide 26 text

࣮ࡍʹͲ͏΍ΔͱΑ͍ͷ͔

Slide 27

Slide 27 text

໨ඪΛઃఆ͢Δ ↓ ܭଌ͢Δ ↓ νϡʔχϯάΛߦ͏ ↓ ܭଌ͢Δ ʢ܁Γฦ͢ʣ

Slide 28

Slide 28 text

໨ඪΛઃఆ͢Δ ↓ ໰୊Λఆٛ͢Δ ↓ ໰୊Λղফ͢Δ ↓ ໰୊Λఆٛ͢Δ ʢ܁Γฦ͢ʣ

Slide 29

Slide 29 text

໨ඪΛઃఆ͢Δ

Slide 30

Slide 30 text

໨ඪΛઃఆ͢Δ • Ϗδωε্ͷ໨ඪ͔ΒϒϨΠΫμ΢ϯ͢Δ • ϢʔβʔNਓ͕ಉ࣌ʹ࢖ͬͨΒͲ͏ͳΔ͔ʁ • ԾઆΛཱͯͯࣜʹམͱ͠ܭࢉ͢Δ • (ϦϦʔεࡁͷ৔߹)طଘͷ਺஋͔ΒରൺΛऔΔ

Slide 31

Slide 31 text

໨ඪʹద͍ͯ͠Δ΋ͷ • ܭଌ/ࢉग़Ͱ͖Δ(͠΍͍͢)ͱྑ͍ • ୯Ґ࣌ؒ͋ͨΓͷϦΫΤετॲཧ਺ • ୯ҐϦΫΤετ౰ͨΓͷϨΠςϯγ • ҰఆϦΫΤετͷॲཧʹඞཁͳ୆਺

Slide 32

Slide 32 text

ܭଌ͢Δ

Slide 33

Slide 33 text

ܭଌ͢Δ • ͦ΋ͦ΋໨ඪୡ੒ʹ͚͍ۙͮͯΔ͔ • ໰୊ʢΤϥʔͳͲʣ͸ൃੜ͍ͯ͠ͳ͍͔ • ݟམͱ͕ͪ͠ʢಛʹχονέʔεʣ • ໰୊ͷཁҼʹͳΓ͑Δࣄ৅͸ى͖ͯͳ͍͔ • Ϧιʔεͷར༻཰ͷ૿ՃͳͲ

Slide 34

Slide 34 text

ͲΜͳࢦඪΛܭଌ͢Δ͔ • ࣮ߦ؀ڥʹ͓͚Δ༗ݶͷϦιʔε • PaaS (GAE/Heroku/etc..) • Instances/Network/etc.. • IaaS (EC2/GCE/etc..) • Instances/CPU/Memory/Network/etc..

Slide 35

Slide 35 text

ͲΜͳࢦඪΛܭଌ͢Δ͔ • ΞϓϦέʔγϣϯͷ࣮ߦ࣌ؒͷ౷ܭ(Profiling) • ϨεϙϯεΛฦ͢·Ͱͷ࣌ؒ • σʔλϕʔε΁ͷΫΤϦͷ࣮ߦ࣌ؒ • ؔ਺ͷ࣮ߦ࣌ؒ • etc..

Slide 36

Slide 36 text

ͲͷΑ͏ʹܭଌ͢Δ͔ • ࣮ࡍͷॲཧʹରͯ͠ͷγεςϜͷ൓ԠΛݟΔ • WebγεςϜͳͷͰHTTPϦΫΤετ͕ඞཁ • ࣮ࡍͷϦΫΤετΛྲྀͤΔ৔໘͸΄΅ͳ͍ • ͍͖ͳΓϦϦʔε͸ා͗͢ΔͷͰجຊແཧ • ͳΜͱ͔ݕূͰ͖Δ؀ڥͱ࢓૊Έ͕ඞཁ

Slide 37

Slide 37 text

ݕূ؀ڥͷ४උ • ຊ൪ͱ΄΅ಉ͡؀ڥΛ༻ҙ͢Δ • શ෦ಉ͡Ͱ͸μϝ • ֎෦API callͳͲ͸ࢭΊͳ͍ͱ͍͚ͳ͍ • e.g.) Google Play ΁ͷAPI Call (՝ۚ౳) • ܭଌʹෆՄܽͳॲཧͷਫ਼͕ࠪඞཁ

Slide 38

Slide 38 text

ෛՙࢼݧͷ४උ • ຊ൪ͱग़དྷΔ͚ͩಉ͡ෛՙΛֻ͚͍ͨ • ຊ൪ͱಉ͡Α͏ͳHTTPϦΫΤετ • ຊ൪ͱಉ͡Α͏ͳσʔλ • ໨ඪΛୡ੒͍ͯ͠Δ͘Β͍ͷτϥϑΟοΫ

Slide 39

Slide 39 text

ܭଌ݁ՌΛͲ͏׆͔͔͢ • ໨ඪୡ੒ͨ͠Βˠ͓͠·͍ • ໨ඪୡ੒Ͱ͖ͯͳ͔ͬͨΒ • ໨ඪͱဃ཭͕ͲΕ͘Β͍͋Δ͔ • ໨ඪୡ੒Λ๦͛ΔཁҼ͸ͳʹ͔ • ੑೳ্ͷϘτϧωοΫͱͳΔͷ͸Կ͔

Slide 40

Slide 40 text

νϡʔχϯάΛߦ͏

Slide 41

Slide 41 text

νϡʔχϯάΛߦ͏ • ੑೳ্ͷϘτϧωοΫΛղফ͢ΔࢪࡦΛߦ͏ • ΞʔΩςΫνϟͷվળ • ΞϧΰϦζϜͷվળ • ઃఆ஋ͷ࠷దԽ • etc..

Slide 42

Slide 42 text

͜Εͷ܁Γฦ͠

Slide 43

Slide 43 text

Ұ൪Ή͔͍ͣ͠΋ͷ͸ͳʹ͔

Slide 44

Slide 44 text

ܭଌ

Slide 45

Slide 45 text

ܭଌͷ೉͠͞ • ͦ΋ͦ΋ܭଌͷࢦඪ͸໨తʹଈ͍ͯ͠Δʁ • ܭଌͷͨΊͷલఏ৚݅͸ἧ͍ͬͯΔʁ • ܭଌʹϊΠζ͸ͲΕؚ͚ͩ·Ε͍ͯΔʁ • ݟམͱ͍ͯ͠Δࢦඪ͸ͳ͍ʁ • ܭଌ݁Ռ͔Βໃ६ͷແ͍ԾઆΛಋ͚͍ͯΔʁ

Slide 46

Slide 46 text

ແݶʹ՝୊͕͋Δ

Slide 47

Slide 47 text

Α͋͘Δ՝୊ • ෛՙࢼݧγφϦΦͷ೉͠͞ • ෛՙࢼݧͷ࣮ࢪͷ࢓ํͷ೉͠͞ • ܭଌϊΠζΛআ͘೉͠͞

Slide 48

Slide 48 text

ෛՙࢼݧγφϦΦͷ೉͠͞

Slide 49

Slide 49 text

ෛՙࢼݧͷγφϦΦͷ࡞Γํ • ຊ൪ͱग़དྷΔ͚ͩಉ͡ෛՙΛֻ͚͍ͨ • Ϣʔβʔͷૢ࡞Λ໛ͯ͠γφϦΦʹམͱ͢ • ͲͷΑ͏ͳϢʔβʔ͕ଟ͘ͳΔͷ͔ʁ • ͲͷΑ͏ͳૢ࡞͕ଟ͘ͳΔͷ͔ʁ • ԾઆΛॏͶ͍͔ͯ͘Βڰ͍΍͍͢

Slide 50

Slide 50 text

ྑ͘ͳ͍γφϦΦ • Ծઆ͸ͦΕͬΆ͍͚Ͳݱ࣮ͱဃ཭͕େ͖͍ • e.g. ࣮ࡍʹ͸͋·Γݺ͹Εͳ͍ϦΫΤετ ͕ଟ͘ͳͬͯ͠·͍ݱ࣮ʹى͖ͳ͍ແ͍Ϙ τϧωοΫ͕ੜ·Εͯ͠·͏ • ׬ᘳͳ΋ͷ͸ෆՄೳͳͷͰׂΓ੾Γ΋ඞཁ

Slide 51

Slide 51 text

ෛՙࢼݧ ࣮ࢪͷ࢓ํͷ೉͠͞

Slide 52

Slide 52 text

ෛՙ͕͏·ֻ͔͘Βͳ͍ • ෛՙΛֻ͚ΔଆͰ٧·Δ • ࣮ʹ༷ʑͳཁҼͰ٧·Δ • ෼ࢄ͠ͳ͚Ε͹౰વݶքʹ౰ͨΓ΍͍͢ • ൺֱత෼ࢄͤ͞΍͍͢ͱ͸͍͑Ͳ΋… • ૝ఆͲ͓Γͷෛՙֻ͕͚ΒΕ͍ͯΔ͔ʁ

Slide 53

Slide 53 text

γφϦΦͷ٧·ΓͷӨڹ • γφϦΦͷ్தͰϨΠςϯγ͕ۃ୺ʹѱԽ • → Ұ࣌తʹϦΫΤετͷϖʔε͕མͪΔ • → Ҿ͔͔ͬͬͯΔෛՙࢼݧ͸΄΅ఀࢭঢ়ଶ • → ฒྻ਺͕ෆ҆ఆʹͳΔ

Slide 54

Slide 54 text

γφϦΦͷ٧·ΓͷӨڹͷ࡟ݮ • ϦΫΤετͷλΠϜΞ΢τΛ୹Ίʹ͢Δ • ҆ఆ͠ͳ͍͕࣌ؒݮΔ͜ͱͰϊΠζ͕ݮΒ ͤΔ

Slide 55

Slide 55 text

ܭଌϊΠζΛআ͘೉͠͞

Slide 56

Slide 56 text

αʔόʔͰͳʹ͕ಈ͍͍ͯΔʁ • ΞϓϦέʔγϣϯ͚ͩͱ͸ݶΒͳ͍ • fluentd (ϩάͷετϦʔϜసૹ) • ؂ࢹεΫϦϓτ • etc...

Slide 57

Slide 57 text

ܭଌ݁Ռ͸ҼՌؔ܎Λࣔ͞ͳ͍ • ͨͱ͑͹ϨεϙϯεͷϨΠςϯγ͕ߴ͍৔߹ • ஗͍ؔ਺΍ΫΤϦ͕௚઀ݪҼͱ͸ݶΒͳ͍ • ҼՌؔ܎͕ແ͍৔߹΋͋Δ • ͦΕࣗମ͕ݪҼͰ͸ͳ͘ଞͷέʔεʹΑΓ Ҿ͖ى͜͞Εͨ໰୊ͷ݁ՌͰ͋Δ৔߹ͳͲ

Slide 58

Slide 58 text

ҼՌؔ܎ΛݟۃΊΔͨΊʹ • ԾઆΛ΋ͱʹ࣮ଶͱͷໃ६͕ແ͍͔ߟ͑Δ • ࣮ଶΛਖ਼͘͠ଟ֯తʹ೺Ѳ͢Δඞཁ͕͋Δ • ෳ਺ͷࢦඪΛซͤͯݟΔ • Ծઆʹରͯ͠ໃ६͕͋Δ݁ՌΛ୳͢ • Ծઆͷ͔֬Β͠͞ΛݟۃΊΔ͜ͱ͕Մೳ

Slide 59

Slide 59 text

ҼՌؔ܎ΛݟۃΊΔͨΊʹ • ͦΕͧΕͷ࢓૊Έ͕ಈ͘ϝΧχζϜΛਖ਼͘͠ཧ ղ͍ͯ͠Δ͜ͱ͕ͱͯ΋ॏཁ • ॲཧͷ࣮ଶͱؔ܎ੑΛ஌͍ͬͯΕ͹Ծઆʹର͠ ͯໃ६ͨ݁͠Ռʹؾͮ͘͜ͱ͕Ͱ͖Δ • ཧղͤͣʹ΍Δͷ͸ͨͩͷΪϟϯϒϧ

Slide 60

Slide 60 text

࣮ફ

Slide 61

Slide 61 text

ISUCON https://isucon.net/

Slide 62

Slide 62 text

Iikanjini Speed Up CONtest • WebγεςϜͷνϡʔχϯάίϯςετ • ϛυϧ΢ΣΞɺΞϓϦέʔγϣϯ͢΂ͯΛࣗ ༝ʹ͍͍ͯ͠ͷͰ࠷ߴʹύϑΥʔϚϯεͷ ߴ͍ΞϓϦέʔγϣϯʹ࡞Γม͑Δڝٕ • 2011೥ʙདྷ೥2020೥Ͱ10ճ໨ͷ։࠵

Slide 63

Slide 63 text

ISUCONͷউഊ • ग़୊ଆͷ༻ҙ͓ͨ͠୊ΞϓϦέʔγϣϯΛ • ग़୊ଆͷ༻ҙ͓ͨ͠୊ϕϯνϚʔΧʔͰ • ࠷΋ߴ͍είΞΛग़ͨ͠ਓ͕উͪ

Slide 64

Slide 64 text

είΞʁ • ग़୊ଆ͕ఆٛͨ͠໨ඪୡ੒౓Λ਺஋Խͨ͠΋ͷ • աڈͷࣄྫ • ୯Ґ࣌ؒ౰ͨΓͷ૯ϦΫΤετ਺ • νέοτͷൢച਺ • CtoCΞϓϦέʔγϣϯͷച্

Slide 65

Slide 65 text

໨ඪ͕Ծఆ͞Ε͍ͯΔʂ

Slide 66

Slide 66 text

͋ͱ͸ܭଌͱνϡʔχϯάΛ ͢Δ͚ͩʂ

Slide 67

Slide 67 text

࿅शʹ΋͍ͬͯ͜ʂ

Slide 68

Slide 68 text

աڈ໰͕githubʹ͋Δ https://github.com/isucon

Slide 69

Slide 69 text

جຊREADMEʹै͑͹ಈ͘

Slide 70

Slide 70 text

஫ҙ • ࣮ࡍͷڝٕͷείΞͱൺֱ͢Δҙຯ͸গͳ͍ • είΞ͸࣮ߦ؀ڥͰ΋มΘΓಘΔ • Ϋϥ΢υج൫΋ਐԽ͢Δ • ॳظείΞ͔ΒͷൺͰߟ͑Δͱྑ͍

Slide 71

Slide 71 text

࿅शʹ΋͍ͬͯ͜ʂʂʂ

Slide 72

Slide 72 text

ISUCON͸͍͍ͧ

Slide 73

Slide 73 text

࣮ࡍʹ΍ͬͯΈ·͠ΐ͏

Slide 74

Slide 74 text

ISUCON8༧બ໰୊ https://github.com/isucon/isucon8-qualify (DEMO)

Slide 75

Slide 75 text

·ͱΊ

Slide 76

Slide 76 text

·ͱΊ • ύϑΥʔϚϯεɾνϡʔχϯά͸खஈ • ໨తΛݟఆΊͯऔΓ૊Ή͜ͱ͕େ੾ • ܭଌ͕ΩϞ • ෳ਺ͷ؍఺͔Β͔֬Β͍͠ԾઆΛಋ͖ग़͢ • ISUCON͸͍͍ͧ

Slide 77

Slide 77 text

ࢀߟจݙ • ݪҼௐࠪ༻LinuxίϚϯυ | ֎ಓ෕ͷঊ • LinuxαʔόʹϩάΠϯͨ͠Β͍ͭ΋΍͍ͬͯΔ ΦϖϨʔγϣϯ | Ώ͏͏͖ϒϩά • αʔόʔ/ΠϯϑϥΛࢧ͑Δٕज़ (ٕज़ධ࿦ࣾ) • ISUCONͷউͪํ

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

No content