Slide 1

Slide 1 text

Rails ʹ͓͚Δ ֎෦γεςϜͱͷεϜʔζͳ ౷߹։ൃ ؔޱ྄Ұ ! ryopeko " ryopeko 3VCZ)JSPCBੜ׆ൃදձ

Slide 2

Slide 2 text

ؔޱ ྄Ұ # ryopeko " ryopeko • ύʔϑΣΫτRuby ڞஶऀ • σϒαϛ2014εϐʔΧʔ • ϕετεϐʔΧʔ৆ 2Ґड৆ • ࠷ۙਓ͔ؒͨͪΒ͸ෳ਺DBͱݺ ͹Ε͍ͯΔ

Slide 3

Slide 3 text

IUUQBENJOTCBS

Slide 4

Slide 4 text

֎෦γεςϜΛ࢖ͬͨ ৽ΞϓϦέʔγϣϯ։ൃ

Slide 5

Slide 5 text

IUUQEJBSZTIVDSFBNOFUCMPHSVCZLBJHJMJHIUOJOHUBMLTIUNM lΈΜͳ΋ͬͱಠࣗݚڀͷ੒ՌΛൃද͢Δͱ͍͍ͱࢥ͏

Slide 6

Slide 6 text

֎෦γεςϜͱͷܨ͗͜Έ $ API % RPC  DB ௚઀ࢀর

Slide 7

Slide 7 text

ࠓճ͸DBΛڞ༗͢Δ৔߹ͷ ख๏ʹ͍ͭͯͷ͓࿩

Slide 8

Slide 8 text

 ' "QQ

Slide 9

Slide 9 text

 ' "QQ  ' "QQ

Slide 10

Slide 10 text

 ' "QQ  ' "QQ  ' "QQ

Slide 11

Slide 11 text

 ' "QQ  ' "QQ  ' "QQ

Slide 12

Slide 12 text

DBڞ༗ͨ͠৔߹ʹ ໰୊ʹͳͬͯ͘Δ͜ͱ

Slide 13

Slide 13 text

ෳ਺ਓͰ։ൃ͍ͯ͠Δ৔߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT

Slide 14

Slide 14 text

ෳ਺ਓͰ։ൃ͍ͯ͠Δ৔߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU

Slide 15

Slide 15 text

ෳ਺ਓͰ։ൃ͍ͯ͠Δ৔߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU TFMFDU

Slide 16

Slide 16 text

ෳ਺ਓͰ։ൃ͍ͯ͠Δ৔߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU EFMFUF TFMFDU

Slide 17

Slide 17 text

ෳ਺ਓͰ։ൃ͍ͯ͠Δ৔߹ BQQMF DIFSSZ QFBDI HSBQF PSBOHF GSVJUT TFMFDU EFMFUF TFMFDU

Slide 18

Slide 18 text

Unit Test Ͱ΋ಉ༷

Slide 19

Slide 19 text

Unit Test ࣌ͷڞ༗DBͷࠔΓࣄ • ςετ༻ͷDB͕ڞ༗͞ΕͯΔͱ݁ՌʹӨڹ • ςετ༻ͷDB͕ଘࡏ͠ͳ͍৔߹DB΁ͷϦΫ ΤετΛϞοΫ͢Δඞཁ • ςετσʔλΛ༻ҙ͢Δͷ͕೉͘͠ͳΔ

Slide 20

Slide 20 text

ڞ༗DBͷεΩʔϚมߋʹ ௥ै͢Δͷ͕େม

Slide 21

Slide 21 text

͜͜·ͰͰ σϝϦοτΛ·ͱΊΔͱ…

Slide 22

Slide 22 text

DBڞ༗ͨ͠৔߹ͷσϝϦοτ • ෳ਺ਓͰͷ։ൃ࣌ʹσʔλෆ੔߹ͱͳΔ • Unit Test ࣌ʹڞ༗DBͷऔΓѻ͍͕൥ࡶʹͳΔ • ڞ༗DBͷεΩʔϚมߋʹ௥ै͢Δͷ͕େม

Slide 23

Slide 23 text

΍͸ΓखݩʹDB͕͋ͬͯ΄͍͠… (Rails ͬͯखݩʹDB࡞Γ·͢͠…)

