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
Hiroki Sakamoto
May 12, 2018
Technology
6
3.2k
検索基盤を安全にElasticsearchに置き換えるためにやったこと
Feature Toggleとダークローンチで安全にElasticsearchクラスタをリリースした話。
Hiroki Sakamoto
May 12, 2018
Tweet
Share
More Decks by Hiroki Sakamoto
See All by Hiroki Sakamoto
Scaling Time-Series Data to Infinity: A Kubernetes-Powered Solution with Envoy
taisho6339
0
22
年間一億円削減した時系列データベースのアーキテクチャ改善
taisho6339
0
10
k8sで構築する大規模時系列データのスケーラブルな分散処理
taisho6339
0
4
Ingress For Anthosを活用した安全なk8sクラスタ運用/Ingress For Anthos In Production
taisho6339
2
1.1k
k8sの可用性とScalabilityを担保するための大事な観点 / Best practices for ensuring availability and scalability for k8s
taisho6339
3
2.1k
Other Decks in Technology
See All in Technology
AIエージェント開発のノウハウと課題
pharma_x_tech
8
4.3k
Change Managerを活用して本番環境へのセキュアなGUIアクセスを統制する / Control Secure GUI Access to the Production Environment with Change Manager
yuj1osm
0
110
日経のデータベース事業とElasticsearch
hinatades
PRO
0
260
OPENLOGI Company Profile for engineer
hr01
1
20k
ExaDB-XSで利用されているExadata Exascaleについて
oracle4engineer
PRO
3
280
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
200
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
1
210
EDRの検知の仕組みと検知回避について
chayakonanaika
12
5.2k
What's new in Go 1.24?
ciarana
1
110
JavaにおけるNull非許容性
skrb
2
2.7k
データエンジニアリング領域におけるDuckDBのユースケース
chanyou0311
9
2.5k
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
2
490
Featured
See All Featured
Docker and Python
trallard
44
3.3k
Fireside Chat
paigeccino
35
3.2k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
4 Signs Your Business is Dying
shpigford
183
22k
Designing for Performance
lara
605
68k
Optimizing for Happiness
mojombo
377
70k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Building Adaptive Systems
keathley
40
2.4k
RailsConf 2023
tenderlove
29
1k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
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ͷ׆༻Ͱ͙͢ʹϑΥʔϧόοΫ