Slide 1

Slide 1 text

GameWithͰݕࡧγεςϜ͕࢖ΘΕΔ·Ͱ Elasticsearchษڧձ 2019/02/20 αʔϏε։ൃ෦ R&DνʔϜ Ί΋Γʔ(@m3m0r7)

Slide 2

Slide 2 text

Έͳ͞ΜɺHello Worldʂ

Slide 3

Slide 3 text

ͩΕʁ Ί΋Γʔ(@m3m0r7) Ͱ͢ɻ ը૾͸͏ͪͷϋϜελʔͷ Lily ͪΌΜͰ͢ɻ ౦ژͷ࿡ຊ໦ʹ͋Δ גࣜձࣾ GameWith ͱ͍͏ ձࣾͰಇ͍ͯ·͢ɻ

Slide 4

Slide 4 text

ͱ͜ΖͰɺΈͳ͞Μ GameWith ͸͝ଘ஌Ͱ͔͢ʁ

Slide 5

Slide 5 text

GameWith ʹ͍ͭͯ

Slide 6

Slide 6 text

GameWith ʹ͍ͭͯ ήʔϜ߈ུʮGameWithʯͰ͕͢ɺ ࣮͸΢ΣϒαΠτҎ֎ʹ΋ΞϓϦ͕͋Γ·͢

Slide 7

Slide 7 text

GameWith ʹ͍ͭͯ ήʔϜ߈ུʮGameWithʯͰ͕͢ɺ ࣮͸΢ΣϒαΠτҎ֎ʹ΋ΞϓϦ͕͋Γ·͢

Slide 8

Slide 8 text

ࠓ೔͸͜͜ͷݕࡧػೳʹ͍͓ͭͯ࿩͠·͢

Slide 9

Slide 9 text

๭೔๭ॴ

Slide 10

Slide 10 text

๭೔๭ॴ

Slide 11

Slide 11 text

͜ͷืू͔ΒݕࡧγεςϜͷ։ൃ͕࢝·Δ

Slide 12

Slide 12 text

ݕࡧγεςϜͷ։ൃͰҙࣝͨ͜͠ͱ

Slide 13

Slide 13 text

θϩϕʔε͔Βͷ։ൃͰҙࣝͨ͜͠ͱ • ҙࣝͨ͜͠ͱ͸5఺ • ᶃ ୭Ͱ΋։ൃͰ͖ΔΑ͏ʹ͢ΔϝϯλϦςΟ • ᶄ ৽͍͜͠ͱʹ௅ઓ͢ΔϝϯλϦςΟ • ᶅ ࠳͚ͳ͍ϝϯλϦςΟ • ᶆ ਏ͍ঢ়گΛָ͠ΉϝϯλϦςΟ • ᶇ ࢒ۀ͸͠ͳ͍ͧͱ͍͏ڧ͍ϝϯλϦςΟ

Slide 14

Slide 14 text

νʔϜߏ੒

Slide 15

Slide 15 text

νʔϜߏ੒ • ݕࡧγεςϜࣗମͷνʔϜߏ੒͸4໊ମ੍ • αʔόʔαΠυΤϯδχΞ × 1 • GameWith ͷ΢Σϒ໘ͷ։ൃ΍վम΋݉຿ • ΠϯϑϥΤϯδχΞ × 1 • ଞͷΠϯϑϥ໘ͷλεΫ΋݉຿ • σΟϨΫλʔ × 1 • GameWith ͷ΢Σϒ໘ͷσΟϨΫγϣϯ΋݉຿ • ίʔυϨϏϡϫʔ × 1 • ෦௕ • ଞʹiOS, AndroidΤϯδχΞ

Slide 16

Slide 16 text

༨ஊ

Slide 17

Slide 17 text

ϓϩδΣΫτ։࢝࣌͸ࢲͱ෦௕͚ͩ

Slide 18

Slide 18 text

ߟ͑ͳ͍͜ͱʹ͠Α͏

Slide 19

