この記事で分かること
- なぜMVCというパターンが生まれたのか
- なぜSOAという考え方が必要とされたのか
- なぜESBが必要とされ、その後どうなったのか
「アーキテクチャの変遷」シリーズの3回目です。前回まではクライアントサーバーと3層アーキテクチャを扱いましたが、今回は1つのアプリケーションの内部構造であるMVC(Model-View-Controller)と、複数のシステムをまたいで機能を組み合わせるSOA(Service Oriented Architecture)・ESB(Enterprise Service Bus)について、考案者本人のページ・OASIS・IBM・AWSの公式資料で確認できた事実に沿って整理します。
単一のコードベースで作られたアプリケーション:モノリシックアーキテクチャ
AWS公式ページによると、モノリシックアーキテクチャとは「単一のコードベースで複数のビジネス機能を実行する、伝統的なソフトウェア開発モデル」であり、すべてのソフトウェアコンポーネントが相互に依存している状態を指すと説明されています1。同ページは、この構造の課題として「小さな変更であっても、コードベース全体に影響するため、より大きなリスクを伴う」ことを挙げ、また特定の機能だけ需要が増えた場合でも、アプリケーション全体をスケールしなければならない点を課題として説明しています1。
なぜMVCというパターンが生まれたのか
MVCを考案したTrygve Reenskaug氏本人のページによると、Reenskaug氏は1978年夏から1979年夏にかけて、Xerox PARCの学習研究グループ(LRG)に客員科学者として在籍していたと記されています2。同ページは、「MVCは、大規模で複雑なデータセットをユーザーが制御するという課題に対する一般的な解決策として構想された」と述べています2。さらに同ページは、「MVCの本質的な目的は、人間のユーザーの思考モデルと、コンピュータの中に存在するデジタルモデルとの間のギャップを埋めることにある」と記しています2。
出典から確認できる理由は、大規模で複雑なデータをユーザーが扱えるようにするという課題があり、その解決のためにユーザーの思考モデルとコンピュータ内部のデータ構造とのギャップを埋める仕組みが必要だった、という点です2。
MVCは、AWSが定義する「単一のコードベース」であるモノリシックアーキテクチャの内部を整理する考え方の1つだと考えられます。これは筆者の解釈です。Reenskaug氏本人のページはMVCを1つのアプリケーション内部の構造として説明しており2、AWSが述べるモノリシックアーキテクチャも単一のコードベース内の構造を指すため1、両者は同じ「1つのアプリケーションの内部」を対象にしていると考えられますが、この2つを明示的に結びつける記述は、いずれの出典にもありません。
なぜSOAという考え方が必要とされたのか
IBM公式サイトによると、SOAは1990年代後半に登場したソフトウェアアーキテクチャだと記されています3。
OASISが2006年10月12日にOASIS Standardとして承認した「Reference Model for Service Oriented Architecture v1.0」によると、SOAは「異なる所有権ドメインの管理下にある可能性のある、分散した機能を組織化し活用するためのパラダイム」と定義されています4。同文書は、SOAベースのアーキテクチャを推進する主な動機として、「大規模なエンタープライズシステムの管理可能な成長を促進すること」「インターネット規模でのサービスの提供・利用を促進すること」「組織間協力におけるコストを削減すること」の3点を挙げています4。
AWS公式ページは、SOAを採用する理由について、複数の業務プロセスで同じ機能(例として認証機能)が必要な場合に、その機能を1つのサービスとして作成し、複数のアプリケーションで再利用できる点を挙げています5。同ページはまた、「小さなサービスは、モノリシックなアプリケーションにおける大きなコードの塊よりも、作成・更新・デバッグが容易である」とも述べています5。
| 観点 | モノリシックアーキテクチャ | SOA |
|---|---|---|
| 構成 | 単一のコードベースで複数のビジネス機能を実行する1 | サービスという単位に分けた機能を組み合わせて構築する5 |
| 変更時のリスク | 小さな変更でもコードベース全体に影響するリスクがある1 | 個々のサービスを他に影響を与えずに作成・更新・デバッグできる5 |
| 再利用性 | (出典に個別の記述なし) | 同じ機能を複数のアプリケーションで再利用できる5 |
なぜESBが必要とされたのか
IBM公式サイトによると、ESBを使わずにSOAを実装する場合、「各アプリケーションの所有者は、必要なサービスに直接接続し、それぞれのサービスインターフェースに合わせてデータ変換を行う必要がある」とされ、「これは(インターフェースが再利用可能であっても)多くの作業であり、各接続がポイントツーポイントであるために、将来的に大きな保守上の課題を生む」と説明されています3。
同サイトは、ESBを「中央集約型のソフトウェアコンポーネントが、アプリケーション間の統合を実行するアーキテクチャパターン」と定義しています3。ESBを導入すると、ソフトウェアアプリケーションは単にESBに接続するだけでよくなるとも説明されています3。IBMはESBを「SOAの必須コンポーネント」と位置づけています3。
その後どうなったか
IBM公式サイトによると、「多くの組織でESBはうまく導入された一方、他の多くの組織ではESBがボトルネックと見なされるようになった」とされ、「あるインテグレーションへの変更や機能追加が、同じインテグレーションを使う他のインテグレーションを不安定にすることがあった」と説明されています3。同サイトは、この課題を踏まえて、「ESBを、相互依存のない細粒度の分散した統合コンポーネントに分割し、各アプリケーションチームが自分たちで所有・管理できるようにする」という「アジャイル統合」という考え方が生まれたと述べています3。
まとめ
- モノリシックアーキテクチャは、単一のコードベースで複数のビジネス機能を実行する構造で、小さな変更でも全体に影響するリスクを伴います(AWS公式)。
- MVCは1978年から1979年にかけてXerox PARCで、大規模で複雑なデータをユーザーが制御するという課題への解決策として、考案者本人であるReenskaug氏によって作られました(Reenskaug氏本人ページ)。MVCとモノリシックアーキテクチャを結びつける説明は筆者の解釈です。
- SOAは1990年代後半に登場し、異なる所有権ドメインにまたがる分散機能を組織化・活用するためのパラダイムです。OASISは2006年10月12日にその参照モデルを標準として承認しました(OASIS公式・IBM公式・AWS公式)。
- ESBはSOAの必須コンポーネントとされ、ポイントツーポイント接続がもたらす保守上の課題を、中央集約型のバスで解決しようとしましたが、後にボトルネックと見なす組織も現れ、アジャイル統合という考え方が生まれました(IBM公式)。
シリーズの他の記事
用語解説
- モノリシックアーキテクチャ: 単一のコードベースで複数のビジネス機能を実行する、伝統的なソフトウェア開発モデルのこと1。
- MVC(Model-View-Controller): アプリケーションの内部を、ユーザーの思考モデルとコンピュータ内のデジタルモデルとのギャップを埋めるために考案されたパターンのこと2。
- SOA(Service Oriented Architecture): 異なる所有権ドメインにまたがる分散した機能を、サービスという単位で組織化・活用するためのパラダイムのこと4。
- ESB(Enterprise Service Bus): 中央集約型のソフトウェアコンポーネントが、アプリケーション間の統合を実行するアーキテクチャパターンのこと3。
- ポイントツーポイント接続: アプリケーション同士が、それぞれ個別に直接接続し合う統合方式のこと3。
- OASIS: SOAの参照モデルなどを標準文書として策定した標準化団体のこと4。
出典
- Trygve/MVC | Trygve Reenskaug / 参照日: 2026-09-30
- Reference Model for Service Oriented Architecture v1.0 | OASIS / 参照日: 2026-09-30
- What Is an Enterprise Service Bus (ESB)? | IBM / 参照日: 2026-09-30
- What is SOA? - Service-Oriented Architecture Explained | AWS / 参照日: 2026-09-30
- Monolithic vs Microservices - Difference Between Software Development Architectures | AWS / 参照日: 2026-09-30
この記事はAIの支援で下書きを作成し、公開前に人が確認しています。
-
Monolithic vs Microservices - Difference Between Software Development Architectures | AWS ↩ ↩2 ↩3 ↩4 ↩5 ↩6
-
What Is an Enterprise Service Bus (ESB)? | IBM ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9
-
Reference Model for Service Oriented Architecture v1.0 | OASIS ↩ ↩2 ↩3 ↩4
-
What is SOA? - Service-Oriented Architecture Explained | AWS ↩ ↩2 ↩3 ↩4 ↩5