Slide 24

Slide 24 text

Ͱ͸खݩʹ ࣋ͬͯΈ·͠ΐ͏

Slide 25

Slide 25 text

DBڞ༗ͨ͠৔߹ͷσϝϦοτ • ෳ਺ਓͰͷ։ൃ࣌ʹσʔλෆ੔߹ͱͳΔ • Unit Test ࣌ʹڞ༗DBͷऔΓѻ͍͕൥ࡶʹͳΔ • ڞ༗DBͷεΩʔϚมߋʹ௥ै͢Δͷ͕େม ্ͭ͸ղܾͦ͠͏ʜ

Slide 26

Slide 26 text

खݩʹ࣋ͭ৔߹ͷ σϝϦοτʹ͍ͭͯߟ͑ͯΈΔ

Slide 27

Slide 27 text

खݩʹDBΛ࣋ͬͨ৔߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ର৅ʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ৔߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯ ࢮ͵ • ݩͷDBεΩʔϚΛ஌Δज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ

Slide 28

Slide 28 text

σʔλͷ४උ͕େม

Slide 29

Slide 29 text

σʔλͷ४උ͕େม • db:seed తͳ࢓૊ΈͰҰׅͰ༻ҙ͢Δ • ֎෦͔Βࢀর͢ΔͷΈͷDBͷ৔߹ɺσʔλύ λʔϯΛ໢ཏͰ͖Δͱ͍͏ϝϦοτ΋ • େมͳͷ͸ύλʔϯͷϝϯς • (Ͳ͏ͤςετͰ΋ඞཁͩ͠)

Slide 30

Slide 30 text

खݩʹDBΛ࣋ͬͨ৔߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ର৅ʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ৔߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ ͵ • ݩͷDBεΩʔϚΛ஌Δज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ

Slide 31

Slide 31 text

Slave ʹߋ৽ܥΫΤϦ

Slide 32

Slide 32 text

Slave ʹߋ৽ܥΫΤϦ • # eagletmt/switch_point Λ࢖͏͜ͱͰղܾ • Slave ʹߋ৽ܥΫΤϦΛଧͱ͏ͱ͢Δͱྫ֎ • ෳ਺DBΛऔΓѻ͏͜ͱʹͳΔͷͰ switch_point ͸ͱͯ΋༗ޮ • ࣗͣͱ M/S Λҙࣝ͢ΔΑ͏ͳએݴతهड़ʹͳΔ

Slide 33

Slide 33 text

IUUQTHJUIVCDPNFBHMFUNUTXJUDI@QPJOUCMPCNBTUFSTQFDNPEFMTSC TXJUDI@QPJOUͷઃఆྫ Ұ෦ൈਮ

Slide 34

Slide 34 text

IUUQTHJUIVCDPNFBHMFUNUTXJUDI@QPJOUCMPCNBTUFSTQFDNPEFMTSC TXJUDI@QPJOUͷઃఆྫ Ұ෦ൈਮ

Slide 35

Slide 35 text

खݩʹDBΛ࣋ͬͨ৔߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ର৅ʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ৔߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ ͵ • ݩͷDBεΩʔϚΛ஌Δज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ

Slide 36

Slide 36 text

ݩͷDBͷεΩʔϚΛ஌Δज़

Slide 37

Slide 37 text

ݩͷDBͷεΩʔϚΛ஌Δज़ • ۀ຿Ͱ࢖͍ͬͯΔεΩʔϚ͸શͯ git Ͱ؅ཧ͞Ε͍ͯΔ • ͜͜ΛݟΕ͹ৗʹ࠷৽͕͋Δͱ͍͏ঢ়ଶ • ͜ͷϦϙδτϦͷεΩʔϚ৘ใΛ࢖༻͢ΔΑ͏ʹσϓ ϩΠϓϩηεʹ૊Έࠐ·Ε͍ͯΔ • ฐࣾͷࣄྫʹؔΘΒͣɺmigration ֎ͷεΩʔϚ͸Ͳ͜ ͔͠ΒʹҰݩ؅ཧ͞Ε͍ͯΔ΂͖

Slide 38

Slide 38 text

खݩʹDBΛ࣋ͬͨ৔߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ର৅ʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ৔߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ ͵ • ݩͷDBεΩʔϚΛ஌Δज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ

