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

新規事業立ち上げからマイクロサービスについて考えてみる

Spring_MT
August 30, 2018

 新規事業立ち上げからマイクロサービスについて考えてみる

Spring_MT

August 30, 2018
Tweet

More Decks by Spring_MT

Other Decks in Technology

Transcript

  1. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    Aug 30, 2018
    Spring_MT
    ৽نࣄۀ্ཱ͔ͪ͛ΒϚΠΫϩαʔϏεʹ͍ͭ
    ͯߟ͑ͯΈΔ

    View Slide

  2. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    ࣗݾ঺հ
    • ⾃⼰紹介
    2
    l 2008年 DeNA⼊社
    l 2010年 エンジニアになる
    l 2011年 DeNA退社 -> 福岡へ
    l 2013年 DeNAに出戻り
    l 2016年 ゲーム事業本部
    l 2017年 コマース&インキュベーション事業本部
    GitHub https://github.com/SpringMT
    Twitter https://twitter.com/Spring_MT
    @Spring_MT

    View Slide

  3. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 新規事業 -> 新しいシステム
    • マイクロサービスアーキテクチャの中では新規システム
    はよりモノリシックにすることが勧めらている。
    w 0A3&*--:ϚΠΫϩαʔϏεΞʔΩςΫνϟ Q͋ͨΓ
    新規事業
    3

    View Slide

  4. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 新しいシステムではサービス境界が定まっていないので、
    間違って分割するとあとがつらい。。
    • 分散モノリスみたいのは最悪ケース
    なぜか
    4

    View Slide

  5. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    5
    • 以上

    View Slide

  6. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    6
    • だと意味ないので

    View Slide

  7. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    新規事業を⽴ち上げるときにどうしておく?
    7

    View Slide

  8. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 早いサイクルの改善が求められる
    w ίʔυΛमਖ਼͢Δස౓͕ଟ͍
    w Өڹൣғ͕ා͔ͬͨΓ͠·ͤΜ͔ʁ
    新規事業を⽴ち上げるときにどうしておく?
    8

    View Slide

  9. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • デプロイの容易性
    w ϞϊϦγοΫͩͱमਖ਼͕খͯ͘͞΋ΞϓϦέʔγϣϯશମΛσϓϩΠ͠ͳ
    ͚Ε͹ͳΒͣɺӨڹ͕େ͖͘ϦεΫ͕ߴ͘ͳΔ
    • 回復性
    w ϞϊϦγοΫͩͱಛఆͷΤϯυϙΠϯτʹશମ͕Ҿ͖ͮΒΕΔ
    • 技術特異性
    w ผͷݴޠͱ͔ϛυϧ΢ΣΞͱ͔࢖͍͍ͨ
    マイクロサービスにしたいと思うとき
    9

    View Slide

  10. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • でもこれってマイクロサービスにしたときに受けられる
    恩恵であって、マイクロサービスの分割単位ではない
    • この単位で分けるとマイクロサービスっぽいものができ

    w ϚΠΫϩαʔϏεʹࣦͯ͠ഊ͍͍ͨͬͯͬͯ͠Δͷ͍͍ͩͨ͜͏ͳͷͰ
    ͸ʁ
    マイクロサービスにしたいと思うとき
    10

    View Slide

  11. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 境界づけられたコンテキストで分割する
    w ͜ͷ୯Ґʹ͓͍ͯ͸ɺٕज़ΞʔΩςΫνϟ͕෺ཧతʹ෼ׂ͑͠Δ
    マイクロサービスの分け⽅の前提
    11

    View Slide

  12. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • トランザクション境界も分かれるはず
    w ΞʔΩςΫνϟ্ͷτϥϯβΫγϣϯͷ݁߹ͷྗ͸ڧྗ
    w ڥք͚ͮΒΕͨίϯςΩετΛ·͍ͨͰτϥϯβΫγϣϯͰ݁߹͞Ε͍ͯ
    Δͱ͜Ζ͸ཁ஫ҙ
    w ͭ·ΓτϥϯβΫγϣϯ಺ͷॲཧʹ஫໨͓ͯ͘͠
    w τϥϯβΫγϣϯ͕෼ׂෆՄͱ͍͏͜ͱ͸ίϯςΩετ͸෼͚
    ΒΕͳ͍
    境界づけられたコンテキストで分割すると
    12

    View Slide

  13. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 新規サービス⽴ち上げのときから意識できる
    w ͻͱ͔ͨ·ΓͰѻ͍͍ͨσʔλ͕ݦࡏԽ͢Δ
    w গͳ͘ͱ΋ͦͷσʔλ͸ґଘ͕ੜ·ΕΔ
    w ͜ͷσʔλ͸ಉ͡մͰѻ͏΂͖͔ߟ͑Δ
    トランザクション境界
    13

    View Slide

  14. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • データベースを分ける
    w ෼͚ͨޙͷ੔߹ੑͷͱΓํ͸͍Ζ͍Ζ͋Δ͕ɺԿ͸ͱ΋͋Εෳ਺σʔλ
    ϕʔεΛѻ͏͜ͱͱͳΔ
    w ͜͜ͰτϥϯβΫγϣϯΛ෼͚Δͱ໰୊ʹͳΔͱ͜ΖΛચ͍ग़͢
    トランザクション境界を分けるということ
    14

    View Slide

  15. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • Railsだと
    w ෳ਺%#ͬͯجຊతʹαϙʔτͯ͠ͳ͍
    w ෳ਺%#ʹରԠ͢Δʹ͸ʁ
    w 3BJMͷϓϩδΣΫτ෼͚Δ
    w "DUJWF3FDPSEΛෳ਺%#Ͱ΋࢖͑ΔΑ͏ʹ͢Δ
    複数DBの扱い
    15

    View Slide

  16. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • もちろん最初はモノリシックで
    w ෳ਺%#Ͱ΋Ͱ͖ΔΑ͏ʹɺPDUPQVTΛ࢖͍ͬͯΔ
    w ࣮ࡍʹෳ਺%#ʹ͸͍ͯ͠Δ
    今のプロジェクト
    16

    View Slide

  17. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 今の所、共通系統とユーザー系統でDBを分割
    w ڞ௨ܥ౷ͱϢʔβʔܥ౷ͰτϥϯβΫγϣϯΛ·͙ͨॲཧΛॻ͜͏ͱ͢Δ
    ͱͳʹ͔͓͔͍ͬͯ͠ࢥ͏Α͏ʹ͸ͳΔ
    今のプロジェクト
    17

    View Slide

  18. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved.
    • 新規サービス⽴ち上げ時にマイクロサービスにする必要
    はない
    • トランザクション境界に注⽬して適切に分けておくと、
    あとあとマイクロサービスを取り⼊れやすい(と思う)
    まとめ
    ·ͱΊ
    18

    View Slide