DB分割というアンタッチャブルに踏み込む:マイクロサービスアーキテクチャ(2)

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

第5章 モノリスの分割

第4章 統合では分割されている各マイクロサービス同士をどう統合していくかに焦点を当てていたが、今回は「どうマイクロサービスに分けていくか」の話し。

データベースの分割

データベースの分割。いきなり核心をついてきた。

多分、マイクロサービス化を検討する人は何かしらの保守性を求めて検討するのだと思うけど、とはいえ、JoinだらけのSQLなアプリケーションなんだけど。とか、原子性と一貫性どうするの?的なゆゆしき問題に直面すると思う。

この本を読んでも、残念ながら銀の弾丸にはならないんだけど、リスクとテクニックについてはきちんと記載がある。

特に分割時のFKやトランザクションの問題なんかはこんな手法があるよ。と紹介しつつも空中戦というか結構泥臭いことを書いてあったりするので、モノリシックなDBに対して分割を検討をしている人なんかは、やっぱりみんな一緒の問題感じてるんだな。と思った。

「リスク」に対して結構丁寧に説明しているので、僕自身は結構、知見の幅が広がった。

結局のところJoinはどうする?

結局のところ、顧客DBと請求DB分けると請求先の情報、Joinしないとわからんやないか(>_<)なんて問題。

基本的にはサービス間でAPIを通じてデータを取得していけば問題はなさそう。顧客の住所が変わってもAPIを通じて最新の情報を取得すれば早々問題は起きそうにないしね。

ただそうするとN+1になっちゃわない?レポートの出力とかどうするの?的な解説ももちろんある。本書では、データをDuplicateして解決を進めていくパターンを多く紹介している。

感想のまとめ

これ誰しも課題に思ってて、とはいえ〜的にDBがアンタッチャブルになりつつある中で、今まできちんと踏み込んだ解説を見たことがなかった。

リスクの解説については知識を体系化できて特に良かったと感じた。