Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • でもこれってマイクロサービスにしたときに受けられる 恩恵であって、マイクロサービスの分割単位ではない • この単位で分けるとマイクロサービスっぽいものができ る w ϚΠΫϩαʔϏεʹࣦͯ͠ഊ͍͍ͨͬͯͬͯ͠Δͷ͍͍ͩͨ͜͏ͳͷͰ ͸ʁ マイクロサービスにしたいと思うとき 10

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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