「SOA」という言葉について知る必要が出てきたので、少しだけ調べてみました。
SOAとは
SOAとは、システム全体を「サービス」と呼ばれる部品を組み合わせることによって構築しようという手法、およびシステムアーキテクチャのことを指します。
部品を組み合わせてシステムを構築する手法は、オブジェクト指向などが従来にも存在していました。
それらの従来手法とSOAの違いは、組み合わせる部品(SOAにおけるサービス)の定義にあります。
SOAにおけるサービスは、実際に人間にとって意味のある単位を最小単位としています。
「人間にとって意味のある」というのは曖昧な表現ですが、しばしば業務上の処理単位を示しているようです。
(注文受付、在庫確認、発注処理など)
つまりSOAとは、人間にとって意味のある業務上の処理を単位としてサービスを定義し、それらを組み合わせることで一つの大きなシステムを作り上げることのことを指すのでしょうか。
SOAにおけるサービスは、グローバルに公開され、組織外における利用も想定されているため、標準的な技術によって実現、呼び出し可能であることが必要です。
サービスの呼び出し方法・インタフェースとして、しばしばWebサービスが利用されるみたい。
Webサービスは、XML、SOAP、WSDL、UDDIなどの標準的な技術によって構成されるので、SOAのサービスが満たすべき条件はクリアしていますね。
サービスの処理部分は何で実装されていても(Java or .Net or その他)いいようです。
また、複数のサービスを連携して一つのシステムを作り上げる必要があるため、それらの連携を記述する方法も標準化されている必要があります。
連携手順の記述言語としては、BPELと呼ばれるXMLベースの言語が用いられるみたい。
BPELは、BPMNという表記法によって図として作成することができ、視覚的に簡単に作成可能だとか。
まとめ
少し勉強した感じですが、すごく便利そうな概念ですね。
実際に世の中にSOAの考え方で構築されたシステムってどのくらい稼働しているんだろう。
あと、業務システムだけじゃなく、たとえば家電機器の連携に使ったりしても面白いんじゃないかと思いました。
既に研究されているような気もしますが。
新しいことを勉強するのってすごく楽しいですね。
これからも色々勉強したことをメモしていきまーす。
参考文献
- Newer: 「BPEL4People」について少し調べてみました
- Older: 博士課程入学試験の参考書を入手