Slide 19 text

εέδϡʔϧ

Slide 20

Slide 20 text

9݄Ϛετ

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

ਖ਼௚Ϧιʔε଍Γͳ͍

Slide 23

Slide 23 text

ͦΕͰ΋΍Γ͖Δͧ

Slide 24

Slide 24 text

ٕज़બఆ

Slide 25

Slide 25 text

ٕज़બఆ • ։ൃ؀ڥ͸DockerͰߏ੒ͨ͠ • DockerΛ࢖͏͜ͱʹΑΓɺԿ͕؀ڥʹ͋Δͷ͔໌֬ʹΘ͔ΔΑ͏ʹͳͬͨ • GameWith ͸ Vagrant Λ࢖͏෩ை͕͋ΓɺͲ͏͍ͬͨϛυϧ΢ΣΞ͕͋ Δ͔ɺͲ͏͍͏ߏ੒ʹͳ͍ͬͯΔͷ͔೺Ѳͮ͠Β͔ͬͨ • ։ൃ؀ڥͱϓϩμΫγϣϯ؀ڥͰඞཁͳ؀ڥͷࠩҟΛແ͔ͨͬͨ͘͠ • ϓϩμΫγϣϯ؀ڥʹ͸͋Δ͕ɺ։ൃ؀ڥʹ͸ͳ͍ɺͱ͍͏ঢ়ଶΛ࡞Γ ͨ͘ͳ͔ͬͨ • ࣾ಺ͰDockerΛϓϩμΫγϣϯʹར༻͢Δͷ͸͜ͷϓϩδΣΫτ͕ॳΊͯ • ৽͍͠௅ઓΛ͢Δ͜ͱ͸͍͍͜ͱɻ৽͍͜͠ͱʹ௅ઓΛͨ͠ͱ͍͏લྫ Λ࡞ΓपΓͷϝϯόʔ΋ɺࣗΒਐΜͰ௅ઓ͍ͯ͘͠෩౔ʹ͍͖͔ͯͨͬ͠ ͨ

Slide 26

Slide 26 text

ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • GameWith ͸ AWS Λ࢖༻͍ͯ͠Δ͕ɺAWS Elasticsearch Service࢖ΘͣAWS EC2 ͱ Docker ্ʹElasticsearchΛཱͯΔ͜ͱʹɻ • GameWith ͸ ήʔϜ߈ུ৘ใΛऔΓѻ͏ಛੑ͔Βݻ༗໊ࢺ΋ଟࣙ͘ॻͷ ໰୊͕ݒ೦͞Εͨɻ • ࣙॻ͸ Sudachi Λ࢖༻ • ৽ͨͳࢼΈΛ͔ͨͬͨ͠ • ൒෼ϊϦɺ൒෼දهਖ਼نԽ໨౰ͯ

Slide 27

Slide 27 text

ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • Elasticsearchຊମͱͷ௨৴͸PHPΛٕज़બఆͨ͠ • GameWith͸PHPΛϝΠϯݴޠͱͯ͠ѻ͍ͬͯΔձࣾ • ຊ౰͸৽ͨͳ௅ઓͱ͍͏ϚΠϯυͰ Go ʹ͠Α͏ͱࢥ͕ͬͨɺelasticެࣜ ͷϥΠϒϥϦ͕౰࣌͸ͳ͔ͬͨɻ • PHPͰ͋Ε͹ɺelasticެ͔ࣜΒϥΠϒϥϦ͕഑৴͞Ε͍ͯΔ • ͨͩɺࠓճͷݕࡧγεςϜͰ͸ PHP ͷGuzzle Λ࢖ͬͯεΫϥονͰ ࡞ͬͨɻ

Slide 28

Slide 28 text

Πϯϑϥߏ੒

Slide 29

Slide 29 text

Πϯϑϥߏ੒ ※μογϡϘʔυͱ͸GameWithͷϥΠλʔ͕࢖༻͢Δ؅ཧը໘ͷ͜ͱͰ͢

