Slide 1

Slide 1 text

Hiroki Sakamoto
 @taisho6339 ݕࡧج൫Λ҆શʹ
 Elasticsearchʹஔ͖׵͑ΔͨΊʹ΍ͬͨ͜ͱ

Slide 2

Slide 2 text

ຊࢿྉͰऔΓ্͛Δ಺༰ DBݕࡧ͔ΒElasticsearchʹ҆શʹஔ͖׵͑Δͱ͖ʹɺ μʔΫϩʔϯν΍FeatureToggleΛ׆༻ͯ҆͠શʹϦϦʔεͨ͠஌ݟ 
 https://www.elastic.co/jp/

Slide 3

Slide 3 text

ຊࢿྉͰड़΂ͳ͍͜ͱ • ESͷجૅతͳ෦෼ • ESͷΠϯσοΫεɺΫϥελઃܭ • ΠϯσΫγϯά΍ݕࡧͷࡉ͔͍࣮૷ʹ͍ͭͯ • Feature Toggleͷ۩ମతͳ࣮૷ʹ͍ͭͯ

Slide 4

Slide 4 text

࣮ࢪͨ͠αʔϏεཁ݅ • Ϣʔβ਺100ສਓҎ಺ఔ౓ͷձһ੍SNSαʔϏε • Ϣʔβͷݕࡧػೳ͕͋Δ • ଐੑ஋(ੑผɺ೥ྸɺझຯͳͲ)ΛݩʹύϥϝʔλͰݕࡧ • MySQLαʔό΁SELECTจΛൃߦ͢Δ͜ͱͰݕࡧΛ࣮ݱ • ϑϦʔϫʔυݕࡧͳͲ͸ͳ͍

Slide 5

Slide 5 text

αʔϏεͷ՝୊ײ ݕࡧύϥϝʔλ͸छྨఔ౓ࢦఆͰ͖ɺ
 શͯͷύϥϝʔλʹΠϯσοΫε͕ޮ͘Θ͚Ͱ͸ͳ͍ ςʔϒϧϑϧεΩϟϯ͕සൃ
 αʔό୆਺ͰεέʔϧͰ͖ͳ͍

Slide 6

Slide 6 text

αʔϏεͷ՝୊ײ ύϑΥʔϚϯεΛग़͠ɺ͔ͭαʔϏεͷ੒௕ʹ߹Θͤͯ
 εέʔϧͤ͞ΒΕΔج൫͕ඞཁͩͬͨ

Slide 7

Slide 7 text

ElasticsearchΫϥελͷߏங

Slide 8

Slide 8 text

ΞʔΩςΫνϟ master data ؂ࢹ΍؅ཧ ΞϓϦέʔγϣϯαʔό ݕࡧ όοναʔό ΠϯσΫγϯά

Slide 9

Slide 9 text

ΞʔΩςΫνϟ • ϕʔγοΫͳESΫϥελ • master͸৑௕Խ & εϓϦοτϒϨΠϯରࡦͰ3୆ • data͸৑௕Խ͢Δ࠷খ୯ҐͰ2୆ • ΞϓϦέʔγϣϯαʔό͔Βdataϊʔυʹରͯ͠ݕࡧ • ΠϯσΫγϯά͸όονͰఆظతʹߦ͏(χΞϦΞϧλΠϜ) • ߋ৽ର৅͸ΩϡʔΠϯά

Slide 10

Slide 10 text

ϦϦʔεʹ൐͏՝୊ײ ݕࡧ݁Ռଥ౰ੑͷ୲อ Կ͔͋ͬͨͱ͖ͷ &4ো֐࣌ͷݕࡧ͸Ͳ͏ͳΔͷ͔ʁ

Slide 11

Slide 11 text

ϦϦʔεʹ൐͏՝୊ײ ݕࡧ݁Ռଥ౰ੑͷ୲อ &4ো֐࣌ͷݕࡧ͸Ͳ͏ͳΔͷ͔ʁ ଧͪख μʔΫϩʔϯν

Slide 12

Slide 12 text

μʔΫϩʔϯν ʮμʔΫ ϩʔϯνͱ͸Կ͔ : CRE ͕ݱ৔ͰֶΜͩ͜ͱʯ
 https://cloudplatform-jp.googleblog.com/2017/08/CRE-life-lessons- what-is-a-dark-launch-and-what-does-it-do-for-me.html

Slide 13

Slide 13 text

μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ྆ํʹݕࡧཁٻ

Slide 14

Slide 14 text

μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ݕࡧ݁ՌΛൺֱ

Slide 15

Slide 15 text

μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ҰఆҎ্ͷࠩҟ͕͋Δͱ͖ʹ
 ूܭ༻ʹϩάΛు͘

Slide 16

Slide 16 text

μʔΫϩʔϯν ΞϓϦέʔγϣϯαʔό MySQL ࣮ࡍʹฦ͢ͷ͸DBͷ݁Ռ Ϩεϙϯε

Slide 17

Slide 17 text

μʔΫϩʔϯν ϩάूܭݕূ σϓϩΠ վम ζϨ͕ڐ༰஋Λ੾Δ·Ͱ
 վળαΠΫϧΛ܁Γฦͨ͠

Slide 18

Slide 18 text

ϦϦʔεʹ൐͏՝୊ײ &4ো֐࣌ͷݕࡧ͸Ͳ͏ͳΔͷ͔ʁ &4ো֐࣌ͷݕࡧ͸Ͳ͏ͳΔͷ͔ʁ ଧͪख Feature Toggleͷ׆༻

Slide 19

Slide 19 text

Feature Toggle • σϓϩΠແ͠ͰಈతʹػೳͷON/OFFΛ͢ΔͨΊͷ֓೦ɻ • ༗໊ͳ࣮૷ϥΠϒϥϦͩͱJava੡ͷFF4JͳͲ͕͋Δɻ • ୯७ͳON/OFF͚ͩͰͳ͘ɺಛఆͷ৚݅ͷϢʔβʹ௨ৗͱ͸ҧ ͏΋ͷΛग़͠෼͚ͨΓ͢Δ͜ͱ͕Ͱ͖Δ • FeatureToggles
 https://martinfowler.com/articles/feature-toggles.html#OpsToggles


Slide 20

Slide 20 text

Feature Toggle ࣮૷Πϝʔδ if( isEnableFeature(“FEATURE_ES_SEARCH”) ) { // ElasticsearchͰͷݕࡧ } else { // DBͰͷݕࡧ } ͜ͷΑ͏ͳ࣮૷Λ͓ͯ͘͠ͱɺ
 ؅ཧը໘͔ΒಈతʹϑϥάΛOFFʹͰ͖Δ

Slide 21

Slide 21 text

Feature Toggle ࣮૷Πϝʔδ ग़య: http://ff4j.org/ ͜͜ͷON/OFFͰϑϥά͕มΘΔ!

Slide 22

Slide 22 text

Feature Toggleͷ׆༻ ΞϓϦέʔγϣϯαʔό MySQL Toggle͕ON

Slide 23

Slide 23 text

Feature Toggleͷ׆༻ ΞϓϦέʔγϣϯαʔό MySQL Toggle͕OFF Toggle͕OFFͷͱ͖͸DBͰݕࡧͤ͞Δ

Slide 24

Slide 24 text

Feature Toggleͷ׆༻ data ΞϓϦέʔγϣϯαʔό ݕࡧ όοναʔό ΠϯσΫγϯά Τϥʔൃੜʂ Τϥʔൃੜʂ ElasticsearchͰΠϯσΫγϯάɺ΋͘͠͸ݕࡧͰɺ
 Τϥʔ͕ҰఆҎ্ग़ͨ৔߹͸ࣗಈతʹToggleΛOFFʹ͢Δ

Slide 25

Slide 25 text

Feature Toggle ؅ཧը໘͔Βͷखಈ੾Γସ͑ɺESΤϥʔݕग़࣌ͷࣗಈ੾Γସ͑ʹ ΑͬͯɺσϓϩΠແ͠ͰDBݕࡧ΁ϑΥʔϧόοΫ Կ͔͋ͬͨͱͯ͠΋Ϣʔβ΁ͷӨڹΛ࠷খݶʹ

Slide 26

Slide 26 text

݁Ռ • ϦϦʔεޙ2ϲ݄ܦա͍ͯ͠Δ͕ো֐ൃੜ0݅ɻ • (ϨεϙϯελΠϜ͸28ഒվળ)

Slide 27

Slide 27 text

·ͱΊ • Լهͷγϯϓϧͳ͕Βڧྗͳߟ͑ํͰো֐0ͰϦϦʔε • μʔΫϩʔϯνͰຊ൪؀ڥͷτϥϑΟοΫͰ݁ՌݕূΛߦͬͨ • Feature Toggleͷ׆༻Ͱ͙͢ʹϑΥʔϧόοΫ