モノリスと何が違うの?
モノリスは全機能が1つのアプリにまとまっている。マイクロサービスは機能ごとに独立したサービスに分割。ECサイトなら注文サービス、在庫サービス、ユーザーサービスが別々のプロセスで動く。モノリスは一体で、マイクロは分離。チームごとにサービスを担当して独立して開発・デプロイできるんだよ
メリットは?
①独立デプロイ(注文サービスだけ更新可能)、②技術選択の自由(サービスAはGo、BはPython)、③障害隔離(1サービスの障害が全体に波及しにくい)、④スケーリング(負荷の高いサービスだけスケールアウト)。大規模組織で多チームが並行開発する場合に特に効果を発揮するよ
デメリットは?
①分散システムの複雑さ(ネットワーク遅延、部分障害、データ整合性)、②運用コスト増(サービスごとにCI/CD、監視、ログ管理が必要)、③テストの難しさ(サービス間の統合テスト)、④分散トランザクションの難しさ。小規模チームや初期フェーズではモノリスの方が圧倒的に生産的なことが多いよ
いつ導入すべき?
「マイクロサービスファースト」は避けるべき。まずモノリスで始めて、チーム規模が20人以上になる、デプロイ頻度がボトルネックになる、特定機能だけ別スケールが必要、というタイミングで段階的に切り出す。「モジュラーモノリス」(モノリス内で明確にモジュール分離)から始めるのがおすすめだよ