SOA(サービス指向アーキテクチャ)とは

Michael Hickins|コンテンツ・ストラテジスト| 2024年3月28日

サービス指向アーキテクチャ(SOA)は、サービスと呼ばれる個々のコンポーネントから機能的でスケーラブルなソフトウェア・システムを構築することに重点を置いたソフトウェア設計手法です。サービスは互いにやりとりしてタスクを実行することができ、たとえば、一度サインインした人はさまざまな業務アプリケーションにアクセスできます。SOAでは、モジュール性、再利用性、相互運用性が重視され、ビジネスが複雑なアプリケーションをより小さく管理しやすい構成要素に分解することで、柔軟性とスケーラビリティが高まります。

サービスはアプリケーションにハードコードされません。そのかわり、サービスはレジストリに公開され、アプリケーションがサービスを使用したいとき、レジストリに最新バージョンを検索するように要求します。このようにして、アプリケーションの詳細な知識がない人がサービスを簡単に変更または更新することができます。SOAアプローチでは、変化するビジネス・ニーズへの適応や、関連する機能を提供するシステムとの統合が容易になります。

SOAでは、個々のサービスは疎結合され、必要に応じて通信やデータ転送を行うことができます。たとえば、SOAアプローチをクラウド・ソフトウェアの開発に取り入れることで、次のようなメリットが得られます。

  • 開発サイクルの短縮。既存のサービスを統合して再利用することで、開発者が多くの機能を最初から構築する必要性がなくなります。
  • メンテナンスの簡素化。SOAでは、大規模プロジェクトに連鎖的な影響を与えることなく、個々のサービスを独立してメンテナンスすることができます。デバッグとトラブルシューティングを分離して行うことで、稼働時間を延長することができます。
  • 適応性。SOAは後方互換性を維持し、今後の計画を容易にします。開発者は、古いサービスを新しい環境に導入したり、古いサービスを、更新されたハードウェアやクラウド・インフラストラクチャ活用する新しいバージョンに置き換えることもできます。
  • スケーラビリティ。サービスはSOA管理レイヤーによってモニターすることができるため、需要の増加によってパフォーマンスが過度に低下した場合、新しいサービスのインスタンスを開始してパフォーマンスを向上させることができます。サービスを使用するアプリケーションは、新しいインスタンスの存在を知ることはなく、操作レベルが許容範囲内に保たれていることを確認するだけです。

サービス指向アーキテクチャの例には、次のようなものがあります。

  • ユニバーサル・ログインを備えたサイトとアプリケーション:多くの企業は、従業員がたった1つのパスワードで必要なアプリケーションにアクセスできるアプリケーション環境を構築しようとしています。SOAアーキテクチャでは、認証管理を一連のサービスで扱い、それを企業のアプリケーションで使用します。
  • アプリケーション内でAIや分析を提供するアプリケーション:システムをクラウド・システムで運用する主な利点の1つは、クラウド・サービスを使用したアプリケーションの機能向上がシンプルに行えることです。クラウド・サービスには、データセットからグラフを作成するようなシンプルなものがあります。また、開発者が一連のサービス・コールを通じてアプリケーションにAI機能を追加できるようにするなど、複雑なものもあります。
  • オンライン小売業者:SOAでは、在庫データの取得、購入の追跡、セキュアな支払、「お客様もお気に入り」のレコメンデーションなどAI生成データの取得などのサービスを使用することで、eコマースサイトの開発と管理を容易にします。

SOA(サービス指向アーキテクチャ)とは

サービス指向アーキテクチャ(SOA)は、アプリケーションを特定の機能を提供し、ネットワーク経由で呼び出すことができる、自己完結型の再利用可能なビルディング・ブロック(サービス)で作成または補完する設計パラダイムです。各サービスには規定のスコープがあり、アーキテクチャ内の他のコンポーネントやサービスからアクセスすることで、システム全体の機能とパフォーマンスを向上させることができます。

サービス指向アーキテクチャにおけるサービスの例としては、決済処理サービス、顧客管理サービス、eコマースサイトに組み込むことができる製品レコメンデーションサービスなどがあります。また、地球の反対側にある都市の現在時刻を知らせるような、はるかにシンプルなサービスもあります。SOAを使用することの強力な利点の例として、サービスの使用に必要なアプリケーションに変更を加えることなく、支払いプロセッサを切り替えられることが挙げられます。

SOAは、個々のサービスを独立して開発、テスト、導入できるモジュール式の柔軟なソフトウェア・インフラストラクチャを実現します。2つの主な利点は、メンテナンスの容易さとスケーラビリティです。

