【まいくろさーびす】

マイクロサービス とは?

💡 大きなアプリを「小さなサービスの集合」として作る
📌 このページのポイント
モノリス vs マイクロサービス モノリス 単一アプリケーション ユーザー管理 注文処理 在庫管理 決済処理 単一 DB マイクロサービス API Gateway ユーザー サービス 注文 サービス 決済 サービス DB DB DB 各サービスが独立したDBを持つ → 独立してデプロイ・スケール可能
モノリスとマイクロサービスの構成比較
ひよこ ひよこ

モノリスと何が違うの?

ペンギン先生 ペンギン先生

モノリスは全機能が1つのアプリにまとまっている。マイクロサービスは機能ごとに独立したサービスに分割。ECサイトなら注文サービス、在庫サービス、ユーザーサービスが別々のプロセスで動く。モノリスは一体で、マイクロは分離。チームごとにサービスを担当して独立して開発・デプロイできるんだよ

ひよこ ひよこ

メリットは?

ペンギン先生 ペンギン先生

①独立デプロイ(注文サービスだけ更新可能)、②技術選択の自由(サービスAはGo、BはPython)、③障害隔離(1サービスの障害が全体に波及しにくい)、④スケーリング(負荷の高いサービスだけスケールアウト)。大規模組織で多チームが並行開発する場合に特に効果を発揮するよ

ひよこ ひよこ

デメリットは?

ペンギン先生 ペンギン先生

①分散システムの複雑さ(ネットワーク遅延、部分障害、データ整合性)、②運用コスト増(サービスごとにCI/CD監視ログ管理が必要)、③テストの難しさ(サービス間の統合テスト)、④分散トランザクションの難しさ。小規模チームや初期フェーズではモノリスの方が圧倒的に生産的なことが多いよ

ひよこ ひよこ

いつ導入すべき?

ペンギン先生 ペンギン先生

「マイクロサービスファースト」は避けるべき。まずモノリスで始めて、チーム規模が20人以上になる、デプロイ頻度がボトルネックになる、特定機能だけ別スケールが必要、というタイミングで段階的に切り出す。「モジュラーモノリス」(モノリス内で明確にモジュール分離)から始めるのがおすすめだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
マイクロサービス」って出てきたら「小さなサービスの集合でアプリを構築するアーキテクチャ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Microservices Architecture」 = マイクロサービスアーキテクチャ
💬 Micro(小さな)Services(サービス群)。2014年にMartin Fowlerが体系化したよ
← 用語集にもどる