Slide 30

Slide 30 text

Πϯϑϥߏ੒ • ͳͥ͜ͷߏ੒ʹ͠Α͏ͱͨ͠ͷ͔ • શจݕࡧΤϯδϯ͸ΞϓϦ͔Β͸ࢀরɺμογϡϘʔυ͔Β͸ॻ͖ࠐΈ͕ߦ ΘΕΔɻ • ήʔϜͷ߈ུهࣄ͸සൟʹߋ৽͞ΕΔͨΊɺߋ৽৘ใ΍࡟আ৘ใΛΩϡʔ Ͱॲཧ͔ͨͬͨ͠ͷͰɺAmazon SQSΛՃ͑ͨ • Elasticsarchͷ৑௕ԽͷͨΊσʔλϊʔυ͕2୆Ҏ্ඞཁͩͬͨ • ࠓճͷϓϩμΫτͰ͸ͲΕ͚ͩͷΞΫηε਺͕͋Δ͔࢑ఆͰ͔͠ग़ͤͳ͔ͬ ͕ͨ1୆ͩͱϊʔυ͕յΕͨࡍͷରॲ͕Ͱ͖ͳͦ͞͏Ͱ͋ΔͨΊ

Slide 31

Slide 31 text

Πϯϑϥߏ੒ • ࣮ࡍͷߏ੒

Slide 32

Slide 32 text

ࣾ಺ʹ஌ݟ͕ͳ͘౰࣌͸ ͜ͷΠϯϑϥߏ੒͕ݶքͩͬͨ

Slide 33

Slide 33 text

ϖʔδωʔγϣϯ

Slide 34

Slide 34 text

ϖʔδωʔγϣϯ • ϖʔδωʔγϣϯΛͲ͏͠Α͏͔໎ͬͨ • ࠷ॳ͸IDϕʔε͔ɺ೔෇ϕʔεͰͷϖʔδωʔγϣϯΛߟ͍͑ͯͨ • OFFSETϕʔεͰ͸ߟ͍͑ͯͳ͔ͬͨ • GameWith ͷಛੑ্ɺϦΞϧλΠϜʹهࣄ͕ߋ৽͞ΕΔ͜ͱ͕ݒ೦͞ΕΔ • ಛʹήʔϜͷΠϕϯτ։࢝࣌ʹݕࡧγεςϜ΁ͷτϥϑΟοΫ͕૿େ͢Δ ͜ͱ͕૝ఆ͞Εͨ • ·ͨͦΕͱಉ࣌ʹΠϕϯτͷ৘ใΛϦΞϧλΠϜͰߋ৽͍ͯͨ͘͠Ίɺ OFFSETϕʔεͩͱ1݅໨ͱ2݅໨ʹಉ͡৘ใ͕ग़ݱ͢ΔՄೳੑ͕͋ͬͨͨ Ίɺࠓճ͸ର৅֎ͱͨ͠ɻ

Slide 35

Slide 35 text

໎ͬͨ݁Ռ

Slide 36

Slide 36 text

໎ͬͨ݁Ռ

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

͜Ε΍

Slide 39

Slide 39 text

ϖʔδωʔγϣϯ • ϖʔδωʔγϣϯ͸ Elasticsearch ͷ Scroll Λ࢖͏͜ͱʹ • ͜ͷػೳΛ࢖͑͹ɺϦΞϧλΠϜʹهࣄ͕ߋ৽͞Εͯ΋େৎ෉ͦ͏ • ϢʔβʔମݧΛଛͳΘͣʹݕࡧ݁ՌΛදࣔͰ͖ͦ͏

Slide 40

Slide 40 text

໰୊ൃੜ

Slide 41

Slide 41 text