OAは、アプリケーションのフレームワーク内でサービスを疎結合にすることで機能します。各サービスは、リクエストされた入出力を提供できるモジュールとして機能します。アプリケーションが使用しているサービスのバージョンを認識する必要はありません。そのかわり、レジストリをチェックし、必要な機能を提供する最新のサービスを見つけます。SOAモデルを用いて構築された小売業者のウェブサイトの次のようなワークフローを見てみましょう。

  1. 購入者が、認識されたメール・アドレスとパスワードを使用してシングルサインオンのログインを入力します。小売アプリケーションは、このログインを認証サービスに送信し、ログインが認証されるとカスタマー・プロファイルをロードします。
  2. その後、購入者は特定の製品を検索します。アイテム・リストは在庫サービスと連携しており、顧客の近隣の実店舗や配送センターの在庫状況のデータを取得します。
  3. 顧客は統合されたカート・サービスを使用してチェックアウトし、セキュアなトランザクションのための支払い処理サービスに連携します。
  4. トランザクションが完了すると、購入者は他のサービスを使用して在庫や出荷ロジスティクス・サービスからデータを取得し、注文状況を引き出すことができます。

SOAは、既製の方法でサービスの統合を可能にすることで、この種のサイトの開発をスピードアップします。この例では、小売業者はこれらのモジュールを個別に開発する負担が軽減されるだけでなく、サービスの更新を追跡する必要からも解放されます。IT部門は、機能性、セキュリティ、可用性において実績のある、十分に精査されたサービスをそのまま使用することができます。

SOA開発のカギは、モジュール式に考え、サービス統合の機会がどこにあるかを理解することです。クラウドで開発されたアプリケーションは、Webサービスとして導入されたSOAスタイルの膨大なサービスの配列を容易に利用することができます。

2024年にCIOが注目すべき10のクラウド・トレンド

モジュール式の柔軟なSOAインフラストラクチャは、クラウドを活用する企業に大きなメリットをもたらします。その他の主なトレンドは次のとおりです。

サービス指向アーキテクチャに関するFAQ

サービス指向アーキテクチャの例を教えてください。

サービス指向アーキテクチャの消費者向け例としては、ランナー向けのアプリケーションが挙げられます。このアプリケーションは、距離追跡や地図向けのカスタム・ツールを構築するのではなく、携帯電話のGPSデバイスやGoogleマップなどの既存の地図サービスのサービスを統合することができます。また、国立気象局から現地の天気を取得することもできます。これらのサービスからのデータをランナーのためにシームレスに表示することがこのアプリケーションの役割です。

SOAとマイクロサービスの違いについて教えてください。

SOAとマイクロサービス・アプリケーションは、ネットワークベースの関数呼び出しを通じてアプリケーションに機能を提供するという、同様の目標を持っています。しかし、SOAはより幅広く、通常はより高いレベルでの使用を考慮します。マイクロサービスはアプリケーション・レベルでの利用を考慮し、1つの極めて専門的なタスクを必要に応じて繰り返して行うサービスを提供します。たとえば、セキュアなログインのための認証プラグインはSOAの一部と考えられますが、パスワードを暗号化する反復可能なサービスはマイクロサービスです。マイクロサービスはSOAサービス内で呼び出されることもあれば、より大きなプロジェクトに統合されることもあります。この例では、認証サービスは、処理を実行する際に暗号化マイクロサービスを使用します。この2つの主な違いはスコープです。

サービス指向アーキテクチャの主な特徴を教えてください。

サービス指向アーキテクチャの主な特徴は次のとおりです。

  • より大規模なアプリケーションを構築する際に使用する、別々の内部開発またはサードパーティ・ライセンスによる独立したサービスの疎結合。
  • サービスをさまざまなソフトウェア・システムに接続し、アプリケーション・パフォーマンスに影響を与えることなく更新できる相互運用性。
  • アプリケーションの知識なしに、必要に応じてサービスを拡張および縮小できるスケーラビリティ。
  • ソフトウェア開発者が使用するサービスの維持に責任を負わないことによるメンテナンスの負荷軽減。

サービス指向アーキテクチャはどのような場所で使用されますか。

サービス指向アーキテクチャは、システムの要件を満たすスタンドアロン・サービスが存在する限り、ほぼすべてのアプリケーションに使用することができます。サービス開発のエコシステムの拡大により、ほとんどのソフトウェア・クリエイターはニーズを満たすサービスを見つけることができ、最もカスタムなプロジェクトであっても、ID認証や地図データの取得といった目的のために独立したサービスを利用することができます。