この文に先立ち、最近新しいプロジェクトを進めながら初めてMSAについて知り、実際にMSArchitectureに従ってプログラミングをしました。 プロジェクトを進めながらMSAについて魅力を感じてもっと深く調べたいと思ったのでMonolithic Architectureと共にMSAについて勉強した内容を記録していきたいと思います!
Monolithic Architectureとは
- MSA(micro service architecture) という用語ができる前は存在しなかった。(なぜならモノリスアーキテクチャを当たり前のように使用したから)
- 基本的に、あらゆる種類のサービスが1つのアプリケーションで構成されているアーキテクチャを意味
- 特徴
- 一つのプロセスで構成
- すべてのサービスが一つのdb endpointを使用
- dbに問題が生じると関連したサービスが一度に死んでしまうディメリット
- dbを管理するリソースはMSA環境よりはるかに少ないリソースで管理できるというメリット
- 1行だけコード修正されても、すべてのアプリケーションの再配布が必要です
- シングルあるいはマルチモジュールで構成することはできるが、ciの単位が変わるだけで、cd(配布)の範囲は全体
Monolithic Architectureが Generalだったわけ
- Easy
- 開発してビルドして出たoutputをサーバーでrun
- No time, No Human Resource
- 考慮するのがそんなに多くない
-
IDC server が一般的=> サーバーが多いほど多くのリソースが要求される
- on-premise方式のidcを使用(モノリスだから1つのサーバのリソースで十分!)
Monolithic Architecture
シングルモジュールとマルチモジュール
モノリスアーキテクチャでモジュールの構成方法が異なるが、代表的にシングル/マルチモジュールアーキテクチャが存在し、特徴が少し異なる
- マルチモジュール
- 役割、サービスごとにモジュール化されている
- 凝集性、結合度が低い
- モジュール間インタフェース定義が必要
- 最上位マルチパッケージ
- 柔軟性、拡張性が比較的よい
- マルチモジュールアーキテクチャ
マルチモジュールアーキテクチャの場合、mvcアーキテクチャがドメインまたはサービスごとにパッケージ構造が組まれることになる。
モジュール別にビルドされて複数のjarファイルができるようになる。そして、普通マルチモジュールが参照するcommonモジュールがあるが、commonモジュールが修正されると、commonモジュールを使用するそれぞれのモジュールも一緒に修正する必要がある。
結局、マルチモジュールであれシングルモジュールであれ、共通して使われるソースが修正されれば、これを使用するすべての部分が一緒に影響を受けることになるモノリスという限界は同じ!