tshimba’s blog

このサイトの掲載内容は私自身の見解であり、所属する組織とは関係ありません

マイクロサービスとドメイン駆動設計 (1)

マイクロサービスアーキテクチャの目的と課題

最近はどこもかしこもマイクロサービスがブームになっているようである。クラウドの普及に伴って、マイクロサービスを実際に構築できる技術的な土壌が整ってきていることも追い風になっている。しかし、実際に構築しようとすると壁にぶちあったってしまうことが多いと思う。

ユーザー企業が求めていることは、変化に速く対応できるシステムを作ることであると思う。このような要件を満たすためにマイクロサービスアーキテクチャを適用できる。マイクロサービスが技術的に実現することは、サービスを分割して、個々のシステムを頻繁にリリースできることである。頻繁にリリースを行うことで、変化に迅速に対応する基盤を提供することができる。このことを忘れてベンダー企業ではサービスを分割することだけを考えて変化に迅速に対応できるかというところを忘れていることもあると思う。

サービスの分割方法

そもそもマイクロサービスというネーミングがミスリーディングだと思うが、SOAよりは小さいだろうというくらいで、特にサービスの大きさが本質ではない。サービスを適当に分割しただけではシステムはより複雑になり、テストも終わらずにリリースできないコードが溜まっていくことさえあると思う。では具体的にどのようにサービスを分割していくかというと、ドメイン駆動設計の知識が必要になってくる。サービスを実際のビジネス・組織と同じ単位で分割することで、本来の目的であるリリースを頻繁に行えるシステムができる。

米国などではドメイン駆動設計は2003年に登場してからその考え方が普及し、そして今になってドメイン駆動設計をより簡単に実現できるマイクロサービス関連技術が登場してきた経緯があるのだと思う。翻って日本では、ドメイン駆動設計のバックグラウンドなしに、マイクロサービス関連のコンテナやKubernetesなど表面的な技術だけがブームになってきてしまっている気がする。ドメイン駆動設計を理解していない限り、マイクロサービス関連技術を使って、運用者と開発者、ユーザー企業とベンダー企業が幸せになれるようなシステムは作れないのではないかと思う。

ドメイン駆動設計の書籍

ドメイン駆動設計に関する書籍は、エリック・エヴァンスのドメイン駆動設計聖典である。機械学習のPRLMくらいの立ち位置だと思う。

それなりにボリュームがあるので、2,3ヶ月かけて読んでいく予定である。ドメイン駆動設計に関する気付きなどをここにまとめていけたらと思う。