Slide 39

Slide 39 text

ݩͷDBͷεΩʔϚΛ खݩͰ؆୯ʹ࠶ݱ͢Δज़

Slide 40

Slide 40 text

ݩͷDBͷεΩʔϚΛ؆୯ʹ࠶ݱ͢Δज़ • Ұݩ؅ཧ͞Ε͍ͯΔεΩʔϚΛ௚઀DBʹద༻ ͢Δͷ͸໘౗ • ໘౗ͳঢ়ଶͩͱεΩʔϚ͕ߋ৽͞Εͳ͘ͳΔ • Rails ʹ͸ db:migrate ͱ͍͏࢓૊Έ͕͋Δͷ Ͱɺͦͷఔ౓ʹ͸ద༻ίετΛԼ͍͛ͨ

Slide 41

Slide 41 text

લఏ:εΩʔϚ͕ϦϙδτϦ ؅ཧ͞Ε͍ͯΔ

Slide 42

Slide 42 text

͜ͷ໰୊Λ ղܾ͢Δ࢓૊ΈΛ࡞ͬͯΈͨ

Slide 43

Slide 43 text

 ' # (JU)VC"1*$BMM 42- &YFDVUF ( 42-

Slide 44

Slide 44 text

db_supplier # SZPQFLPEC@TVQQMJFS

Slide 45

Slide 45 text

db_supplier (settings) DPOpHEBUBCBTFZNM

Slide 46

Slide 46 text

db_supplier (settings) DPOpHFOWJSPONFOUTEFWFMPQNFOUSC

Slide 47

Slide 47 text

DEMO

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

db_supplier Ͱ࣮ݱ͞Εͨ͜ͱ • ؆୯ʹҰݩ؅ཧ͞ΕͨεΩʔϚΛద༻͢Δ͜ ͱ͕Ͱ͖ͨ • ςετ࣌ʹ migration, fixture ͕࢖͑ΔΑ͏ʹ ͳͬͨ • ֎෦ͷDB΁ͷײ৺ࣄΛݮΒͤͨ

Slide 51

Slide 51 text

db_supplier Ͱ࣮ݱ͍ͤͨ͜͞ͱ • εΩʔϚʹߋ৽ʹඋ͑ͯͲͷ࣌఺ͷ΋ͷ͕ద ༻͞Ε͍ͯΔ͔Θ͔ΔΑ͏ʹ͢Δ • db:seed ૬౰ͷ΋ͷ΋૊ΈࠐΊΔΑ͏ʹ • etc…

Slide 52

Slide 52 text

खݩʹDBΛ࣋ͬͨ৔߹ͷσϝϦοτ • σʔλͷ४උ͕େม • ର৅ʹ Slave ؚ͕·Ε͍ͯͯߋ৽ܥ SQL ଧͭΑ͏ͳ ίʔυΛॻ͍͍ͯΔ৔߹ɺຊ൪ͰϨϓϦ͕ࢭ·ͬͯࢮ ͵ • ݩͷDBεΩʔϚΛ஌Δज़͕ඞཁ • ݩͷDBεΩʔϚΛखݩʹ؆୯ʹ࠶ݱ͢Δज़͕ඞཁ

Slide 53

Slide 53 text

·ͱΊ

Slide 54

Slide 54 text

·ͱΊ • ֎෦ͷDBΛͦͷ··ར༻͢Δͱ։ൃ࣌ʹڝ߹ ͯ͠͠·͏ • खݩʹDBΛ࣋ͭʹͯ͠΋ద༻͕໘౗ • εΩʔϚͷ؅ཧͱద༻͕ඞཁ • gem ࡞ͬͯղܾͨ͠

Slide 55

Slide 55 text

࠷ޙʹ…

Slide 56

Slide 56 text

ͱ͸͍͑… • DBڞ༗͸ີ݁߹ʹͳΔ • ϞσϧͷϩδοΫ͕ॏෳͯ͠ଘࡏ͢ΔՄೳੑ • ҙਤ͍ͯ͠ͳ͍ͱ͜ΖͰDBΛ৮ΒΕ͍ͯΔՄ ೳੑ • API ͕༻ҙͰ͖ΔͳΒ API Λબ୒͢΂͖