Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. Aug 30, 2018 Spring_MT ৽نࣄۀ্ཱ͔ͪ͛ΒϚΠΫϩαʔϏεʹ͍ͭ ͯߟ͑ͯΈΔ
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
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • 新規事業 -> 新しいシステム • マイクロサービスアーキテクチャの中では新規システム はよりモノリシックにすることが勧めらている。 w 0A3&*--:ϚΠΫϩαʔϏεΞʔΩςΫνϟ Q͋ͨΓ 新規事業 3
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • デプロイの容易性 w ϞϊϦγοΫͩͱमਖ਼͕খͯ͘͞ΞϓϦέʔγϣϯશମΛσϓϩΠ͠ͳ ͚ΕͳΒͣɺӨڹ͕େ͖͘ϦεΫ͕ߴ͘ͳΔ • 回復性 w ϞϊϦγοΫͩͱಛఆͷΤϯυϙΠϯτʹશମ͕Ҿ͖ͮΒΕΔ • 技術特異性 w ผͷݴޠͱ͔ϛυϧΣΞͱ͔͍͍ͨ マイクロサービスにしたいと思うとき 9
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • でもこれってマイクロサービスにしたときに受けられる 恩恵であって、マイクロサービスの分割単位ではない • この単位で分けるとマイクロサービスっぽいものができ る w ϚΠΫϩαʔϏεʹࣦͯ͠ഊ͍͍ͨͬͯͬͯ͠Δͷ͍͍ͩͨ͜͏ͳͷͰ ʁ マイクロサービスにしたいと思うとき 10
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • トランザクション境界も分かれるはず w ΞʔΩςΫνϟ্ͷτϥϯβΫγϣϯͷ݁߹ͷྗڧྗ w ڥք͚ͮΒΕͨίϯςΩετΛ·͍ͨͰτϥϯβΫγϣϯͰ݁߹͞Ε͍ͯ Δͱ͜Ζཁҙ w ͭ·ΓτϥϯβΫγϣϯͷॲཧʹ͓ͯ͘͠ w τϥϯβΫγϣϯׂ͕ෆՄͱ͍͏͜ͱίϯςΩετ͚ ΒΕͳ͍ 境界づけられたコンテキストで分割すると 12
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • 新規サービス⽴ち上げのときから意識できる w ͻͱ͔ͨ·ΓͰѻ͍͍ͨσʔλ͕ݦࡏԽ͢Δ w গͳ͘ͱͦͷσʔλґଘ͕ੜ·ΕΔ w ͜ͷσʔλಉ͡մͰѻ͏͖͔ߟ͑Δ トランザクション境界 13
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • データベースを分ける w ͚ͨޙͷ߹ੑͷͱΓํ͍Ζ͍Ζ͋Δ͕ɺԿͱ͋Εෳσʔλ ϕʔεΛѻ͏͜ͱͱͳΔ w ͜͜ͰτϥϯβΫγϣϯΛ͚ΔͱʹͳΔͱ͜ΖΛચ͍ग़͢ トランザクション境界を分けるということ 14
Copyright (C) 2018 DeNA Co.,Ltd. All Rights Reserved. • Railsだと w ෳ%#ͬͯجຊతʹαϙʔτͯ͠ͳ͍ w ෳ%#ʹରԠ͢Δʹʁ w 3BJMͷϓϩδΣΫτ͚Δ w "DUJWF3FDPSEΛෳ%#Ͱ͑ΔΑ͏ʹ͢Δ 複数DBの扱い 15