サービス指向アーキテクチャ(SOA)とは、アプリケーションコンポーネントが、ネットワークを介した通信プロトコルによって、他のコンポーネントにサービスを提供するソフトウェア設計のスタイルです。サービス指向アーキテクチャの基本原則は、ベンダー、製品、技術に依存しません。
SOAを都市の公共交通機関のようなものと考えてみてください。都市には、バス、電車、路面電車など、さまざまなタイプの交通サービスがあります。これらはSOAにおける「サービス」のようなものです。これは、SOAにおけるコンポーネント同士の相互作用に似ています。コンポーネント同士は、相手の動作を知る必要はなく、そのコンポーネントができると言っていることを実行できればいいのです。
この街では、各交通機関の標準的な利用方法もあります。例えば、バスは前のドアから入って後ろのドアから出るとか、電車は切符を買ってから乗るとか。これがSOAにおける「プロトコル」であり、サービス同士が通信するための標準的な方法です。
さて、自宅から街の反対側にあるスタジアムに行く必要があるとします。バスで駅まで行き、電車で別のバスに乗り、最後にそのバスでスタジアムに向かうとします。旅の各行程は異なるサービスによって行われますが、それらはすべて、あなたを目的地まで連れて行くために連携しています。これが、SOAの実際の姿なのです。
プラットフォームには、ユーザー認証、在庫管理、支払い処理など、個別のサービスがあるかもしれません。ユーザーが購入するとき、プラットフォームはこれらのサービスすべてを使用してトランザクションを完了します。
このアプリは、現在の天気データ、予報、地図など、さまざまなサービスからデータを引き出すことができます。天気予報を確認する際、アプリはこれらすべてのサービスを利用して、天気の状況を完全に把握できます。
いずれの場合も、重要なのは、各サービスが独立しており、定義されたプロトコルによって他のサービスと相互作用することです。これは、都市に例えると、交通サービスのようなものです。