Skip to Content
モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド
book

モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド

by Sam Newman, 島田 浩二
December 2020
Beginner to intermediate
276 pages
4h 15m
Japanese
O'Reilly Japan, Inc.
Content preview from モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド

4章データベースを分割する

説明してきたとおり、機能をマイクロサービスへと抽出する方法はたくさんある。ただし、部屋にいる象†1に対処しなくてはならない。つまり、データをどうにかする必要がある。マイクロサービスは、情報隠蔽を実践しているときに最もうまくいく。そのため、私たちは通常、データストレージや取得のメカニズムを完全にカプセル化するマイクロサービスを構築しようとする。このことから、マイクロサービスアーキテクチャに移行する場合に、その移行の力を最大限引き出したいのなら、モノリスのデータベースを分割する必要があるという結論が導かれる。

[†1] 訳注:誰もが見て見ぬふりをしている問題のこと。

しかしながら、データベースを分割することは、簡単な試みとはほど遠い。移行中のデータ同期や、論理スキーマと物理スキーマの分解、トランザクションの整合性、テーブル結合、レイテンシーなどの課題を考慮する必要がある。この章では、これらの課題を見ていきながら、私たちの助けとなるパターンを探っていく。

データベースを分割する方法に入る前に、まずは、共有データベースを管理する場合の課題と、それに対処するパターンを見ていこう。

4.1 パターン:共有データベース

1章で説明したように、結合はドメイン結合、一時的結合、実装結合の3つの観点で考えられる。この3つのうち、データベースを考えるときに最も考慮する必要があるのは実装結合だ。図4-1に示すように、複数のスキーマ間でデータベースを共有するケースが多いからだ。

1つのデータベースを複数のサービスで共有することは、目に見えて多くの問題がある。何よりも大きな問題は、何を共有して何を隠すのかを決める機会を自ら捨てるということだ。それは、情報隠蔽へと向かう動きと真っ向から反する。つまり、スキーマのどの部分を安全に変更できるかを理解するのが難しくなる。外部のサービスがデータベースにアクセスできることが分かったとしても、スキーマのどの部分が使用されているかは分からないからだ。この問題はビューを使用することである程度は緩和できるが、この後説明するように、それは完璧な解決策にはならない。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

スクラム実践者が知るべき97のこと

スクラム実践者が知るべき97のこと

Gunther Verheyen, 吉羽 龍太郎, 原田 騎郎, 永瀬 美穂
マイクロサービスアーキテクチャ 第2版

マイクロサービスアーキテクチャ 第2版

Sam Newman, 佐藤 直生, 木下 哲也
scikit-learn、Keras、TensorFlowによる実践機械学習 第2版

scikit-learn、Keras、TensorFlowによる実践機械学習 第2版

Aurélien Géron, 下田 倫大, 長尾 高弘

Publisher Resources

ISBN: 9784873119311Other