先週金曜日に丸山先生レクチャーシリーズを聞きに行ったりして、まぁ、このシリーズに行ったのは既に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は、その策定プロセスから脱退して、独自路線を歩もうとしている。
とりあえず、現時点では、こんなところだ。
大きく間違っている可能性があるので、これを元にして何かを考えるのは、やめてほしい。
さらに調査して、書き直していく予定だ。