LESSON 15分

ストーリー

これまでの月で、あなたは設計原則、データベース、APIと着実にスキルを積み上げてきました。しかし、ある日チームミーティングで 高橋アーキテクト がこう切り出しました。

高橋アーキテクト
うちのモノリス、もう限界だ。デプロイに3時間かかるし、支払いモジュールの修正がユーザー検索を壊した。分散化を検討しよう
あなた
分散…って、マイクロサービスですか?
高橋アーキテクト
そう。ただし、銀の弾丸じゃない。分散には分散の嵐がある。その嵐を乗りこなす力をつけよう

こうして、あなたの Month 5 — 分散システムへの旅が始まります。


モノリスとは何か

モノリスとは、すべての機能が1つのデプロイ単位に含まれるアーキテクチャです。

// モノリスの例:すべてが1つのアプリケーション
class ECommerceApp {
  // ユーザー管理
  async createUser(data: UserData): Promise<User> { /* ... */ }

  // 商品管理
  async listProducts(filter: Filter): Promise<Product[]> { /* ... */ }

  // 注文処理
  async createOrder(order: OrderData): Promise<Order> { /* ... */ }

  // 支払い処理
  async processPayment(payment: PaymentData): Promise<Receipt> { /* ... */ }

  // 通知
  async sendNotification(msg: Message): Promise<void> { /* ... */ }
}

モノリスは悪ではありません。小規模なチームやプロジェクト初期では最も効率的な選択です。


なぜマイクロサービスへ移行するのか

モノリスが成長すると、以下の問題が顕在化します。

問題具体例
デプロイの遅延小さな修正でも全体をビルド・デプロイ
スケーリングの非効率検索だけ負荷が高くても全体をスケール
障害の連鎖支払いモジュールのバグが全システムをダウン
チーム間の衝突10チームが1つのコードベースを変更
技術的負債の蓄積モジュール境界が曖昧になり依存が絡まる

マイクロサービスの基本構造

マイクロサービスは、ビジネスドメインに沿って分割された、独立してデプロイ可能な小さなサービスの集合です。

┌─────────────┐  ┌─────────────┐  ┌─────────────┐
│   User       │  │   Product    │  │   Order      │
│   Service    │  │   Service    │  │   Service    │
│              │  │              │  │              │
│  [User DB]   │  │ [Product DB] │  │  [Order DB]  │
└──────┬───────┘  └──────┬───────┘  └──────┬───────┘
       │                 │                 │
       └────────┬────────┴────────┬────────┘
                │   API Gateway   │
                └────────┬────────┘

                      Client

各サービスが独自のデータベースを持ち、APIを通じてのみ通信します。


歴史的な流れ

1990s〜: モノリス全盛


2000s〜: SOA(Service-Oriented Architecture)
    │    → ESBによるサービス連携、しかし複雑すぎた

2010s〜: マイクロサービス
    │    → Netflix, Amazon が先駆者

現在: クラウドネイティブ + サーバーレス
         → コンテナ + オーケストレーションが標準に

まとめ

ポイント内容
モノリスとはすべてが1つのデプロイ単位
移行の動機デプロイ遅延、スケーリング問題、障害連鎖
マイクロサービスとはドメインに沿った独立デプロイ可能なサービス群
注意点万能ではなく、分散特有の課題がある

チェックリスト

  • モノリスの特徴と利点を理解した
  • マイクロサービスへ移行する動機を説明できる
  • マイクロサービスの基本構造を理解した

次のステップへ

次は分散システムの根幹となる「CAP定理」と「分散コンピューティングの落とし穴」を学びます。理論的な基盤を固めましょう。


推定読了時間: 15分