SOAをまとめておく

先週金曜日に丸山先生レクチャーシリーズを聞きに行ったりして、まぁ、このシリーズに行ったのは既に4回目くらいだったりして、SOAとかJBIといった言葉をよく耳にしている。
また、このブログでもWeb2.0の引き合いにSOAを使ったりもしている。
そこで、この際、原点に立ち返って、SOA関連の言葉を整理しておくことにしたのだ。

SOA (Service Oriented Architecture)

SOAはバズワードとも評されるが、もともと特定の何かの技術を指すものではないので、曖昧なのは仕方ないのかも知れない。つまり、コンセプトを指す言葉なのだ。
そのコンセプトとは何かといえば、「システムをサービス指向で構築する」ということだ。
これだけでは何のことだか分からない。では、サービス指向とは何ぞや?となる。
「受注」とか「在庫確認」といったある程度のサイズの業務をサービスとして切り出し、外部から呼び出し可能な形で実装したものをサービスとする。このサービスを組み合わせてシステムを作るのがサービス指向なのだ。
最初に挙げたように、コンセプトを指す言葉なのだから、実現するための特定の技術は存在しない。

Webサービス

SOAの少し前に流行ったバズワード…である。Webで提供されているサービスであれば(YahooであれWikipediaであれ2chであれ)Webサービスと呼ぶのだから紛らわしい。
ここでいうWebサービスはそういうものではなく、HTTPベースで動くRPC技術のことだと言える。特に、XML Webサービスという名前を付けて区別されるが、最近はWebサービスと言えばそういうものだとされているようだ。
通信路がHTTP(またはHTTPS)であり、その上でXMLベースのSOAPというプロトコルで通信を行う。
Webサービスはその周辺技術も重要であり、ネットワーク上にどのようなWebサービスが存在するかのディレクトリとしてUDDI、そこに登録するためにWebサービスの内容を記述する言語としてXMLベースのWSDLがある。
Webサービスは、SOAの実現技術の本命とされている。つまり、SOAのサービスはWebサービスで実装されるということだ。

BPEL (Business Process Execution Language)

SOAでサービス(Webサービスで実装されている…本命技術)を連携させて動かすには、いつ、いかなる場合に、どのサービスを呼び出すかが重要である。
BPELは、その「いつ、いかなる場合に、どのサービスを呼び出すか」を記述するものだ。
BPELエンジン上で動作させる。

ESB (Enterprise Service Bus)

初期のWebサービスによるSOAでは、Webサービスを直接呼び出して行こうという発想であった。その連動は標準技術で行われるのだし、呼び出し先のWebサービスもUDDIで調べたのだから、これで問題ないだろうということだ。
ESBはさらに一歩進めて、とりあえず誰かにやって欲しい何かがあったらメッセージを作って、それをESBに投げ込んで適したサービスにたどり着くまでESBにルーティングしてもらおうというもの。(とはいっても、宛先はちゃんと指定するのだが…)
IBMやBEA等はESBを製品としてリリースするし、MicrosoftはWindows Vistaで、WCF(Windows Communication Foundation)というESB的機能を提供するのだと言う。

JBI (Java Business Integration)

JCPで検討されているJavaでのESBの標準仕様がJBIだ。ちなみにIBMとBEAは、その策定プロセスから脱退して、独自路線を歩もうとしている。

とりあえず、現時点では、こんなところだ。
大きく間違っている可能性があるので、これを元にして何かを考えるのは、やめてほしい。
さらに調査して、書き直していく予定だ。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。