SOAとWebサービス

SOAの議論の中で、気をつける必要があるのが「Webサービス」との関わりあいです。

Webサービス

狭義のWebサービスが目指すところは、IFと実装の分離です。
特にIF記述をWSDLによって記述され、実装はJava、.Net、あるいは何らかの言語によって実装されれば良いことになります。*1

このことが実装に依存することなく、複数のプラットフォームで連携ができることを達成してくれます。
一方で、関数呼び出しのような単一のサービスを意識しておりSOAP-RPCの利用が主になります。
サービスを実装するということがここでのポイントになります。

SOA

一方でSOAパラダイムにしたがって考えるとビジネスプロセスにしたがったフローを意識する必要があるのではないでしょうか。
その意味ではBPMが意識される中心になるといえます。
但し、システム的には「外部システムとの連携」というのがポイントでしょう。
と考えるとすれば、複数システムの連携がないシステムはSOAを適用するのは
オーバースペックかもしれません。(計画的に進める場合は別)

BPM

ビジネスプロセスマネージメントの略。
フローを意識したサービスの組み合わせを考えるのがこのBPMです。
組み合わせあるいは長さを意識することからSOAP-Documentが利用されます。

システム形状

「ハブ&スポーク」の形状と「バス」の形状の2つがあります。
従来はハブ&スポークになることが多く、段階的な開発というのが難しかったのですが
ESBを利用したバス形状にすることでESB間接続することで段階的な開発を可能にしました。

ESB

メッセージ基盤としてのESBには大きな役割があります。

  • Webサービスで話題になったUDDIの役割
  • 通信チャネルの多様性のサポート(JMS、HTTP、SMTP、ファイル転送)
  • CBRなどのルーティングの役割
  • ESB間通信
  • セキュリティ
  • QOS
  • サービスのデプロイ
  • メッセージバスの管理

ESB中心開発=メッセージ指向開発と言うこともできるかもしれません。
これは仮説ですが・・・

*1:この言語の差はWebサービスのプラットフォームに依存します。例えばAxisとか