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に置き換えるためにやったこと
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Hiroki Sakamoto
May 12, 2018
Technology
3.4k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
検索基盤を安全にElasticsearchに置き換えるためにやったこと
Feature Toggleとダークローンチで安全にElasticsearchクラスタをリリースした話。
Hiroki Sakamoto
May 12, 2018
More Decks by Hiroki Sakamoto
See All by Hiroki Sakamoto
Scaling Time-Series Data to Infinity: A Kubernetes-Powered Solution with Envoy
taisho6339
0
74
年間一億円削減した時系列データベースのアーキテクチャ改善
taisho6339
0
58
k8sで構築する大規模時系列データのスケーラブルな分散処理
taisho6339
0
43
Ingress For Anthosを活用した安全なk8sクラスタ運用/Ingress For Anthos In Production
taisho6339
2
1.2k
k8sの可用性とScalabilityを担保するための大事な観点 / Best practices for ensuring availability and scalability for k8s
taisho6339
3
2.4k
Other Decks in Technology
See All in Technology
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
490
CloudWatchから始めるAWS監視
butadora
0
190
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
540
AI研修(Day1)【MIXI 26新卒技術研修】
mixi_engineers
PRO
1
1.5k
人とエージェントが高め合う協業設計
kintotechdev
0
970
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
2026年のソフトウェア開発を考える(2026/07版) / Agentic Software Engineering 2026-07 Findy Edition
twada
PRO
30
16k
ソフトウェアアーキテクチャ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
2
590
探索・可視化・自動化を一本化 Amazon Quickでデータ活用スピードを上げる方法
koheiyoshikawa
0
210
ここは地獄!つらい朝会を体験することで、チームとしてのより良い振る舞いに気づくワークショップ / The stand-up meeting from hell in the game industry
scrummasudar
0
340
AWS環境のセキュリティ不安を解消した企業事例 ~よくある課題と対策を一挙公開~
asanoharuki
0
200
AIが当たり前の組織で エンジニアはどう育つか
nishihira
1
1.4k
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
50
15k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
230
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
470
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
390
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Mobile First: as difficult as doing things right
swwweet
225
10k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
400
sira's awesome portfolio website redesign presentation
elsirapls
0
310
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Transcript
Hiroki Sakamoto @taisho6339 ݕࡧج൫Λ҆શʹ Elasticsearchʹஔ͖͑ΔͨΊʹͬͨ͜ͱ
ຊࢿྉͰऔΓ্͛Δ༰ DBݕࡧ͔ΒElasticsearchʹ҆શʹஔ͖͑Δͱ͖ʹɺ μʔΫϩʔϯνFeatureToggleΛ׆༻ͯ҆͠શʹϦϦʔεͨ͠ݟ https://www.elastic.co/jp/
ຊࢿྉͰड़ͳ͍͜ͱ • ESͷجૅతͳ෦ • ESͷΠϯσοΫεɺΫϥελઃܭ • ΠϯσΫγϯάݕࡧͷࡉ͔͍࣮ʹ͍ͭͯ • Feature Toggleͷ۩ମతͳ࣮ʹ͍ͭͯ
࣮ࢪͨ͠αʔϏεཁ݅ • Ϣʔβ100ສਓҎఔͷձһ੍SNSαʔϏε • Ϣʔβͷݕࡧػೳ͕͋Δ • ଐੑ(ੑผɺྸɺझຯͳͲ)ΛݩʹύϥϝʔλͰݕࡧ • MySQLαʔόSELECTจΛൃߦ͢Δ͜ͱͰݕࡧΛ࣮ݱ •
ϑϦʔϫʔυݕࡧͳͲͳ͍
αʔϏεͷ՝ײ ݕࡧύϥϝʔλछྨఔࢦఆͰ͖ɺ શͯͷύϥϝʔλʹΠϯσοΫε͕ޮ͘Θ͚Ͱͳ͍ ςʔϒϧϑϧεΩϟϯ͕සൃ αʔόͰεέʔϧͰ͖ͳ͍
αʔϏεͷ՝ײ ύϑΥʔϚϯεΛग़͠ɺ͔ͭαʔϏεͷʹ߹Θͤͯ εέʔϧͤ͞ΒΕΔج൫͕ඞཁͩͬͨ
ElasticsearchΫϥελͷߏங
ΞʔΩςΫνϟ master data ࢹཧ ΞϓϦέʔγϣϯαʔό ݕࡧ όοναʔό ΠϯσΫγϯά
ΞʔΩςΫνϟ • ϕʔγοΫͳESΫϥελ • masterԽ & εϓϦοτϒϨΠϯରࡦͰ3 • dataԽ͢Δ࠷খ୯ҐͰ2 •
ΞϓϦέʔγϣϯαʔό͔Βdataϊʔυʹରͯ͠ݕࡧ • ΠϯσΫγϯάόονͰఆظతʹߦ͏(χΞϦΞϧλΠϜ) • ߋ৽ରΩϡʔΠϯά
ϦϦʔεʹ͏՝ײ ݕࡧ݁Ռଥੑͷ୲อ Կ͔͋ͬͨͱ͖ͷ &4ো࣌ͷݕࡧͲ͏ͳΔͷ͔ʁ
ϦϦʔεʹ͏՝ײ ݕࡧ݁Ռଥੑͷ୲อ &4ো࣌ͷݕࡧͲ͏ͳΔͷ͔ʁ ଧͪख μʔΫϩʔϯν
μʔΫϩʔϯν ʮμʔΫ ϩʔϯνͱԿ͔ : CRE ͕ݱͰֶΜͩ͜ͱʯ https://cloudplatform-jp.googleblog.com/2017/08/CRE-life-lessons- what-is-a-dark-launch-and-what-does-it-do-for-me.html
μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ྆ํʹݕࡧཁٻ
μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ݕࡧ݁ՌΛൺֱ
μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ҰఆҎ্ͷࠩҟ͕͋Δͱ͖ʹ ूܭ༻ʹϩάΛు͘
μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ࣮ࡍʹฦ͢ͷDBͷ݁Ռ Ϩεϙϯε
μʔΫϩʔϯν ϩάूܭݕূ σϓϩΠ վम ζϨ͕ڐ༰ΛΔ·Ͱ վળαΠΫϧΛ܁Γฦͨ͠
ϦϦʔεʹ͏՝ײ &4ো࣌ͷݕࡧͲ͏ͳΔͷ͔ʁ &4ো࣌ͷݕࡧͲ͏ͳΔͷ͔ʁ ଧͪख Feature Toggleͷ׆༻
Feature Toggle • σϓϩΠແ͠ͰಈతʹػೳͷON/OFFΛ͢ΔͨΊͷ֓೦ɻ • ༗໊ͳ࣮ϥΠϒϥϦͩͱJavaͷFF4JͳͲ͕͋Δɻ • ୯७ͳON/OFF͚ͩͰͳ͘ɺಛఆͷ݅ͷϢʔβʹ௨ৗͱҧ ͏ͷΛग़͚ͨ͠Γ͢Δ͜ͱ͕Ͱ͖Δ •
FeatureToggles https://martinfowler.com/articles/feature-toggles.html#OpsToggles
Feature Toggle ࣮Πϝʔδ if( isEnableFeature(“FEATURE_ES_SEARCH”) ) { // ElasticsearchͰͷݕࡧ }
else { // DBͰͷݕࡧ } ͜ͷΑ͏ͳ࣮Λ͓ͯ͘͠ͱɺ ཧը໘͔ΒಈతʹϑϥάΛOFFʹͰ͖Δ
Feature Toggle ࣮Πϝʔδ ग़య: http://ff4j.org/ ͜͜ͷON/OFFͰϑϥά͕มΘΔ!
Feature Toggleͷ׆༻ ΞϓϦέʔγϣϯαʔό MySQL Toggle͕ON
Feature Toggleͷ׆༻ ΞϓϦέʔγϣϯαʔό MySQL Toggle͕OFF Toggle͕OFFͷͱ͖DBͰݕࡧͤ͞Δ
Feature Toggleͷ׆༻ data ΞϓϦέʔγϣϯαʔό ݕࡧ όοναʔό ΠϯσΫγϯά Τϥʔൃੜʂ Τϥʔൃੜʂ ElasticsearchͰΠϯσΫγϯάɺ͘͠ݕࡧͰɺ
Τϥʔ͕ҰఆҎ্ग़ͨ߹ࣗಈతʹToggleΛOFFʹ͢Δ
Feature Toggle ཧը໘͔ΒͷखಈΓସ͑ɺESΤϥʔݕग़࣌ͷࣗಈΓସ͑ʹ ΑͬͯɺσϓϩΠແ͠ͰDBݕࡧϑΥʔϧόοΫ Կ͔͋ͬͨͱͯ͠ϢʔβͷӨڹΛ࠷খݶʹ
݁Ռ • ϦϦʔεޙ2ϲ݄ܦա͍ͯ͠Δ͕োൃੜ0݅ɻ • (ϨεϙϯελΠϜ28ഒվળ)
·ͱΊ • Լهͷγϯϓϧͳ͕Βڧྗͳߟ͑ํͰো0ͰϦϦʔε • μʔΫϩʔϯνͰຊ൪ڥͷτϥϑΟοΫͰ݁ՌݕূΛߦͬͨ • Feature Toggleͷ׆༻Ͱ͙͢ʹϑΥʔϧόοΫ