໰୊ൃੜ • ݕࡧ݁Ռ͕ݕࡧΛ͢Δͨͼʹҟͳͬͨ • ࠷ॳ͸ݪҼ͕Α͘Θ͔Βͳ͔ͬͨ • Α͘Α͘ௐ΂Δͱ AWS ͷ Internal Elastic Load Balancing Ͱෛՙ෼ࢄͤ͞ ͍ͯΔ͜ͱʹؾ͍ͮͨ • Elasticsearch ͷ Scroll ͕ฦ͢஋͕ҟͳΔͷ͸౰ͨΓલͩͬͨ AWS ͷ Sticky Session Λ࢖ͬͯϖʔδωʔγϣϯ͢ΔΠϯελϯεΛಉ͡ ର৅ʹ͢ΔΑ͏ʹͨ͠

Slide 42

Slide 42 text

໰୊ൃੜ ϔομ͔ΒAWS ELBΛऔಘ͢Δ ηογϣϯ৘ใͱͯ͠อ࣋͞Ε͍ͯΕ͹࢖༻͢Δ

Slide 43

Slide 43 text

ݕࡧ݁Ռ͕ਖ਼ৗʹ

Slide 44

Slide 44 text

ٕज़બఆ

Slide 45

Slide 45 text

ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • ϓϩμΫγϣϯ؀ڥΛߏங • QA (Quality Assurance) Λ࣮ࢪ͢ΔͨΊʹϓϩμΫγϣϯ؀ڥͷߏஙΛ͢Δඞ ཁ͕͋ͬͨ • iOS, AndroidΤϯδχΞɺσΟϨΫλʔ͔Β࣮ࡍͷσʔλΛݟͯ֬ೝΛ͠ ͍ͨཁ๬ʹ౴͑ΔͨΊ • ϓϩμΫγϣϯ؀ڥͷ Elasticsearch ʹهࣄΛ౤ೖ͍ͯ͘͠ • هࣄͷ݅਺͕਺ेສ݅͋Γ͕͔͔࣌ؒΔ͠ɺࣦഊ͢Δͱ౤ೖ͠௚͠ͳͷ Ͱਏ͔ͬͨ

Slide 46

Slide 46 text

ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • QA (Quality Assurance) ͷ࣮ࢪ • ΠϯςάϨʔγϣϯςετ ΋݉Ͷͯ iOS, Android ΤϯδχΞɺαʔόʔαΠ υΤϯδχΞɺσΟϨΫλʔɺ෦௕ͷશһ͕ू݁ͯ͠ɺ࣮ࡍʹεϚϗΛ৮Δɻ ͜͜Ͱग़ͨόά΍ػೳͷ࣮૷ʹ͍ͭͯͷϑΟʔυόοΫΛड͚ͯ ௐ੔Λ͍ͯ͘͠

Slide 47

Slide 47 text

ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • ෛՙςετͷ࣮ࢪ • ΠϯϑϥΤϯδχΞʹґཔΛ͠ɺ Gatling Λ༻͍ͯෛՙςετͷ࣮ࢪΛߦͬ ͨɻ

Slide 48

Slide 48 text

ࠓޙͷ՝୊

Slide 49

Slide 49 text

ࠓޙͷ՝୊ • ੵΈ࢒ͨ͠՝୊͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰ͸ͦΕΛվम͍ͯ͘͠ • R&DνʔϜ͸࠷ۙ৽ઃ͞ΕͨνʔϜͰ͢ɻ • ݕࡧγεςϜͷϝϯςφϯε΍ํ޲ੑɺػցֶश etc Λѻ͏ઐ໳ͷνʔϜ Ͱ͢ɻ • ҙ֎ͱݕࡧ͕࢖ΘΕ͍ͯͨ໰୊ • ҙ֎ͱΞϓϦଆͰݕࡧ͕࢖ΘΕ͍ͯͨ໰୊ • ߏ੒ͷݟ௚͠ɺAPIͷݟ௚͠ͳͲ • ࣙॻ໰୊ • ࣙॻʹొ࿥͢ΔϫʔυΛ୭͕ొ࿥͢Δͷ͔ͱ͍͏՝୊͕͋Δ • ͜Ε͕Ұ൪ͭΒ͍ • Πϯϑϥͷߏ੒Λվળ͢Δʢେ୩͞ΜʹΑΔࢦఠ͕͋ͬͨʣ • ϚελʔϊʔυΛશ໘ʹग़͍ͯ͠ΔͷͰޙΖʹͳΔΑ͏ʹ͍࣋ͬͯ͘

