サービス指向アーキテクチャ(SOA: Service-Oriented Architecture)とは、
「システム全体を**独立したサービス(機能単位)に分割し、サービス間を連携させて動かすアーキテクチャ」のことです。
それぞれのサービスは独立しており、標準化されたインターフェース(例:HTTP, SOAP, REST)を通じて通信します。
✅ SOA の具体例:ネットショッピングサイト
● 構成例:機能ごとに分けたサービス
| サービス名 | 主な責務 | 技術例(参考) |
|---|
| ユーザー管理サービス | 会員登録、ログイン、認証 | REST API + DB |
| 商品情報サービス | 商品一覧、検索、在庫表示 | REST API + Elasticsearch |
| カートサービス | カートに追加・削除、数量変更 | セッション管理 + DB |
| 決済サービス | クレジット決済、与信確認 | 外部API連携 |
| 発送・配送サービス | 発送準備、追跡番号管理 | メッセージキュー + DB |
| メール通知サービス | 購入完了通知、発送通知 | SMTP + メールAPI |
● 通信イメージ(サービス間の連携)
[Web UI] ↓[ユーザー管理サービス] ←→ [カートサービス] ↓ [商品情報サービス] ↓ [決済サービス] ↓ [発送サービス] ↓ [メール通知サービス]
✅ SOAの特徴と技術的背景
各サービスは疎結合(loose coupling)
インターフェースは標準プロトコル(HTTP/REST、SOAP など)
共通フォーマットでやりとり(JSON, XML)
サービスは再利用可能で、他のシステムにも組み込める
✅ SOAのメリット
| 項目 | 内容 |
|---|
| 再利用性 | 一度作ったサービスを他アプリでも使える(例:決済APIを他のサービスでも) |
| 保守性 | 機能単位で修正・拡張しやすい(他サービスに影響しにくい) |
| 拡張性 | 必要な機能だけスケールアウト可能 |
| 異種連携 | 異なる言語・プラットフォームでも連携可能(HTTPやSOAPなど) |
✅ SOAのデメリット
| 項目 | 内容 |
|---|
| 複雑な通信管理 | サービス間の呼び出しが増え、障害時の依存関係が複雑に |
| パフォーマンス | ネットワーク越しの呼び出しがボトルネックになる場合がある |
| トランザクション管理 | 分散システムでの一貫性確保が難しい(分散トランザクション問題) |
| モニタリング負荷 | どこで障害が起きているのか追跡しづらくなる |
✅ SOA と マイクロサービスの違い(簡易比較)
| 観点 | SOA | マイクロサービス |
|---|
| 単位 | 「機能単位のサービス」 | 「小さく独立したプロセス単位のサービス」 |
| 技術依存 | SOAP/ESBなど、重厚なミドルウェア利用 | 軽量なREST/HTTPが主流 |
| 開発・運用 | 組織的で大規模 | DevOps向け、小規模・自律分散開発がしやすい |
✅ まとめ
サービス指向アーキテクチャ(SOA)は、業務機能をサービス単位に分離し連携する構成
ネットショップ、基幹システム、銀行システム、自治体の電子申請などでよく用いられる
正しく設計すれば、再利用性・拡張性・保守性に優れる
ただし、通信の複雑さや依存関係の管理が課題
この記事へのコメント