Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elasticsearch 勉強会 2019 「GameWithで検索システムが使われるまで」
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
memory
PRO
February 20, 2019
Programming
12k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Elasticsearch 勉強会 2019 「GameWithで検索システムが使われるまで」
memory
PRO
February 20, 2019
More Decks by memory
See All by memory
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
1
930
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
410
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
200
AI 時代だからこそ学ぶべき PHP の基礎
m3m0r7
PRO
7
2.4k
JVM の仕組みを理解して PHP で実装してみよう
m3m0r7
PRO
1
600
コードゴルファー道
m3m0r7
PRO
0
610
ChatGPT とつくる PHP で OS 実装
m3m0r7
PRO
3
520
事業観点から見る技術的負債の返済
m3m0r7
PRO
4
1.3k
PHP でアセンブリ言語のように書く技術
m3m0r7
PRO
1
280
Other Decks in Programming
See All in Programming
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
3Dシーンの圧縮
fadis
1
740
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
450
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
並列実装の現場、2ヶ月間実務でAIを使い倒したAIもPCも私も限界が近い
ming_ayami
0
120
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
160
The NotImplementedError Problem in Ruby
koic
1
710
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
Contextとはなにか
chiroruxx
1
290
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
540
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Bash Introduction
62gerente
615
220k
How to Talk to Developers About Accessibility
jct
2
230
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
720
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Designing for Performance
lara
611
70k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Transcript
GameWithͰݕࡧγεςϜ͕ΘΕΔ·Ͱ Elasticsearchษڧձ 2019/02/20 αʔϏε։ൃ෦ R&DνʔϜ ΊΓʔ(@m3m0r7)
Έͳ͞ΜɺHello Worldʂ
ͩΕʁ ΊΓʔ(@m3m0r7) Ͱ͢ɻ ը૾͏ͪͷϋϜελʔͷ Lily ͪΌΜͰ͢ɻ ౦ژͷຊʹ͋Δ גࣜձࣾ GameWith ͱ͍͏
ձࣾͰಇ͍ͯ·͢ɻ
ͱ͜ΖͰɺΈͳ͞Μ GameWith ͝ଘͰ͔͢ʁ
GameWith ʹ͍ͭͯ
GameWith ʹ͍ͭͯ ήʔϜ߈ུʮGameWithʯͰ͕͢ɺ ࣮ΣϒαΠτҎ֎ʹΞϓϦ͕͋Γ·͢
GameWith ʹ͍ͭͯ ήʔϜ߈ུʮGameWithʯͰ͕͢ɺ ࣮ΣϒαΠτҎ֎ʹΞϓϦ͕͋Γ·͢
ࠓ͜͜ͷݕࡧػೳʹ͍͓ͭͯ͠·͢
ॴ
ॴ
͜ͷืू͔ΒݕࡧγεςϜͷ։ൃ͕࢝·Δ
ݕࡧγεςϜͷ։ൃͰҙࣝͨ͜͠ͱ
θϩϕʔε͔Βͷ։ൃͰҙࣝͨ͜͠ͱ • ҙࣝͨ͜͠ͱ5 • ᶃ ୭Ͱ։ൃͰ͖ΔΑ͏ʹ͢ΔϝϯλϦςΟ • ᶄ ৽͍͜͠ͱʹઓ͢ΔϝϯλϦςΟ •
ᶅ ࠳͚ͳ͍ϝϯλϦςΟ • ᶆ ਏ͍ঢ়گΛָ͠ΉϝϯλϦςΟ • ᶇ ۀ͠ͳ͍ͧͱ͍͏ڧ͍ϝϯλϦςΟ
νʔϜߏ
νʔϜߏ • ݕࡧγεςϜࣗମͷνʔϜߏ4໊ମ੍ • αʔόʔαΠυΤϯδχΞ × 1 • GameWith ͷΣϒ໘ͷ։ൃվम݉
• ΠϯϑϥΤϯδχΞ × 1 • ଞͷΠϯϑϥ໘ͷλεΫ݉ • σΟϨΫλʔ × 1 • GameWith ͷΣϒ໘ͷσΟϨΫγϣϯ݉ • ίʔυϨϏϡϫʔ × 1 • ෦ • ଞʹiOS, AndroidΤϯδχΞ
༨ஊ
ϓϩδΣΫτ։࢝࣌ࢲͱ෦͚ͩ
ߟ͑ͳ͍͜ͱʹ͠Α͏
εέδϡʔϧ
9݄Ϛετ
None
ਖ਼ϦιʔεΓͳ͍
ͦΕͰΓ͖Δͧ
ٕज़બఆ
ٕज़બఆ • ։ൃڥDockerͰߏͨ͠ • DockerΛ͏͜ͱʹΑΓɺԿ͕ڥʹ͋Δͷ͔໌֬ʹΘ͔ΔΑ͏ʹͳͬͨ • GameWith Vagrant Λ͏෩ை͕͋ΓɺͲ͏͍ͬͨϛυϧΣΞ͕͋
Δ͔ɺͲ͏͍͏ߏʹͳ͍ͬͯΔͷ͔Ѳͮ͠Β͔ͬͨ • ։ൃڥͱϓϩμΫγϣϯڥͰඞཁͳڥͷࠩҟΛແ͔ͨͬͨ͘͠ • ϓϩμΫγϣϯڥʹ͋Δ͕ɺ։ൃڥʹͳ͍ɺͱ͍͏ঢ়ଶΛ࡞Γ ͨ͘ͳ͔ͬͨ • ࣾͰDockerΛϓϩμΫγϣϯʹར༻͢Δͷ͜ͷϓϩδΣΫτ͕ॳΊͯ • ৽͍͠ઓΛ͢Δ͜ͱ͍͍͜ͱɻ৽͍͜͠ͱʹઓΛͨ͠ͱ͍͏લྫ Λ࡞ΓपΓͷϝϯόʔɺࣗΒਐΜͰઓ͍ͯ͘͠෩ʹ͍͖͔ͯͨͬ͠ ͨ
ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • GameWith
AWS Λ༻͍ͯ͠Δ͕ɺAWS Elasticsearch ServiceΘͣAWS EC2 ͱ Docker ্ʹElasticsearchΛཱͯΔ͜ͱʹɻ • GameWith ήʔϜ߈ུใΛऔΓѻ͏ಛੑ͔Βݻ༗໊ࢺଟࣙ͘ॻͷ ͕ݒ೦͞Εͨɻ • ࣙॻ Sudachi Λ༻ • ৽ͨͳࢼΈΛ͔ͨͬͨ͠ • ϊϦɺදهਖ਼نԽͯ
ٕज़બఆ • Elasticsearch ͱ PHP + Laravel Λࠓճٕज़બఆͨ͠ • Elasticsearchຊମͱͷ௨৴PHPΛٕज़બఆͨ͠
• GameWithPHPΛϝΠϯݴޠͱͯ͠ѻ͍ͬͯΔձࣾ • ຊ৽ͨͳઓͱ͍͏ϚΠϯυͰ Go ʹ͠Α͏ͱࢥ͕ͬͨɺelasticެࣜ ͷϥΠϒϥϦ͕࣌ͳ͔ͬͨɻ • PHPͰ͋Εɺelasticެ͔ࣜΒϥΠϒϥϦ͕৴͞Ε͍ͯΔ • ͨͩɺࠓճͷݕࡧγεςϜͰ PHP ͷGuzzle ΛͬͯεΫϥονͰ ࡞ͬͨɻ
Πϯϑϥߏ
Πϯϑϥߏ ※μογϡϘʔυͱGameWithͷϥΠλʔ͕༻͢Δཧը໘ͷ͜ͱͰ͢
Πϯϑϥߏ • ͳͥ͜ͷߏʹ͠Α͏ͱͨ͠ͷ͔ • શจݕࡧΤϯδϯΞϓϦ͔ΒࢀরɺμογϡϘʔυ͔Βॻ͖ࠐΈ͕ߦ ΘΕΔɻ • ήʔϜͷ߈ུهࣄසൟʹߋ৽͞ΕΔͨΊɺߋ৽ใআใΛΩϡʔ Ͱॲཧ͔ͨͬͨ͠ͷͰɺAmazon SQSΛՃ͑ͨ
• ElasticsarchͷԽͷͨΊσʔλϊʔυ͕2Ҏ্ඞཁͩͬͨ • ࠓճͷϓϩμΫτͰͲΕ͚ͩͷΞΫηε͕͋Δ͔ఆͰ͔͠ग़ͤͳ͔ͬ ͕ͨ1ͩͱϊʔυ͕յΕͨࡍͷରॲ͕Ͱ͖ͳͦ͞͏Ͱ͋ΔͨΊ
Πϯϑϥߏ • ࣮ࡍͷߏ
ࣾʹݟ͕ͳ࣌͘ ͜ͷΠϯϑϥߏ͕ݶքͩͬͨ
ϖʔδωʔγϣϯ
ϖʔδωʔγϣϯ • ϖʔδωʔγϣϯΛͲ͏͠Α͏͔໎ͬͨ • ࠷ॳIDϕʔε͔ɺϕʔεͰͷϖʔδωʔγϣϯΛߟ͍͑ͯͨ • OFFSETϕʔεͰߟ͍͑ͯͳ͔ͬͨ • GameWith ͷಛੑ্ɺϦΞϧλΠϜʹهࣄ͕ߋ৽͞ΕΔ͜ͱ͕ݒ೦͞ΕΔ
• ಛʹήʔϜͷΠϕϯτ։࢝࣌ʹݕࡧγεςϜͷτϥϑΟοΫ͕૿େ͢Δ ͜ͱ͕ఆ͞Εͨ • ·ͨͦΕͱಉ࣌ʹΠϕϯτͷใΛϦΞϧλΠϜͰߋ৽͍ͯͨ͘͠Ίɺ OFFSETϕʔεͩͱ1݅ͱ2݅ʹಉ͡ใ͕ग़ݱ͢ΔՄೳੑ͕͋ͬͨͨ Ίɺࠓճର֎ͱͨ͠ɻ
໎ͬͨ݁Ռ
໎ͬͨ݁Ռ
None
͜Ε
ϖʔδωʔγϣϯ • ϖʔδωʔγϣϯ Elasticsearch ͷ Scroll Λ͏͜ͱʹ • ͜ͷػೳΛ͑ɺϦΞϧλΠϜʹهࣄ͕ߋ৽͞Εͯେৎͦ͏ •
ϢʔβʔମݧΛଛͳΘͣʹݕࡧ݁ՌΛදࣔͰ͖ͦ͏
ൃੜ
ൃੜ • ݕࡧ݁Ռ͕ݕࡧΛ͢Δͨͼʹҟͳͬͨ • ࠷ॳݪҼ͕Α͘Θ͔Βͳ͔ͬͨ • Α͘Α͘ௐΔͱ AWS ͷ Internal
Elastic Load Balancing Ͱෛՙࢄͤ͞ ͍ͯΔ͜ͱʹؾ͍ͮͨ • Elasticsearch ͷ Scroll ͕ฦ͕͢ҟͳΔͷͨΓલͩͬͨ AWS ͷ Sticky Session Λͬͯϖʔδωʔγϣϯ͢ΔΠϯελϯεΛಉ͡ ରʹ͢ΔΑ͏ʹͨ͠
ൃੜ ϔομ͔ΒAWS ELBΛऔಘ͢Δ ηογϣϯใͱͯ͠อ࣋͞Ε͍ͯΕ༻͢Δ
ݕࡧ݁Ռ͕ਖ਼ৗʹ
ٕज़બఆ
ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • ϓϩμΫγϣϯڥΛߏங • QA (Quality Assurance) Λ࣮ࢪ͢ΔͨΊʹϓϩμΫγϣϯڥͷߏஙΛ͢Δඞ ཁ͕͋ͬͨ •
iOS, AndroidΤϯδχΞɺσΟϨΫλʔ͔Β࣮ࡍͷσʔλΛݟͯ֬ೝΛ͠ ͍ͨཁʹ͑ΔͨΊ • ϓϩμΫγϣϯڥͷ Elasticsearch ʹهࣄΛೖ͍ͯ͘͠ • هࣄͷ͕݅ेສ݅͋Γ͕͔͔࣌ؒΔ͠ɺࣦഊ͢Δͱೖ͠͠ͳͷ Ͱਏ͔ͬͨ
ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • QA (Quality Assurance) ͷ࣮ࢪ • ΠϯςάϨʔγϣϯςετ ݉Ͷͯ iOS,
Android ΤϯδχΞɺαʔόʔαΠ υΤϯδχΞɺσΟϨΫλʔɺ෦ͷશһ͕ू݁ͯ͠ɺ࣮ࡍʹεϚϗΛ৮Δɻ ͜͜Ͱग़ͨόάػೳͷ࣮ʹ͍ͭͯͷϑΟʔυόοΫΛड͚ͯ ௐΛ͍ͯ͘͠
ϓϩμΫγϣϯʹϦϦʔε͢Δ·Ͱ • ෛՙςετͷ࣮ࢪ • ΠϯϑϥΤϯδχΞʹґཔΛ͠ɺ Gatling Λ༻͍ͯෛՙςετͷ࣮ࢪΛߦͬ ͨɻ
ࠓޙͷ՝
ࠓޙͷ՝ • ੵΈͨ͠՝͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰͦΕΛվम͍ͯ͘͠ • R&DνʔϜ࠷ۙ৽ઃ͞ΕͨνʔϜͰ͢ɻ • ݕࡧγεςϜͷϝϯςφϯεํੑɺػցֶश etc Λѻ͏ઐͷνʔϜ Ͱ͢ɻ
• ҙ֎ͱݕࡧ͕ΘΕ͍ͯͨ • ҙ֎ͱΞϓϦଆͰݕࡧ͕ΘΕ͍ͯͨ • ߏͷݟ͠ɺAPIͷݟ͠ͳͲ • ࣙॻ • ࣙॻʹొ͢ΔϫʔυΛ୭͕ొ͢Δͷ͔ͱ͍͏՝͕͋Δ • ͜Ε͕Ұ൪ͭΒ͍ • ΠϯϑϥͷߏΛվળ͢Δʢେ୩͞ΜʹΑΔࢦఠ͕͋ͬͨʣ • ϚελʔϊʔυΛશ໘ʹग़͍ͯ͠ΔͷͰޙΖʹͳΔΑ͏ʹ͍࣋ͬͯ͘
ࠓޙͷ՝ • ੵΈͨ͠՝͕͍͔ͭ͋͘ΔͷͰR&DνʔϜͰͦΕΛվम͍ͯ͘͠ • ݕࡧਫ਼ͷ্ • Ϣʔβʔ͝ͱʹ͓͚ΔΛͬͯϢʔβʔʹରͯ͠దͳݕࡧ݁ՌΛฦ ͢ • ͨͱ͑ɺϢʔβʔ͕ొ͍ͯ͠ΔήʔϜͷ༏ઌΛߴΊΔͳͲ
• αδΣετػೳͷ࣮ • Α͘ݕࡧ͞ΕΔΩʔϫʔυͳͲΛαδΣετͰ͖ΔΑ͏ͳΈ • ଞϓϩδΣΫτͷల։ • ΞϓϦʹཹ·Β͍͚ͣ͛ͯΔΑ͏ʹ͢Δ • ͦͷͨΊɺιʔείʔυͷΛߦ͏ඞཁ͕͋ͬͨΓ͢ΔͷͰ͍ͬͯ͘ • etc…
༨ஊ
ϦϦʔεͨ͋͠ͱ
ϦϦʔεͨ͋͠ͱ ৼΓฦΔͱ։ൃظؒ 1.5 ϲ݄΄ͲͰ͜Ε͚ͩͷίϛοτΛͯ͠͠·ͬͨ
ϦϦʔεͨ͋͠ͱ ։ൃʹܞΘͬͨਓͰɺৼΓฦΓΛߦͬͨ
ϦϦʔεͨ͋͠ͱ χΫΞβϒͰম৯ͨ
ϦϦʔεͨ͋͠ͱ GameWith Tech Blog Ͱॻ͍ͯΈͨɻͯͿ͍ͬͺ͍͍ͭͯͯخ͍͠ https://tech.gamewith.co.jp/entry/2018/09/21/122154
ϦϦʔεͨ͋͠ͱ େ୩͞Μ͔ΒϦϓϥΠΛΒ͑ͨ
ͦΕͰɺ͍Ζ͍Ζʹ໘ͨ͠
໘ͨ͠ •ϦϦʔεͨ͋͠ͱʹ͍͔ͭ͘όά͕ग़͖ͯͨ •GameWith ຊମαΠτͷରԠ͕૿͑ͨ •໘ͷԠื͕ଟ͍࣌ظʹॏͳͬͯɺ໘ϥογϡ •MTG͕ଟ͘ͳͬͨ •ϦϦʔεऴΘͬͨ͋ͱʹΞαΠϯͨͯ͢͠ͷλεΫͷܹ ͕Γͳ͍ͱײ͡Δ
ͦΕͰͳΜͱ͔ϦϦʔεͰ͖ͨͷͰ ΊͰͨ͠ΊͰͨ͠
ൃදҎ্Ͱ͢
THANK YOU