Elasticsearch 勉強会 2019 「GameWithで検索システムが使われるまで」

218473ff7abad0fcd72865da2b23bb5b?s=47 memory
February 20, 2019

Elasticsearch 勉強会 2019 「GameWithで検索システムが使われるまで」

218473ff7abad0fcd72865da2b23bb5b?s=128

memory

February 20, 2019
Tweet

Transcript

  1. 13.

    θϩϕʔε͔Βͷ։ൃͰҙࣝͨ͜͠ͱ • ҙࣝͨ͜͠ͱ͸5఺ • ᶃ ୭Ͱ΋։ൃͰ͖ΔΑ͏ʹ͢ΔϝϯλϦςΟ • ᶄ ৽͍͜͠ͱʹ௅ઓ͢ΔϝϯλϦςΟ •

    ᶅ ࠳͚ͳ͍ϝϯλϦςΟ • ᶆ ਏ͍ঢ়گΛָ͠ΉϝϯλϦςΟ • ᶇ ࢒ۀ͸͠ͳ͍ͧͱ͍͏ڧ͍ϝϯλϦςΟ
  2. 15.

    νʔϜߏ੒ • ݕࡧγεςϜࣗମͷνʔϜߏ੒͸4໊ମ੍ • αʔόʔαΠυΤϯδχΞ × 1 • GameWith ͷ΢Σϒ໘ͷ։ൃ΍վम΋݉຿

    • ΠϯϑϥΤϯδχΞ × 1 • ଞͷΠϯϑϥ໘ͷλεΫ΋݉຿ • σΟϨΫλʔ × 1 • GameWith ͷ΢Σϒ໘ͷσΟϨΫγϣϯ΋݉຿ • ίʔυϨϏϡϫʔ × 1 • ෦௕ • ଞʹiOS, AndroidΤϯδχΞ
  3. 16.
  4. 20.
  5. 21.
  6. 25.

    ٕज़બఆ • ։ൃ؀ڥ͸DockerͰߏ੒ͨ͠ • DockerΛ࢖͏͜ͱʹΑΓɺԿ͕؀ڥʹ͋Δͷ͔໌֬ʹΘ͔ΔΑ͏ʹͳͬͨ • GameWith ͸ Vagrant Λ࢖͏෩ை͕͋ΓɺͲ͏͍ͬͨϛυϧ΢ΣΞ͕͋

    Δ͔ɺͲ͏͍͏ߏ੒ʹͳ͍ͬͯΔͷ͔೺Ѳͮ͠Β͔ͬͨ • ։ൃ؀ڥͱϓϩμΫγϣϯ؀ڥͰඞཁͳ؀ڥͷࠩҟΛແ͔ͨͬͨ͘͠ • ϓϩμΫγϣϯ؀ڥʹ͸͋Δ͕ɺ։ൃ؀ڥʹ͸ͳ͍ɺͱ͍͏ঢ়ଶΛ࡞Γ ͨ͘ͳ͔ͬͨ • ࣾ಺ͰDockerΛϓϩμΫγϣϯʹར༻͢Δͷ͸͜ͷϓϩδΣΫτ͕ॳΊͯ • ৽͍͠௅ઓΛ͢Δ͜ͱ͸͍͍͜ͱɻ৽͍͜͠ͱʹ௅ઓΛͨ͠ͱ͍͏લྫ Λ࡞ΓपΓͷϝϯόʔ΋ɺࣗΒਐΜͰ௅ઓ͍ͯ͘͠෩౔ʹ͍͖͔ͯͨͬ͠ ͨ
  7. 26.

    ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • GameWith

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

    ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • Elasticsearchຊମͱͷ௨৴͸PHPΛٕज़બఆͨ͠

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

    Πϯϑϥߏ੒ • ͳͥ͜ͷߏ੒ʹ͠Α͏ͱͨ͠ͷ͔ • શจݕࡧΤϯδϯ͸ΞϓϦ͔Β͸ࢀরɺμογϡϘʔυ͔Β͸ॻ͖ࠐΈ͕ߦ ΘΕΔɻ • ήʔϜͷ߈ུهࣄ͸සൟʹߋ৽͞ΕΔͨΊɺߋ৽৘ใ΍࡟আ৘ใΛΩϡʔ Ͱॲཧ͔ͨͬͨ͠ͷͰɺAmazon SQSΛՃ͑ͨ

    • Elasticsarchͷ৑௕ԽͷͨΊσʔλϊʔυ͕2୆Ҏ্ඞཁͩͬͨ • ࠓճͷϓϩμΫτͰ͸ͲΕ͚ͩͷΞΫηε਺͕͋Δ͔࢑ఆͰ͔͠ग़ͤͳ͔ͬ ͕ͨ1୆ͩͱϊʔυ͕յΕͨࡍͷରॲ͕Ͱ͖ͳͦ͞͏Ͱ͋ΔͨΊ
  10. 34.

    ϖʔδωʔγϣϯ • ϖʔδωʔγϣϯΛͲ͏͠Α͏͔໎ͬͨ • ࠷ॳ͸IDϕʔε͔ɺ೔෇ϕʔεͰͷϖʔδωʔγϣϯΛߟ͍͑ͯͨ • OFFSETϕʔεͰ͸ߟ͍͑ͯͳ͔ͬͨ • GameWith ͷಛੑ্ɺϦΞϧλΠϜʹهࣄ͕ߋ৽͞ΕΔ͜ͱ͕ݒ೦͞ΕΔ

    • ಛʹήʔϜͷΠϕϯτ։࢝࣌ʹݕࡧγεςϜ΁ͷτϥϑΟοΫ͕૿େ͢Δ ͜ͱ͕૝ఆ͞Εͨ • ·ͨͦΕͱಉ࣌ʹΠϕϯτͷ৘ใΛϦΞϧλΠϜͰߋ৽͍ͯͨ͘͠Ίɺ OFFSETϕʔεͩͱ1݅໨ͱ2݅໨ʹಉ͡৘ใ͕ग़ݱ͢ΔՄೳੑ͕͋ͬͨͨ Ίɺࠓճ͸ର৅֎ͱͨ͠ɻ
  11. 37.
  12. 38.
  13. 41.

    ໰୊ൃੜ • ݕࡧ݁Ռ͕ݕࡧΛ͢Δͨͼʹҟͳͬͨ • ࠷ॳ͸ݪҼ͕Α͘Θ͔Βͳ͔ͬͨ • Α͘Α͘ௐ΂Δͱ AWS ͷ Internal

    Elastic Load Balancing Ͱෛՙ෼ࢄͤ͞ ͍ͯΔ͜ͱʹؾ͍ͮͨ • Elasticsearch ͷ Scroll ͕ฦ͢஋͕ҟͳΔͷ͸౰ͨΓલͩͬͨ AWS ͷ Sticky Session Λ࢖ͬͯϖʔδωʔγϣϯ͢ΔΠϯελϯεΛಉ͡ ର৅ʹ͢ΔΑ͏ʹͨ͠
  14. 45.

    ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • ϓϩμΫγϣϯ؀ڥΛߏங • QA (Quality Assurance) Λ࣮ࢪ͢ΔͨΊʹϓϩμΫγϣϯ؀ڥͷߏஙΛ͢Δඞ ཁ͕͋ͬͨ •

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

    ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • QA (Quality Assurance) ͷ࣮ࢪ • ΠϯςάϨʔγϣϯςετ ΋݉Ͷͯ iOS,

    Android ΤϯδχΞɺαʔόʔαΠ υΤϯδχΞɺσΟϨΫλʔɺ෦௕ͷશһ͕ू݁ͯ͠ɺ࣮ࡍʹεϚϗΛ৮Δɻ ͜͜Ͱग़ͨόά΍ػೳͷ࣮૷ʹ͍ͭͯͷϑΟʔυόοΫΛड͚ͯ ௐ੔Λ͍ͯ͘͠
  16. 49.

    ࠓޙͷ՝୊ • ੵΈ࢒ͨ͠՝୊͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰ͸ͦΕΛվम͍ͯ͘͠ • R&DνʔϜ͸࠷ۙ৽ઃ͞ΕͨνʔϜͰ͢ɻ • ݕࡧγεςϜͷϝϯςφϯε΍ํ޲ੑɺػցֶश etc Λѻ͏ઐ໳ͷνʔϜ Ͱ͢ɻ

    • ҙ֎ͱݕࡧ͕࢖ΘΕ͍ͯͨ໰୊ • ҙ֎ͱΞϓϦଆͰݕࡧ͕࢖ΘΕ͍ͯͨ໰୊ • ߏ੒ͷݟ௚͠ɺAPIͷݟ௚͠ͳͲ • ࣙॻ໰୊ • ࣙॻʹొ࿥͢ΔϫʔυΛ୭͕ొ࿥͢Δͷ͔ͱ͍͏՝୊͕͋Δ • ͜Ε͕Ұ൪ͭΒ͍ • Πϯϑϥͷߏ੒Λվળ͢Δʢେ୩͞ΜʹΑΔࢦఠ͕͋ͬͨʣ • ϚελʔϊʔυΛશ໘ʹग़͍ͯ͠ΔͷͰޙΖʹͳΔΑ͏ʹ͍࣋ͬͯ͘
  17. 50.

    ࠓޙͷ՝୊ • ੵΈ࢒ͨ͠՝୊͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰ͸ͦΕΛվम͍ͯ͘͠ • ݕࡧਫ਼౓ͷ޲্ • Ϣʔβʔ͝ͱʹ͓͚Δ܎਺Λ࢖ͬͯϢʔβʔʹରͯ͠ద੾ͳݕࡧ݁ՌΛฦ ͢ • ͨͱ͑͹ɺϢʔβʔ͕ొ࿥͍ͯ͠ΔήʔϜͷ༏ઌ౓ΛߴΊΔͳͲ

    • αδΣετػೳͷ࣮૷ • Α͘ݕࡧ͞ΕΔΩʔϫʔυͳͲΛαδΣετͰ͖ΔΑ͏ͳ࢓૊Έ • ଞϓϩδΣΫτ΁ͷల։ • ΞϓϦʹཹ·Βͣ޿͍͚͛ͯΔΑ͏ʹ͢Δ • ͦͷͨΊɺιʔείʔυͷ෼཭Λߦ͏ඞཁ͕͋ͬͨΓ͢ΔͷͰ΍͍ͬͯ͘ • etc…
  18. 51.
  19. 62.