私たちはこれまで、SOAの原則とこの原則の導入に成功する方法について論じてきた。7年間の記事を追えば、SOAがただの流行語から、企業への大規模な導入、ウェブサービス、そしてRESTと進化してきた流れを見ることができる。しかし、SOAの導入に成功したという話はあまり見つからない。SOAの導入に成功しているのはたった20%だという声もある。しかし、CISCOやeBayのような有名な成功例もある。
InfoQの編集者であるJean-Jacque Dubray氏はInfoQのためだけにSOAの状況を追ってきたわけではなく、個人としても積極的に発言してきた。JJはSOAの影響をうけSOAの原則に基づいたシステムの導入を成功に導いてきた。このような経験をもつJean-Jacques (JJ)がSOAの4つの成功要因についてブログに書いている。
- サービスのインターフェースとサービスの実装を疎結合にする
- ビジネスロジックをすべて標準化する
- サービスの変更を簡単にする
- 変更はサービスの利用者の準備ができるまで隠されていること
- 変更はサービスの利用者が準備するときに簡単に利用できること
- サービスのバージョニングは互換性に基づくこと
JJはこれらの原則に設計と実装のすべての段階で一貫して従えば、格段に成功しやすくなると言う。残念なことにJJは これらの原則について詳しく説明していないが、どれも比較的真っ直ぐに理解できる。JJが言うには"サービスインターフェース"は、
ほとんどの人がSOAで失敗します。サービスをオブジェクト指向の“クラス”のような抽象と捉えてしまうからです。サービスインターフェースは変更を明確にし管理可能にするための契約なのです。[...] サービスの境界を気にするのではなく、サービスインターフェースを可能な限り最高にすること(例えば、変更の管理を効率的にする)に投資するべきです。
しかし、過去にSOAの周りにあった別の関心領域についても書いている。ガバナンンスについてだ。
“統治しすぎ”はいけません。ガバナンスは最小限のままにしておきます。常識的な短い期間(3ヶ月から6ヶ月)の水平のデータガバナンスがはるかに重要です。というのは、情報モデルの変更はどのようなものであれ、サービスインターフェースに影響を与えるからです。
疎結合はSOAを成功させる中心的な要因だと見なされている。JJによれば次のような場合に疎結合を実現できる。
インターフェースの背後に実装されたビジネスロジックがサービス利用者とのやり取りのコンテキストの管理と分離されている場合です。この場合、インターフェースの利用者の記録のシステム的な状態を管理するのに関連するビジネスロジックに重複がなくなります。
サービスの再利用も、重要だと見なされていながら達成が難しいSOAの領域のひとつだ。2009年、InfoQではBurtonのRichard Watson氏の次のような発言を引用した。
サービスは再利用できないのかもしれません。しかし、他の方法で価値を生み出すために利用できます。適応的で維持するのにコストがかからないようにして、余計な部分を減らし、ポリシーを貫徹することでセキュリティとコンプライアンスを増せば別の望ましい成果物になります。再利用だけに着目してしまうとこのような成果物を見逃してしまいます。
JJはこの考えに賛成だ。
今作ったサービスが今後3年間、新しい顧客にサービスを提供し続けられることは不可能です。これは馬鹿げたことで、このような再利用を考えているなら簡単に失敗して"SOAは上手くいかない"というような間違った結論に達してしまうでしょう。SOAは(現実の世界と同じように)違ったかたちで再利用されます。古いサービスを再利用するのは新しい利用者ではありません。新しい利用者が利用するのは、古い利用者も再利用できる新しいバージョンのサービス(新しい利用者向けに変更された)なのです。
2009年の記事で、JJは次のようにコメントしている。
ほとんどの人がまだ理解していないことがあります。それは、SOAの"再利用"は普通人々が理解している"再利用"とは違うということです。SOAの再利用とは前方再利用、あるいは今朝聞いた言葉で言えば上方再利用とも言えるでしょう。SOAでは再利用は新しい利用者向けの新しいバージョンのサービスが既存の利用者もサポートすることです。2年間"再利用"できるサービスを設計するというのはほとんどおとぎ話です。SOAでは古い利用者が最新の利用者向けのサービスを"再利用"します。
最初に書いたとおり、これらの原則や考え方はJJの実地の経験に影響を受けている。あなたの経験ではどうだろうか。