Monolithic Architectureの利点
- 配布が簡単だ
- どこでパッケージングしてもかまいませんし、 何とか配布するだけだ
- メンテナンスが比較的簡単(トラブルシューティングが簡単)
- 高価なサーバーリソースを最適化して使用できる
- 共通モジュール等の活用が非常に容易である
Monolithic Architectureメリットがあるケース
- 創業または新サービスを開始する場合
- 少数のチームメンバーで早くオープンしなければならない場合
- クラウド環境が使いにくい場合
- 金融等のセキュリティと安全性が最も重要な場合
- devopsなどの専門人材が不足している場合
- 手動でci/cdを実施しても大きな支障はないため
Monolithic Architectureのデメリット
- 水平拡張が難しい(scale out)
- 単一のdbへの依存性が大きい
- scale out : Aがサーバーからtrafficを受けることが難しく、隣にいるBに仕事を分けてあげること、問題は
Aが参照いるDBがBで分けてもDBの立場では同じことをするのと同じ
- 規模が大きくなるほど複雑さが増し、修正に対するコストと負担が増加
- 大規模なアプリケーション環境では, 単純な修正でも配布まで時間がかかることがある
- 障害時、アプリケーション全体に大きな影響を受けることになる
Monolithic Architectureのデメリットがあるケース
- MSA、Cloud環境に十分熟練した開発者が多い場合
- Devopsに熟練した開発者が多ければ、クラウド環境で最大限活用できる
- 多くのサービスが同時多発的に開発を進める場合
- =ソースの配布、修正が多い=共通モジュールがあるサービスの場合は、コミュニケーションの問題が発生する
- セキュリティと安定性よりも速い機能開発と配布が重要なサービス
- 顧客の緊急度が高いニーズを満たさなければならない場合をいう。 他のサービスに影響を最大限与えず、ビジネスドメインで早く配布をして顧客にビジネスインパクトを与えることができる、そのような機能を早く開発して、他のサービスに影響を与えずに配布を早くしてビジネス的に大きな効果を出すことができる。
MSAが注目されている理由
例えば韓国のネカラクベ(NAVER、カカオ、LINE、coupang、配達の民族)の場合、顧客が感じる不便さ、顧客が望む機能をとても早く配布ができている!
その企業らは大きなアーキテクチャはMSAを採用している。会社はニズが何かを知り、早く配布して満足させることが何より重要にしているため、MSA環境に慣れなければならない。MSA環境で早くアジャイルにて問題を早く解決し、早く配布できるチームは、より多くの顧客、より多くのお金を稼げる環境が整えられるようになるそうです!