モノリシックアーキテクチャは、アプリケーションのすべての機能が一つの開発およびデプロイされるコードに集約されることを前提としています。
サービス指向アーキテクチャ(SOA)、特にマイクロサービスは、アプリケーションが明確なインターフェース(通常はネットワーク)を介して相互作用するモジュールのセットで構成されるアプローチです。
モノリシックが有利な場合:
SOAが有利な場合:
比較の例: モノリス:
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // 注文、ユーザーのロジック — すべて一つのアプリケーションに } }
SOA — APIによる相互作用:
GET /user/42 # ユーザーサービスへのリクエスト GET /order/532 # 注文サービスへのリクエスト
主な特徴:
SOAはサービス間でデータベースを共有しますか?
通常、サービスは弱い結合のためにデータを分けます。共通データベースは移行段階では許容されるが、理想的には各サービスに個別のDBがあるべきです。
モノリスは常にパフォーマンスが悪いですか?
いいえ、モノリスは小規模なボリュームではパフォーマンスが良い場合もあります。なぜなら、余計なネットワーク呼び出しやメモリの分割がないからです。
モノリスを「一度に」マイクロサービスに移行できますか?
いいえ、通常、コンテキストの境界を特定し、それをサービスに変換することで段階的に移行します。