Slide 50

Slide 50 text

ࠓޙͷ՝୊ • ੵΈ࢒ͨ͠՝୊͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰ͸ͦΕΛվम͍ͯ͘͠ • ݕࡧਫ਼౓ͷ޲্ • Ϣʔβʔ͝ͱʹ͓͚Δ܎਺Λ࢖ͬͯϢʔβʔʹରͯ͠ద੾ͳݕࡧ݁ՌΛฦ ͢ • ͨͱ͑͹ɺϢʔβʔ͕ొ࿥͍ͯ͠ΔήʔϜͷ༏ઌ౓ΛߴΊΔͳͲ • αδΣετػೳͷ࣮૷ • Α͘ݕࡧ͞ΕΔΩʔϫʔυͳͲΛαδΣετͰ͖ΔΑ͏ͳ࢓૊Έ • ଞϓϩδΣΫτ΁ͷల։ • ΞϓϦʹཹ·Βͣ޿͍͚͛ͯΔΑ͏ʹ͢Δ • ͦͷͨΊɺιʔείʔυͷ෼཭Λߦ͏ඞཁ͕͋ͬͨΓ͢ΔͷͰ΍͍ͬͯ͘ • etc…

Slide 51

Slide 51 text

༨ஊ

Slide 52

Slide 52 text

ϦϦʔεͨ͋͠ͱ

Slide 53

Slide 53 text

ϦϦʔεͨ͋͠ͱ ৼΓฦΔͱ։ൃظؒ 1.5 ϲ݄΄ͲͰ͜Ε͚ͩͷίϛοτΛͯ͠͠·ͬͨ

Slide 54

Slide 54 text

ϦϦʔεͨ͋͠ͱ ։ൃʹܞΘͬͨਓͰɺৼΓฦΓΛߦͬͨ

Slide 55

Slide 55 text

ϦϦʔεͨ͋͠ͱ χΫΞβϒͰম೑৯΂ͨ

Slide 56

Slide 56 text

ϦϦʔεͨ͋͠ͱ GameWith Tech Blog Ͱॻ͍ͯΈͨɻ͸ͯͿ͍ͬͺ͍͍ͭͯͯخ͍͠ https://tech.gamewith.co.jp/entry/2018/09/21/122154

Slide 57

Slide 57 text

ϦϦʔεͨ͋͠ͱ େ୩͞Μ͔ΒϦϓϥΠΛ΋Β͑ͨ

Slide 58

Slide 58 text

ͦΕͰ΋ɺ͍Ζ͍Ζ໰୊ʹ௚໘ͨ͠

Slide 59

Slide 59 text

௚໘ͨ͠໰୊ •ϦϦʔεͨ͋͠ͱʹ͍͔ͭ͘όά͕ग़͖ͯͨ໰୊ •GameWith ຊମαΠτͷରԠ͕૿͑ͨ •໘઀ͷԠื͕ଟ͍࣌ظʹॏͳͬͯɺ໘઀ϥογϡ໰୊ •MTG͕ଟ͘ͳͬͨ໰୊ •ϦϦʔεऴΘͬͨ͋ͱʹΞαΠϯͨ͢͠΂ͯͷλεΫͷܹࢗ ͕෺଍Γͳ͍ͱײ͡Δ໰୊

Slide 60

Slide 60 text

ͦΕͰ΋ͳΜͱ͔ϦϦʔεͰ͖ͨͷͰ ΊͰͨ͠ΊͰͨ͠

Slide 61

Slide 61 text

ൃද͸Ҏ্Ͱ͢

Slide 62

Slide 62 text

THANK YOU