Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS DMSを利用した今風DBリファクタリング/jawsug_okayama_2019

AWS DMSを利用した今風DBリファクタリング/jawsug_okayama_2019

# 概要

2019年08月17日に開催される JAWS-UG Okayama 2019 の発表スライドです。

https://jaws-ug-okayama.doorkeeper.jp/events/91487

株式会社オミカレ ( https://party-calendar.net/ ) で取り組んでいる DB・Webリファクタリングの手法についてご紹介させて頂きました。

Takahashi Ikki

August 11, 2019
Tweet

More Decks by Takahashi Ikki

Other Decks in Technology

Transcript

  1. AWS DMSΛར༻ͨ͠
    ࠓ෩DBϦϑΝΫλϦϯά
    2019-08-17
    JAWS-UG Okayama 2019
    1

    View Slide

  2. ͓͠ͳ͕͖
    1. ࣗݾ঺հ
    2. DBϦϑΝΫλϦϯάΛ΍Δཧ༝
    3.


    ͱ͸
    4. DMSΛ࢖ͬͨϦϑΝΫλϦϯάख๏
    5. ·ͱΊ
    2

    View Slide

  3. ஫ҙࣄ߲
    • εϥΠυ͸ެ։͠·͢ɻ
    • ࣭໰ͱ͔͝ࢦఠͱ͔ॾʑͷϑΟʔυόοΫ͕͍͟͝·ͨ͠Β
    ΁ ͓ئ͍க͠·͢ɻ
    3

    View Slide

  4. 1. ࣗݾ঺հ
    • ߴڮ Ұٍ
    • Ԭࢁࡏॅ
    • גࣜձࣾΦϛΧϨ WebΤϯδχΞ
    • ೔ຊPostgreSQLϢʔβʔձ
    தࠃࢧ෦௕
    • PostgreSQLྺ 1೥
    4

    View Slide

  5. גࣜձࣾΦϛΧϨ
    (ࣗࣾʹ͍ͭͯͪΐͬͱએ఻)
    શࠃ30,000݅ͷࠗ׆ύʔςΟΛ
    ܝࡌͨ͠ϙʔλϧαΠτ
    ໿40ສਓͷձһͷํʑʹ͝ར༻௖͍͍ͯ·
    ͢ɻ
    ࠗ׆ͱݴ͑͹ΦϛΧϨʂ
    \\݁ࠗ͸͍͍ͧʂʂ//
    5

    View Slide

  6. 6

    View Slide

  7. αΠτͷϑϧϦχϡʔΞϧ
    ϑϩϯτΤϯυ
    • TypeScript+SCSSͰϑϧϦϓϨʔεɻ
    όοΫΤϯυ
    • PHPɺPython(Django)ͰϑϧϦϓϨʔεɻ
    • طଘͷٕज़తෛ࠴Λվम
    7

    View Slide

  8. αΠτͷϑϧϦχϡʔΞϧ
    Πϯϑϥ
    • ECS(Fargate)ʹΑΔશίϯςφԽ
    • αΠτΛCDNͰ·ΔͬͱΩϟογϡͯ͠ߴ଎Խ
    • σϓϩΠϑϩʔΛAnsible͔ΒTerraformΛ
    ࢖ͬͨ΋ͷʹϦϓϨʔε
    8

    View Slide

  9. ΦϛΧϨͷจԽ
    ʢϚωʔδϟʔ໨ઢʣ
    ฐࣾCTO ીࠜ(@soudai1025) ͕
    PHPΧϯϑΝϨϯεͰ࿩͓ͯ͠Γ·͢ɻ
    ڵຯ͕͋Δํ͸ͪ͜ΒΛͲ͏ͧɻ
    https://speakerdeck.com/soudai/
    proper-problem
    9

    View Slide

  10. ΦϛΧϨͷจԽ
    ʢϓϨΠϠʔ໨ઢʣ
    ߴڮ͕ PHPΧϯϑΝϨϯεઋ୆Ͱ࿩ͯ͠
    ͓Γ·͢ɻ
    ڵຯ͕͋Δํ͸ͪ͜ΒΛͲ͏ͧɻ
    https://speakerdeck.com/takahashiikki/
    phpconference-sendai2019-omicale
    10

    View Slide

  11. 2. DBϦϑΝΫλϦϯάΛ΍Δཧ༝ͱ
    ͦͷख๏
    11

    View Slide

  12. ΦϛΧϨʹ͍ͭͯ
    • αʔϏε։͔࢝Β໿̓೥͕ܦա͍ͯ͠Δɻ
    • ͜͜൒೥ఔͰ ։ൃਓһ͕ࣾһ1໊ + ֎஫ ͷମ੍͔Β
    ࣾһ6໊ ͷମ੍ʹมֵɻ
    • ৭Μͳେਓͷࣄ৘͔ΒͦΕͳΓʹ͍ΘΏΔٕज़తෛ࠴ͱݺ͹
    ΕΔ΋ͷ͕͋Δɻ
    12

    View Slide

  13. ྫ͑͹ɾɾ
    ʮσʔλϕʔεߏ଄ΛோΊΔձ΍Ζ͏ʂʯ
    13

    View Slide

  14. ྫ͑͹ɾɾ
    ʮσʔλϕʔεߏ଄ΛோΊΔձ΍Ζ͏ʂʯ
    ʮ͜ͷςʔϒϧԿʹ࢖ͬͯΔ͔୭͔஌ͬͯΔʁʯ
    14

    View Slide

  15. ྫ͑͹ɾɾ
    ʮσʔλϕʔεߏ଄ΛோΊΔձ΍Ζ͏ʂʯ
    ʮ͜ͷςʔϒϧԿʹ࢖ͬͯΔ͔୭͔஌ͬͯΔʁʯ
    ʮʮʮ͍΍͊ɻɻɻ
    !
    ʁʯʯʯ
    15

    View Slide

  16. ྫ͑͹ɾɾ
    ʮσʔλϕʔεߏ଄ΛோΊΔձ΍Ζ͏ʂʯ
    ʮ͜ͷςʔϒϧԿʹ࢖ͬͯΔ͔୭͔஌ͬͯΔʁʯ
    ʮʮʮ͍΍͊ɻɻɻ
    !
    ʁʯʯʯ
    ୭΋஌Βͳ͍ςʔϒϧͷڪා...
    16

    View Slide

  17. gender ΧϥϜ
    ૝ఆ ࣮ࡍ
    ܕ int
    ೖΔσʔλ 0, 1, 2
    σʔλͷҙຯ 0: ະఆٛ,
    1: உੑ,
    2: ঁੑ
    17

    View Slide

  18. gender ΧϥϜ
    ૝ఆ ࣮ࡍ
    ܕ int varchar
    ೖΔσʔλ 0, 1, 2 0, 1, 2, உੑ, ঁੑ
    σʔλͷҙຯ 0: ະఆٛ,
    1: உੑ,
    2: ঁੑ
    0: ະఆٛ,
    1: உੑ,
    2: ঁੑ
    18

    View Slide

  19. ϓϯϓϯ͢Δɾɾʂ
    19

    View Slide

  20. ϦϑΝΫλϦϯάΛԿނ͢Δͷ͔
    • ίʔυ΍σʔλϕʔε͔Βඬ͏ ෆ٢ͳʹ͓͍ ͕΍͹͍ɻ
    ෆ٢ͳʹ͓͍ is ٕज़తෛ࠴
    • ʮٕज़తෛ࠴Λվम͢ΔҝʹϦϑΝΫλϦϯάΛߦ͏ʯ
    => ։ൃ଎౓ͷ҆ఆԽɺอकੑͷ޲্ɾख໭ΓΛগͳ͘͢Δ
    20

    View Slide

  21. ͱ͸͍͍ͭͭ΋ɾɾ
    ʮϦϑΝΫλϦϯάΛ͢Δҝʹ3ϲ݄։ൃ͕ࢭ·Γ·͢ʯ
    զʑ͸ελʔτΞοϓͳͷͰɺ
    άϩʔεͷखΛࢭΊΔࣄ͸ग़དྷͳ͍ɻ
    21

    View Slide

  22. ޲͖߹͏ඞཁͷ͋Δ՝୊
    • ࠓޙͷࣄۀͷ੒௕ͷҝʹ։ൃͷεϐʔυײ͸ඞཁෆՄܽɻ
    • ݶΒΕͨϦιʔεશͯΛϦϑΝΫλϦϯάʹ౤ࢿग़དྷͳ͍ɻ
    22

    View Slide

  23. ݕ౼ʹ͋ͨͬͯߟ͑ΔҰൠతͳϦϑΝΫλϦϯάख๏
    23

    View Slide

  24. Ұൠతͳౕ
    ໊ஶ ʰσʔλϕʔεɾϦϑΝΫλϦϯάʱ
    24

    View Slide

  25. τϦΨʔΛ࢖ͬͨϦϑΝΫλϦϯά
    • ৽ΧϥϜΛ௥Ճ͢Δ
    • τϦΨʔΛ༻͍ͯچΧϥϜ͕ߋ৽͞Εͨ৔߹ʹɺ
    ৽ΧϥϜΛߋ৽͢ΔΑ͏ʹ͢Δ
    • ֤ߦͷ৽ΧϥϜʹچΧϥϜͷ஋Λ୅ೖ͢Δ
    • ৽ΧϥϜ͔ΒಡΉΑ͏ʹίʔυΛมߋ͢Δ
    • ৽ΧϥϜ΁ॻ͖ࠐΉΑ͏ʹίʔυΛมߋ͢Δ
    • چΧϥϜͱτϦΨʔΛ࡟আ͢Δ
    25

    View Slide

  26. σϝϦοτ
    • SQLͰτϦΨʔॻ͔ͳ͍ͱ͍͚ͳ͍ɻ
    26

    View Slide

  27. SQLͰτϦΨʔΛॻ͔ͳ͍ͱ͍͚ͳ͍ɻ
    • Java ͰΞϓϦέʔγϣϯΛॻ͍ͨࣄ͋Δਓ ʁ
    • Python ͰΞϓϦέʔγϣϯΛॻ͍ͨࣄ͋Δਓ ʁ
    • JavaScript ͰΞϓϦέʔγϣϯΛॻ͍ͨࣄ͋Δਓ ʁ
    • Perl ͰΞϓϦέʔγϣϯΛॻ͍ͨࣄ͋Δਓ ʁ
    27

    View Slide

  28. SQLͰτϦΨʔΛॻ͔ͳ͍ͱ͍͚ͳ͍ɻ
    PostgreSQLͳΒ
    { Java | Python | JavaScript | Perl | SQL } Ͱ
    τϦΨʔ͕ॻ͚·͢ʂ
    28

    View Slide

  29. PostgreSQLͷखଓ͖ܕݴޠ
    τϦΨʔͷ࣮ߦؔ਺ΛҎԼͷ֤ݴޠͰఆ͕ٛग़དྷΔɻ
    ໊শ ݴޠ ഑෍ํ๏
    PL/pgSQL SQL جຊ഑෍
    PL/Perl Perl جຊ഑෍
    PL/Python Python جຊ഑෍
    PL/Java Java ֦ு
    PL/v8 JavaScript ֦ு
    ※ ͦͷଞ
    29

    View Slide

  30. (ࢀߟ) PL/v8 ͷ༗ޮԽํ๏
    RDS for PostgreSQLʹ͸σϑΥϧτͰ
    plv8͕Πϯετʔϧ͞Ε͍ͯΔͷͰɺextensionΛ༗ޮԽͯ͠΍Ε͹ok.

    .+!&*$'&

    ('*+")!**#'-) *!.+!&*$'&*
    ('*+")!*)!+!!.+!&*$'&(%,


    30

    View Slide

  31. ฐࣾɺMySQLͳΜͰ͕͢ɾɾʢʣ
    31

    View Slide

  32. ҆৺͍ͯͩ͘͠͞
    ฐࣾ΋MySQLͰ͢
    32

    View Slide

  33. ͱ͍͏ࣄͰɻɻ
    • τϦΨʔΛָʹ͍ͨ͠͠ɺPostgreSQL޷͖͔ͩΒ
    MySQLͷσʔλΛPostgreSQLʹҠߦͭͭ͠
    τϦΨʔ͕ൃಈ͢ΔΑ͏ͳΞʔΩςΫνϟ͕ྑ͍ɻ
    • খ͍͞ॴ͔Βண࣮ʹखΛਐΊ͍ͨɻ
    • ্هΛ৬ਓͷख͡Όͳָͯ͘ʹӡ༻͍ͨ͠ɻ
    ্هΛશ෦ຬͨͨ͠΋ͷ͕ཉ͍͠
    33

    View Slide

  34. ͦΕશ෦ AWS DMS Ͱग़དྷ·͢ʂ
    34

    View Slide

  35. 3.



    ͱ͸
    35

    View Slide





  36. ωοτϫʔΫӽ͠ʹ
    σʔλҠߦΛߦ͏ࣄ͕ग़དྷΔαʔϏε
    ಄จࣈΛऔͬͯɺͱݺ͹ΕΔɻ
    ※ ੍ݶ͕͋ͬͯɺίϐʔݩɾίϐʔઌͷ
    ͲͪΒ͔͕AWSͷΤϯυϙΠϯτͰແ
    ͍ͱɺϨϓϦέʔγϣϯΛ͢Δࣄ͕ग़དྷ
    ͳ͍ɻ
    36

    View Slide




  37. ͷ͝঺հ
    • AWS DMS Ͱ࢖ΘΕΔΩʔϫʔυ
    • ϨϓϦέʔγϣϯΠϯελϯεʹ͍ͭͯ
    • λεΫͷৼΔ෣͍ʹ͍ͭͯ
    • λεΫͷઃఆํ๏ʹ͍ͭͯ
    37

    View Slide

  38. AWS DMS Ͱ࢖ΘΕΔΩʔϫʔυ
    • ιʔεΤϯυϙΠϯτ
    • σʔλͷίϐʔݩɻ
    , , , ͳͲɻ
    • λʔήοτΤϯυϙΠϯτ
    • σʔλͷίϐʔઌɻ
    , , , , ͳͲɻ
    • ϨϓϦέʔγϣϯΠϯελϯε
    • ίϐʔݩ͔Βίϐʔઌ΁σʔλͷϨϓϦέʔγϣϯΛߦ͏Πϯελϯεɻ
    • λεΫ
    • ͲͷςʔϒϧΛͲͷΑ͏ʹҠߦ͢Δ͔ΛఆΊͨϧʔϧɻ
    38

    View Slide

  39. ϨϓϦέʔγϣϯΠϯελϯεʹ͍ͭͯ
    • ΠϯελϯεΫϥε͸ T2, C4, R4ͷ̏छྨΛαϙʔτ.
    • T2: ։ൃɾݕূ༻
    • C4: େྔͷԋࢉΛߦ͏৔߹ʹ໾ཱͭɻ
    (AWSతʹ͸ ҟछDBҠߦ͸͜ΕΛ͢͢Ί͍ͯΔ)
    • R4: ϝϞϦ૿ՃΠϯελϯεɻ
    (ҰճͷτϥϯβΫγϣϯ͕େ͖͍࣌͸͜Ε.)
    • ϚϧνAZʹରԠ͍ͯͯ͠ɺϑΣΠϧΦʔόʔΛαϙʔτ.
    • ࣮ࡍɺDMSͱ͓͕͔͔ͯۚ͠Δͷ͸Πϯελϯεར༻ྉͱετϨʔδ͚ͩɻ
    39

    View Slide

  40. λεΫͷৼΔ෣͍ͷछྨʹ͍ͭͯ
    λεΫͷৼΔ෣͍͸ओʹ3λΠϓ͋Δɻ
    • શϩʔυ+ܧଓతͳϨϓϦέʔγϣϯ(CDC).
    • ΦϛΧϨͰར༻͍ͯ͠ΔλΠϓɻ
    • طଘͷσʔλΛϑϧϩʔυͨ͠ޙɺ
    τϥϯβΫγϣϯϩά͔ΒܧଓతʹϨϓϦέʔγϣϯΛߦ͏.
    • ܧଓతͳϨϓϦέʔγϣϯ(CDC)ͷΈ
    • શϩʔυͷΈ
    40

    View Slide

  41. λεΫͷઃఆํ๏ʹ͍ͭͯ
    • ϨϓϦέʔγϣϯΛߦ͏ςʔϒϧͷࢦఆํ๏͸̎छྨ
    • userɿ จࣈྻҰகͰ ςʔϒϧͷΈΛର৅ͱ͢Δɻ
    • user_%ɿ ਖ਼نදݱͰ ςʔϒϧʹ߹க͢Δશͯͷ
    ςʔϒϧΛର৅ͱ͢Δɻ
    • ਖ਼نදݱͳͲͰෳ਺ࢦఆͨ͠৔߹͸λεΫ಺ͰฒྻͰςʔϒϧ͕
    ϩʔυ͞ΕΔɻ
    (σϑΥϧτͰ͸8ςʔϒϧ)
    41

    View Slide

  42. λεΫͷઃఆํ๏ʹ͍ͭͯ
    • ֤ςʔϒϧʹରͯ͠ҠߦϧʔϧΛઃఆ͢Δࣄ͕ग़དྷΔɻ
    • ྫ͑͹Ҡߦޙͷςʔϒϧ໊/ΧϥϜ໊Λมߋͨ͠Γ
    ର৅ͷσʔλΛϧʔϧͰߜΓࠐΜͩΓग़དྷΔɻ
    • ͭ·ΓɺΧϥϜ໊ͷมߋͱ͔͚ͩͳΒ
    ͦ΋ͦ΋τϦΨʔ͢ΒཁΒͳ͍ɻ
    42

    View Slide

  43. λεΫӡ༻ͷ޻෉
    άϧʔϓ୯ҐͰখ͘͞ϨϓϦέʔγϣϯλεΫΛઃఆͯ͠ҠߦΛਐΊΔɻ
    ྫɿ ϢʔβʔҠߦλεΫ, ঎඼σʔλҠߦλεΫ, ߪೖཤྺҠߦλεΫ, ...
    • ཧ༝
    Ҡߦ׬ྃͨ͠ςʔϒϧΑΓDMSͷλεΫΛ࡟আ͍ͯ͘͠ࣄΛ
    ૝ఆ͍ͯ͠ΔͨΊɻ
    ӡ༻Λͯ͠ؾ෇͍͕ͨɺ
    খ͘͞λεΫΛ෼ׂ͓ͯ͘͠ࣄͰҰݸͷςʔϒϧҠߦ͕
    ࣦഊͨ࣌͠ʹαʔϏεશମͷো֐ʹͳΒͳ͍ɻ
    43

    View Slide

  44. ͦͷଞDMSͷओͳ׆༻ࣄྫ
    • ΦϯϓϨͷDB͔ΒAWSͷRDS΁σʔλΛҠߦ͢Δɻ
    • ਂ໷ϑϧόοΫΞοϓΛऔͬͯAWSʹసૹͯ͠
    ෮ݩ͢Δ࡞ۀͱ͔ཁΒͳ͍()
    • RDS → DynamoDB ʹܧଓతʹϨϓϦέʔγϣϯΛͯ͠
    Lambda͕઀ଓ͢ΔDynamoDBΛ࡞Δɻ
    • RDS → S3ʹcsvΛput͢Δɻ
    44

    View Slide

  45. ·ͱΊ
    • DMS͸ωοτϫʔΫӽ͠ʹϨϓϦέʔγϣϯΛ࣮ݱ͢ΔαʔϏε.
    • σʔλͷίϐʔݩͱઌΛࢦఆͯ͠ҠߦϧʔϧͱͳΔλεΫΛ࡞੒͢ΔࣄͰ
    σʔλͷҠߦ͸શͯDMSͷ੹຿Ͱ࣮ݱͯ͘͠ΕΔɻ
    • λεΫͷཻ౓Λଟͨ͘͠Γখͨ͘͞͠Γ͢ΔࣄͰ
    શମͷϨϓϦέʔγϣϯͷཻ౓Λௐ੔ग़དྷΔɻ
    • DMS୯ମͱͯ͠͸ϨϓϦέʔγϣϯΠϯελϯεͷӡ༻අ͕͔͔Δఔ౓Ͱ
    ҆ՁͰਐΊΔࣄ͕ग़དྷΔɻ
    45

    View Slide

  46. 4. DMSΛ࢖ͬͨϦϑΝΫλϦϯάख๏
    46

    View Slide

  47. ݱঢ়ͷΞʔΩςΫνϟ
    47

    View Slide

  48. ݱঢ়ͷΞʔΩςΫνϟ
    ෳ਺ͷαʔϏε͕ӡ༻͞Ε͓ͯΓ
    ୯ҰͷMySQLͷhogeεΩʔϚ͔Β
    σʔλΛࢀর͍ͯ͠Δɻ
    ݱঢ়ͷ՝୊
    • DB͔Βෆ٢ͳ೏͍͕ඬͬͯΔɻ
    • Web͔Β΋ෆ٢ͳ೏͍͕ඬͬͯΔɻ
    48

    View Slide

  49. DBͷϦϑΝΫλϦϯάํ๏
    • ผͷΠϯελϯεΛ༻ҙ͠ɺ
    AWS Database Migration ServiceΛ
    ࢖༻ͯ͠ϨϓϦέʔγϣϯ͢Δɻ
    • ϨϓϦέʔγϣϯ͞ΕͨλΠϛϯάͰ
    DBͷτϦΨʔΛൃಈͤ͞Δɻ
    • τϦΨʔ಺ͰچσʔλΛՃ޻͠
    ϦϑΝΫλϦϯάͨ͠ςʔϒϧͷ
    ܗࣜʹ߹͏Α͏ʹొ࿥͢Δɻ
    • ࠓޙ͸NEWεΩʔϚΛࢀর͢Δɻ
    49

    View Slide

  50. WebͷϦϑΝΫλϦϯάํ๏
    APIαʔϏε Λ৽͘͠࡞Γɺ
    WebଆΛAPIܦ༝ʹॻ͖׵͍͑ͯ͘ɻ
    ͦͷࡍʹɺWebଆͷίʔυΛ
    ϦϑΝΫλϦϯά͍ͯ͘͠ɻ
    ྫ͑͹
    • ձһొ࿥/ࢀরAPI
    • ࠗ׆ύʔςΟʔΛݕࡧ͢Δػೳ
    • ࠗ׆ύʔςΟʔʹ༧໿͢ΔAPI
    ·ͨɺ͜ͷAPI͸
    ΞϓϦ։ൃͷ࣌ʹಉ͡෺Λ͔ͭ͏ɻ
    50

    View Slide

  51. ϦϑΝΫλϦϯάख๏
    • Web͸গͮͭ͠APIܦ༝Ͱ
    ࢀরɾॻࠐ͢ΔΑ͏ʹมߋ͢Δɻ
    • API͸ॻࠐ͸MySQLଆ΁ߦ͍ɺ
    ಡࠐ͸PostgreSQLଆ͔Βߦ͏ɻ
    • WebଆΛશͯAPIܦ༝ʹग़དྷͨΒ
    APIͷॻࠐ΋PostgreSQLଆ΁
    มߋ͢Δɻ
    51

    View Slide

  52. 52

    View Slide

  53. ͜ͷϦϑΝΫλϦϯάํ๏ͷϝϦοτ
    • ߋ৽API͸MySQL΁ॻࠐΛ͢ΔͷͰগͮͭ͠APIܦ༝ʹͯ͠΋
    طଘαʔϏεͷςʔϒϧͷࢀরՕॴʹӨڹ͕ແ͍ɻ
    • ҰՕॴAPIܦ༝ʹͯ͠ΈΔ → ໰୊͕͋Ε͹ௐ੔͢Δɻˠ ...
    ͳͲͷΑ͏ʹ ΧφϦΞϦϦʔε ܗࣜͰ
    গͮͭ͠վળΛਐΊ͍͚ͯΔɻ
    • σʔλͷಡࠐ͸PostgreSQL͔Βߦ͏ͷͰ
    ॻࠐAPIΛݺͿଆ͸ͲͪΒʹॻ͖ࠐΜͰ͍Δ͔Λ
    ؾʹ͠ͳͯ͘΋ྑ͍ɻ
    • WebͱΞϓϦͰಉ͡APIΛ࢖͏ͷͰWebଆͰ࡞ͬͨ΋ͷΛ
    ΞϓϦʹ૊ΈࠐΉࡍɺΞϓϦଆͷରԠ޻਺Λ཈͑Δࣄ͕Ͱ͖Δɻ
    ʢ։ൃͷखΛࢭΊͳ͍ɻʣ
    53

    View Slide

  54. ͜ͷϦϑΝΫλϦϯάํ๏ͷσϝϦοτ
    • ϩʔΧϧͷ։ൃ؀ڥΛ࡞੒͢Δࣄ͕ग़དྷͳ͍ɻ
    ※ ࠓɺׂͱҰ൪೰·͍͠ॴɻ
    • DMS͕ࢭ·ͬͨ࣌ʹࢀরAPI͕ίέΔɻ
    ※ τϦΨʔΤϥʔ౳ͰDMS͕ࢭ·ΔͱαʔϏε͕ࢭ·Δɻ
    • DMS͕஗Ԇͨ࣌͠ͷߟྀ͕೉͍͠ɻ
    ※ ࠓͷॴɺக໋ই͸ͳ͍ɻ(ই͕ແ͍ͱ͸ݴͬͯͳ͍)
    • ίϯϑϦΫτ͢Δࣄ͕ݒ೦͞ΕΔͷͰϦʔυϨϓϦΧʹτϦΨʔΛషͬͯͳ͍ͷͰ
    ϦʔυϨϓϦΧ͕Ϛελʔʹঢ֨͢ΔͱαʔϏε͕ࢭ·Δɻ
    54

    View Slide

  55. DMSΛ࢖ͬͨϦϑΝΫλϦϯάͷख๏
    ·ͱΊ
    • AWS DMSͰ MySQL͔ΒPostgreSQLʹ
    ϨϓϦέʔγϣϯ͍ͯ͠Δɻ
    • DMS͕Ҡߦͨ͠λΠϛϯάͰઃఆͨ͠τϦΨʔ͕ൃಈͯ͠
    ϦϑΝΫλϦϯά͞ΕͨςʔϒϧʹॻࠐΛ͢Δɻ
    • ߋ৽ɾࢀরΛAPIܦ༝ʹ͢ΔࣄͰطଘͷ։ൃΛਐΊͭͭ
    ϦϑΝΫλϦϯάͨ͠DBʹࢀরΛ੾Γସ͍͚͍͑ͯͯΔɻ
    • ϩʔΧϧͷ؀ڥߏங͕೉͍͠ͷͱɺDMS͕ࢭ·ͬͨ࣌ʹ
    ࢀরAPI͕ίέΔͷͰߟྀ͕೉͍͠ɻ
    55

    View Slide

  56. Ҡߦࣦഊͷ؂ࢹΛͲ͏͍ͯ͠Δ͔
    56

    View Slide

  57. Ҡߦࣦഊͷ؂ࢹΛͲ͏͍ͯ͠Δ͔
    ࠓ·Ͱ͓࿩͖ͯͨ͠௨ΓɺDMS͸ඇৗʹศརͳαʔϏεɻ
    ͕ɺτϦΨʔ΍σʔλҠߦλεΫ͕ίέΔͱ௚ͪʹ
    γεςϜো֐ʹͳΔσϝϦοτ΋͋Δɻ
    => ͳΔૣ ͰDMS͕ࣦഊ͍ͯ͠Δࣄʹؾͮ͘࢓૊Έ͕ඞཁ.
    57

    View Slide

  58. Ҡߦࣦഊͷ؂ࢹΛͲ͏͍ͯ͠Δ͔
    ୈ25ճதࠃ஍ํDBษڧձʹͯ
    ʰDBͷো֐ΛͳΔૣͰݕ஌͢Δٕज़ʱ
    Ͱൃදͯ͠·͢ɻ
    58

    View Slide

  59. 3ߦͰ
    • Ϋϥϝι͞ΜͷϒϩάͰ঺հ͞Εٕͯͨज़ΛಡΜͰ
    • ͪΐͪ͜ΐͬ͜ͱԠ༻ͨ݁͠Ռ
    • MackerelͰ؂ࢹग़དྷΔΑ͏ʹͳͬͨɻ
    59

    View Slide

  60. 5. ·ͱΊ
    60

    View Slide

  61. ࠓճͷDMSϦϑΝΫλϦϯάͷ
    ࠷େͷϝϦοτ
    ຊདྷലେͳ޻਺ֻ͕͔Δ(΋͘͠͸ಡΊͳ͍)͸ͣͷ
    DBϦϑΝΫλϦϯάͷॲཧΛDMSλεΫ(Ҡߦ୯Ґ)Λ
    খͨ͘͞͠ࣄͰগͮͭ͠खΛೖΕΔࣄ͕ग़དྷΔɻ
    ͦͷ݁ՌɺӨڹൣғ΋ಡΈ΍͘͢վળΛਐΊΔࣄ͕ग़དྷͨɻ
    61

    View Slide

  62. ݱࡏ
    • ӡ༻ͯ͠໿1೥ɻ
    க໋ই͸ແ͍͚ͲԿͱ͔ਐΜͰ͖ͨɻ
    (ই͕ແ͍ͱ͸ݴ͍ͬͯͳ͍)
    62

    View Slide

  63. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·
    ͨ͠ʂʂ
    63

    View Slide