IT技術関連

SOA(サービス指向アーキテクチャ)についてのメモ

IT技術関連

そもそも、SOAってなに?

SOA(Service-Oriented Architecture) は、
👉 システムを「サービス」という小さな部品に分けて組み合わせる設計思想 のことです。

つまり、

  • 大きなシステムを全部作り込むのではなく
  • 小さな「サービス」単位で作って
  • 必要に応じてサービス同士をつなげる

こんなイメージです。

たとえば、SOAを使うと?

例えば、ネットショップのシステムを考えてみると・・・

  • 顧客管理サービス
  • 商品管理サービス
  • 注文管理サービス
  • 支払いサービス

みたいに、それぞれを独立したサービスとして作ります。

すると、

  • 顧客管理だけ改修したい → そのサービスだけ直せばOK
  • 注文管理を別システムから呼び出したい → サービス単位で連携できる

こんなふうに、柔軟で再利用しやすいシステム が作れるんです!

SOAのメリット

開発・改修がラクになる

  • 小さい単位で作るから、影響範囲を最小限にできる

再利用できる

  • 例えば、「顧客管理サービス」は他のシステムでも使い回せる

システム間の連携がしやすい

  • 異なるシステムでも、サービス同士が標準的な方法(APIなど)でやりとりできる

ビジネスの変化に強い

  • 必要な部分だけ改修・追加できるから、スピーディーに対応できる

SOAを実現するための基本

SOAは単なるアイデアだけじゃなくて、実現するための技術や仕組みもセットで考えられています。

📌 主な要素

  • Webサービス(SOAP、REST API)
    → 標準的な通信方式でサービス同士が連携
  • ESB(Enterprise Service Bus)
    → サービス同士のやりとりを仲介してくれるツール
  • サービスカタログ
    → どんなサービスがあるか一覧で管理する

最近は、特にAPI連携マイクロサービスアーキテクチャが広がっているので、
SOAの考え方はますます重要になっています。

SOAとマイクロサービスの違いって?

よく出てくる質問ですが、
🔹 SOA「システムをサービス単位で設計する」 という大きな考え方
🔹 マイクロサービスその考え方をもっと小さい粒度で徹底した実装スタイル

ざっくり言うと、

SOAマイクロサービス
サービスの大きさわりと大きめ(システム単位)もっと小さい(機能単位)
通信SOAP中心(最近はRESTも)軽量なREST API中心
データベース複数サービスで共有することもあるサービスごとに独立データベースを持つ
運用方法重厚なESBなどを使うこともコンテナ技術(Docker/Kubernetes)

マイクロサービスはSOAをさらに進化させたもの と思うとイメージしやすいです!

SOAを導入するときの注意点

サービス設計が甘いと逆に複雑になる
➡ どこまでを「ひとつのサービス」とするかがカギ

標準化・ルール作りが大事
➡ サービス間でバラバラな仕様だと、連携が破綻する

ガバナンス(統制)が必要
➡ 勝手にサービスを増やすと、全体管理ができなくなる

まとめ

SOA(サービス指向アーキテクチャ) は、
👉 「システムをサービス単位に分けて、柔軟に組み立てる設計思想」

  • 変化に強く
  • 開発・改修しやすく
  • サービスを再利用できる

という大きなメリットがある一方で、
設計やルールづくりをしっかりしないと、逆に複雑になってしまうリスクもあります。

最近流行りのマイクロサービスAPIエコノミーも、
SOAの考え方がベースにあるので、今後も押さえておきたいキーワードですね!

コメント

タイトルとURLをコピーしました