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
Amazon OpenSearch Serviceで 構築するTVerの次世代検索基盤
Search
TVer Inc.
PRO
October 08, 2022
Technology
0
1.5k
Amazon OpenSearch Serviceで 構築するTVerの次世代検索基盤
2022/10/08
JAWS DAYS 2022 - Satellites
イベントURL :
https://jawsdays2022.jaws-ug.jp/
TVer Inc.
PRO
October 08, 2022
Tweet
Share
More Decks by TVer Inc.
See All by TVer Inc.
Feature Flagを定義から削除まで 安全に行うために考えたこと
techtver
PRO
0
10
4100万ユーザーを支えるTVer iOSアプリ開発 〜0人から始まったチームのAI活用による挑戦〜
techtver
PRO
1
1.1k
TVer iOSチームの共通認識の作り方 - Findy Job LT iOSアプリ開発の裏側 開発組織が向き合う課題とこれから
techtver
PRO
0
1.1k
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
92
採用応募者の個人情報保護の取扱いについて_株式会社TVer
techtver
PRO
0
580
月間4.5億回再生を超える大規模サービス TVer iOSアプリのリアーキテクチャ戦略 - iOSDC2024
techtver
PRO
2
12k
成長し続けるTVerサービスを支える オブザーバビリティとカスタマーサポート
techtver
PRO
5
5.7k
Change Tracking でデプロイを記録してパフォーマンスへの影響を分析しやすくしよう
techtver
PRO
1
260
採用人事の立場で行う採用広報・技術広報の裏側 〜TVerがエンジニア採用を本格化するために継続し続けたこと〜
techtver
PRO
2
770
Other Decks in Technology
See All in Technology
Rubyist入門: The Way to The Timeless Way of Programming
snoozer05
PRO
2
150
バグと向き合い、仕組みで防ぐ
____rina____
0
240
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
1.3k
CodexでもAgent Skillsを使いたい
gotalab555
9
4.4k
從裝潢設計圖到 Home Assistant:打造智慧家庭的實戰與踩坑筆記
kewang
0
160
Flutterコントリビューションのススメ
d_r_1009
1
340
ソフトウェアエンジニアとデータエンジニアの違い・キャリアチェンジ
mtpooh
1
740
エンジニアにとってコードと並んで重要な「データ」のお話 - データが動くとコードが見える:関数型=データフロー入門
ismk
0
450
Logik: A Free and Open-source FPGA Toolchain
omasanori
0
280
品質保証の取り組みを広げる仕組みづくり〜スキルの移譲と自律を支える実践知〜
tarappo
2
840
AI時代におけるドメイン駆動設計 入門 / Introduction to Domain-Driven Design in the AI Era
fendo181
0
660
Digitization部 紹介資料
sansan33
PRO
1
5.9k
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Side Projects
sachag
455
43k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Rails Girls Zürich Keynote
gr2m
95
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Faster Mobile Websites
deanohume
310
31k
Transcript
Amazon OpenSearch ServiceͰ ߏங͢ΔTVerͷ࣍ੈݕࡧج൫ 2022.10.8 JAWS DAYS 2022 גࣜձࣾ TVer
ࠇ
ࣗݾհ • ໊લɿࠇ ༞ฏ • ॴଐɿגࣜձࣾ TVer • ୲ɿ ◦
σʔλγεςϜ։ൃʢETLʣ ◦ όοΫΤϯυ։ൃʢݕࡧج൫ʣ
ΞδΣϯμ • TVerʹ͍ͭͯ • TVerϦχϡʔΞϧͱ࣍ੈݕࡧج൫ ◦ ϦχϡʔΞϧޙͷݕࡧػೳ ◦ ։ൃମ੍ ◦
Amazon OpenSearch Service • ࣮ݱʹ͚ͯͷऔΓΈ ◦ σʔλཧ ◦ ετϨʔδཧ ◦ αʔϏεͷӡ༻ɾ։ൃ • ·ͱΊ
ΞδΣϯμ • TVerʹ͍ͭͯ • TVerϦχϡʔΞϧͱ࣍ੈݕࡧج൫ ◦ ϦχϡʔΞϧޙͷݕࡧػೳ ◦ ։ൃମ੍ ◦
Amazon OpenSearch Service • ࣮ݱʹ͚ͯͷऔΓΈ ◦ σʔλཧ ◦ ετϨʔδཧ ◦ αʔϏεͷӡ༻ɾ։ൃ • ·ͱΊ
TVerʹ͍ͭͯ TVerຽ์ςϨϏہͷίϯςϯπΛ৴͢Δຽ์ެࣜςϨϏ৴αʔϏε ຖि600൪ΛແྉͰύιίϯɾεϚʔτϑΥϯɾλϒϨοτɾςϨϏʹ৴
TVerʹ͍ͭͯ
ΞδΣϯμ • TVerʹ͍ͭͯ • TVerϦχϡʔΞϧͱ࣍ੈݕࡧج൫ ◦ ϦχϡʔΞϧޙͷݕࡧػೳ ◦ ։ൃମ੍ ◦
Amazon OpenSearch Service • ࣮ݱʹ͚ͯͷऔΓΈ ◦ σʔλཧ ◦ ετϨʔδཧ ◦ αʔϏεͷӡ༻ɾ։ൃ • ·ͱΊ
TVerϦχϡʔΞϧ [TVer] ςϨϏίϯςϯπͷࢹௌମݧࠂମݧͷ্Λࢦ͢ ʮTVer IDʯͷఏڙΛ։࢝ https://tver.co.jp/news/20220404-1.html
ݕࡧػೳ • ݕࡧΩʔϫʔυΛೖྗ͢Δͱɺίϯςϯπใ͕Ϛονͨ͠ެ։த ͷίϯςϯπΛҰཡͰฦ͢ػೳ
ݕࡧػೳ • ैདྷίϯςϯπใͷDBΛݕࡧ • ػೳ֦ுͷ͛ʹͳ͍ͬͯͨ ➢ αʔϏεͷʹ͋Θͤͨػೳ֦ுʹ՝ ݕࡧAPI Amazon Aurora
(MySQL) ݕࡧ݁Ռ CMS ίϯςϯπ ใ
ϦχϡʔΞϧͰͷ։ൃମ੍ͷڧԽ • αʔϏεʹ͋ΘͤͯΤϯδχΞʹΑΔԽΛਪਐ • ΤϯδχΞ͕ઐ֎ͷ։ൃʹઓͰ͖ΔΑ͏ʹ ◦ σʔλγεςϜ୲͕खΛڍ͛ͯόοΫΤϯυ։ൃ ➢ΤϯδχΞ͕։ൃͷମ੍αΠΫϧΛίϯτϩʔϧ ϦχϡʔΞϧ
ݕࡧج൫ ํ • ࣗࣾΤϯδχΞओಋͰγεςϜߏΛ৽ ◦ ݕࡧػೳΛΠϯϑϥ͝ͱಠཱͤ͞Δ ◦ શจݕࡧʹಛԽͨ͠ϛυϧΣΞΛಋೖ ➢ Amazon
OpenSearch ServiceΛ࠾༻ ݕࡧAPI ݕࡧ݁Ռ CMS ίϯςϯπ ใ શจݕࡧ ϛυϧΣΞ
Amazon OpenSearch Service • OpenSearchͷϚωʔδυαʔϏε • AWSͷػೳɾαʔϏεͱγʔϜϨεʹ࿈ ܞՄೳ ◦ VPC
◦ RI ◦ etc. • ϩάϝτϦΫεఏڙ Amazon OpenSearch Service
ΞδΣϯμ • TVerʹ͍ͭͯ • TVerϦχϡʔΞϧͱ࣍ੈݕࡧج൫ ◦ ϦχϡʔΞϧޙͷݕࡧػೳ ◦ ։ൃମ੍ ◦
Amazon OpenSearch Service • ࣮ݱʹ͚ͯͷऔΓΈ ◦ σʔλཧ ◦ ετϨʔδཧ ◦ αʔϏεͷӡ༻ɾ։ൃ • ·ͱΊ
ࢦ͢ͷ • σʔλͷཧ؍ ◦ MySQLͷσʔλมߋʹॊೈʹରԠͰ͖Δ • ετϨʔδ؍ ◦ ӡ༻தͷετϨʔδ༻ྔ૿ՃΛࢭ͢Δ •
αʔϏεӡ༻؍ ◦ ݕࡧAPIͷϝϯςφϯείετΛ࠷খԽ͢Δ
ैདྷͷγεςϜߏ ݕࡧAPI CMS ݕࡧ݁Ռ ίϯςϯπ ࢀর σʔλͷྲྀΕ
ݱࡏͷγεςϜߏ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ ެ։։࢝ ίϯςϯπ
ެ։த ίϯςϯπ new old Alias ެ։த ίϯςϯπ ࢀর ࢀর ࢀর σʔλͷྲྀΕ
σʔλͷཧ • CMSͷσʔλܗࣜมߋ͞ΕΔ͜ͱ͕͋Δ ެ։தίϯςϯπΛ ಉظ όοΫΞοϓͳͲઐ ༻ͷσʔλͷཧ͕ ඞཁ ➢ େݩͷίϯςϯπใͷཧMySQLʹͤɺίϐʔΛOpenSearch
ʹఆظతʹೖ͢Δ ݕࡧAPI ݕࡧ݁Ռ
σʔλͷཧ ࢀর σʔλͷྲྀΕ ݕࡧAPI औΓࠐΈ όον CMS ެ։։࢝ ίϯςϯπ ެ։த
ίϯςϯπ Index ެ։த ίϯςϯπ ࢀর ͦͷެ։தͷίϯ ςϯπใΛఆظత ʹMySQL͔Βऔಘ͠ ͯೖ͢Δ ݕࡧ݁Ռ
σʔλͷཧ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ ެ։։࢝ ίϯςϯπ
ެ։த ίϯςϯπ ެ։த ίϯςϯπ ࢀর ࢀর σʔλͷྲྀΕ Index ࢀর ͦͷެ։ɾมߋ͞Εͨ ίϯςϯπΛMySQLͱ OpenSearchʹೖ͢Δ
ετϨʔδ؍ • ݟಀ͠৴ϝΠϯͷͨΊɺଟ͘ͷίϯςϯπ͕1िؒ΄ͲͰެ։ظ ͕ؒऴྃ͠ɺݕࡧର֎ʹͳΔ • ݕࡧର֎͕ੵ͞ΕɺແବͳσΟεΫ༻ྔ͕ʑ૿Ճ ➢ ެ։ظ͕ؒऴྃͨ͠ίϯςϯπIndex͔Βআ Index 2022/09/01
ެ։ 2022/09/08 ެ։ 2022/09/15 ެ։ Index 2022/09/01 ެ։ 2022/09/08 ެ։ 2022/09/15 ެ։ 1िؒޙ
• औΓࠐΈόονຖճ৽͍͠IndexΛ࡞͠ɺͦͪΒʹίϯςϯ πใΛೖ͢Δ • ݹ͍Indexআ͢Δ ετϨʔδ؍ ݕࡧAPI औΓࠐΈ όον ݕࡧ݁Ռ
ެ։த ίϯςϯπ new old ࢀর
αʔϏεӡ༻؍ • IndexΛ࡞Γସ͑Δ͝ͱʹࢀরΛߋ৽͢Δඞཁ͕͋Δ ݕࡧAPI چIndex ৽Index ࢀরͷΓସ͕͑ ඞཁ ݹ͍ ίϯςϯπ
৽͍͠ ίϯςϯπ ➢ ݕࡧAPIʹAliasΛݟ͓͖ͤͯɺཪͰIndexΛߋ৽͢Δ
• ݕࡧ༻AliasΛݕࡧAPIʹݟ͓ͤͯ͘ IndexΓସ͑ ݕࡧAPI औΓࠐΈ όον ݕࡧ݁Ռ old Alias ࢀর
ࢀর ࢀর σʔλͷྲྀΕ
• AliasͷཪͰ࠷৽ͷIndexʹΓସ͑ IndexΓସ͑ ݕࡧAPI औΓࠐΈ όον ݕࡧ݁Ռ ެ։த ίϯςϯπ new
old Alias ࢀর ࢀর ࢀর σʔλͷྲྀΕ
࣮ࡍͷӡ༻ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ ެ։։࢝ ίϯςϯπ
ެ։த ίϯςϯπ new old Alias ެ։த ίϯςϯπ ࢀর ࢀর ࢀর σʔλͷྲྀΕ
࣮ࡍͷӡ༻ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ ެ։։࢝ ίϯςϯπ
ެ։த ίϯςϯπ new old Alias ެ։த ίϯςϯπ ࢀর ࢀর ࢀর σʔλͷྲྀΕ ͦͷެ։தͷίϯςϯ πใΛຖேೖ͠ɺ IndexΛ࡞Γସ͑
࣮ࡍͷӡ༻ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ ެ։։࢝ ίϯςϯπ
ެ։த ίϯςϯπ new old Alias ެ։த ίϯςϯπ ࢀর ࢀর ࢀর σʔλͷྲྀΕ ίϯςϯπऔΓࠐΈ࣌ʹ ࢀর͢ΔIndexΛมߋ
࣮ࡍͷӡ༻ ެ։ɾมߋ͞Εͨί ϯςϯπΛೖ ݕࡧAPI औΓࠐΈ όον CMS ݕࡧ݁Ռ ެ։։࢝ ίϯςϯπ
ެ։։࢝ ίϯςϯπ ެ։த ίϯςϯπ new old Alias ެ։த ίϯςϯπ ࢀর ࢀর ࢀর σʔλͷྲྀΕ
ΞδΣϯμ • TVerʹ͍ͭͯ • TVerϦχϡʔΞϧͱ࣍ੈݕࡧج൫ ◦ ϦχϡʔΞϧޙͷݕࡧػೳ ◦ ։ൃମ੍ ◦
Amazon OpenSearch Service • ࣮ݱʹ͚ͯͷऔΓΈ ◦ σʔλཧ ◦ ετϨʔδཧ ◦ αʔϏεͷӡ༻ɾ։ൃ • ·ͱΊ
·ͱΊ • TVerͷϦχϡʔΞϧʹ͍ɺݕࡧػೳͷΠϯϑϥͱͯ͠ Amazon OpenSearch ServiceΛಋೖͨ͠ • TVerʹదͨ͠ར༻ํ๏Λ࠾༻ͨ͠ ◦ ఆظతʹMySQL͔ΒίϯςϯπใΛೖ͢Δ
◦ Index͝ͱ࡞Γସ͑Δ ◦ ݕࡧAPIʹAlias͚ͩΛݟͤΔ •͜ΕΒͷࢪࡦʹΑΓɺ҆৺ͯ͠ӡ༻Ͱ͖Δݕࡧج൫Λ࣮ݱ
ࠓޙͷ՝ • ͞ΒͳΔӡ༻ϊϋͷੵ • Մ༻ੑͷ্ • ϨίϝϯυͳͲଞͷࢪࡦͱͷ࿈ಈ
None