アーキテクチャパターン

SOA(サービス指向アーキテクチャ) えすおーえー(さーびすしこうあーきてくちゃ)

サービス指向アーキテクチャマイクロサービスESBWebサービス疎結合エンタープライズ統合
SOAについて教えて

簡単に言うとこんな感じ!

SOAは「システムの機能を小さな”サービス”に分けて、それをつなぎ合わせてシステム全体を作る考え方」だよ!レゴブロックみたいに、「顧客管理」「在庫管理」「請求処理」をそれぞれ独立したブロックとして作って、組み合わせる感じなんだ。


SOAとは

SOA(Service-Oriented Architecture、サービス指向アーキテクチャ) とは、システムの機能を「サービス」という独立した部品単位で構築し、それらをネットワーク経由で連携させることでシステム全体を実現するアーキテクチャ(設計思想)のことです。2000年代に大企業のシステム統合手段として広く普及しました。

従来のシステムは「モノリシック(一枚岩)」と呼ばれ、すべての機能が一つの大きなプログラムに詰め込まれていました。これでは一部を変更するだけで全体に影響が出てしまいます。SOAでは機能を疎結合(そけつごう)な独立サービスとして分離するため、「在庫管理サービスだけ改修する」「外部の決済サービスをつなぎ替える」といった柔軟な対応が可能になります。

ビジネスの視点で言えば、「営業システム・経理システム・物流システムがバラバラに動いている大企業が、それらを共通のルールでつなぎ、データを一元的に流せるようにする」ための設計方針です。システム発注の際に「既存システムとどうつなぐか」を考えるとき、SOAは重要なキーワードになります。


SOAの核心:サービスとは何か

SOAにおける「サービス」には、満たすべき4つの原則があります。

原則意味たとえ話
疎結合各サービスは互いの内部実装を知らない電話口で話す相手が、どこにいるか知らなくてもいい
抽象化内部の詳細を隠し、インターフェースだけ公開する自販機は中の仕組みを知らなくても使える
再利用性同じサービスを複数のシステムから呼び出せる「消費税計算サービス」を全社で使い回す
発見可能性どんなサービスが存在するか検索・把握できる社内サービスカタログで一覧確認できる

SOAの覚え方

サービスは疎で抽象的、再利用して発見できる(さ・ちゅ・さい・はっ)」と4原則をセットで覚えましょう。

SOAを構成する主要コンポーネント

┌─────────────────────────────────────────────┐
│              サービス消費者                    │
│  (営業システム / ECサイト / モバイルアプリ)  │
└───────────────────┬─────────────────────────┘
                    │ サービス呼び出し
┌───────────────────▼─────────────────────────┐
│          ESB(エンタープライズ・サービス・バス) │
│  ルーティング/変換/監視/セキュリティ制御    │
└──────┬──────────────┬────────────────┬──────┘
       │              │                │
┌──────▼──────┐ ┌────▼────┐ ┌──────▼──────┐
│ 顧客管理    │ │ 在庫管理 │ │  請求処理   │
│ サービス    │ │ サービス │ │  サービス   │
└─────────────┘ └─────────┘ └─────────────┘
  • ESB(Enterprise Service Bus):各サービスをつなぐ”共通バス”。メッセージのルーティング・形式変換・認証などを一手に担う
  • サービスレジストリ:どんなサービスが存在し、どこにあるかを管理する「サービス名簿」
  • WSDL(Web Services Description Language):サービスの仕様書。「何が使えて、どう呼ぶか」を記述する

歴史と背景

  • 1990年代後半:大企業内でシステムがバラバラに乱立する「サイロ化」が深刻化。部門ごとに別々のシステムが存在し、連携できない問題が顕在化
  • 2000年:Webサービス技術(SOAP・WSDL・UDDI)が登場。ネットワーク越しにシステムを呼び出す標準が整備される
  • 2002〜2003年:Gartner社がSOAを大企業のシステム統合の主流アーキテクチャとして提唱。「SOAでシステムを再構築せよ」が流行語に
  • 2005〜2010年:多くの大企業・金融機関でSOA導入プロジェクトが走る。ESB製品(IBM WebSphere、Oracle Service Busなど)が普及
  • 2010年代前半:SOAの複雑さ・ESBのボトルネックが批判を浴びる。「重すぎる」「導入コストが高い」という声が高まる
  • 2014年以降:SOAの反省を踏まえたマイクロサービスアーキテクチャが登場。よりシンプルで小さなサービス分割の考え方が主流に
  • 現在:SOAの設計思想はマイクロサービスAPI経済(APIエコノミー)継承されており、考え方そのものは現役

SOA・マイクロサービス・モノリシックの比較

アーキテクチャ比較:モノリシック / SOA / マイクロサービス モノリシック 顧客管理 在庫管理 請求処理 レポート すべて一体。変更が全体に波及 SOA ESB(共通バス) 顧客管理SVC 在庫管理SVC 請求処理SVC レポートSVC ESBで集中管理。粒度は大きめ マイクロサービス 顧客API 在庫API 請求API 通知API 検索API 認証API 小さく分散。独立デプロイ可能
比較軸モノリシックSOAマイクロサービス
サービス粒度分割なし大きめ(業務機能単位)小さい(機能単位)
連携方式内部呼び出しESB経由REST API / メッセージキュー
変更のしやすさ低い中程度高い
導入コスト低い高い(ESB構築が重い)中〜高い
向いている規模小〜中規模大規模エンタープライズ中〜大規模
代表的な製品従来型パッケージIBM WebSphere ESBKubernetes / AWS ECS

SOAとマイクロサービスの違いを一言で

  • SOA:「大きなサービスをESBという”集中管制塔”でつなぐ」
  • マイクロサービス:「小さなサービスが直接・分散的にやり取りする」

SOAが「中央集権型の高速道路網」なら、マイクロサービスは「多数の路地が直接つながる街路網」のイメージです。


関連する規格・RFC

規格・番号内容
OASIS SOA Reference ModelSOAの概念・用語を標準化したOASIS(標準化団体)による参照モデル
OASIS Web Services Security (WS-Security)SOAにおけるWebサービスのセキュリティ標準
W3C WSDL 2.0Webサービスのインターフェース記述言語の標準仕様
W3C SOAP 1.2SOAで広く使われるXMLベースのメッセージプロトコル

関連用語

  • マイクロサービス — SOAの反省から生まれた、より小さな粒度でサービスを分割するアーキテクチャ
  • ESB(エンタープライズサービスバス) — SOAでサービス間の通信を仲介する共通インフラ
  • API — サービス同士が通信するための「窓口」となるインターフェース
  • REST — Webサービス・APIの設計スタイル。マイクロサービスで主流
  • SOAP — SOA時代に広く使われたXMLベースのWebサービスプロトコル
  • 疎結合 — システム部品が互いに依存しすぎない設計原則。SOAの根幹
  • モノリシックアーキテクチャ — SOAが解決しようとした「一枚岩型」の従来システム設計
  • Webサービス — ネットワーク越しに機能を提供する仕組み。SOAの技術的基盤