2006年 4月 14日 金曜日 SOAのバリューをITの側面から眺めてみましょう。
ここでは「時間」「空間」「リソース」の3つの軸を用いて整理してみたいと思います。
まずは「時間」から。
ここで一つ注意ですが,SOAは(SOAに限らずどんなテクノロジーでも)万能ではありませんし,SOAで言われている全ての機能を使用する必要もありません。例えば「SOAではBPELによるビジネス・プロセス実行という処理が余分に増えるから性能が劣化する」というような声も聞かれますが,それは正しくないと考えています。というのも,BPM/BPELを使用しないSOAも可能だからです。この辺りは,機能要件やサービスレベル要件のトレードオフになります。ビジネス・プロセスの変更がそれほど頻繁ではなく,性能がクリティカルな場合にはビジネス・プロセスのロジックをプログラムで作り込めば良いのです。正にアーキテクトの真価の発揮しどころですね。
最近,何でも"2.0"をつけるのが流行っているようなので,SOAやWeb 2.0によって企業システムがどのような影響を受けるのか,"企業システム2.0"の思考実験を行ってみたいと思います。
ひとりブレインストーミングの結果です。

Sunでは,いわゆる"2.0"を支えるべく,Sun Grid,Solaris Enterprise System等の製品,サービス,ソリューションを提供し,同時にコミュニティの支援を行っています。"2.0"に注目される方はSunの動向も要チェックです。
Sun Business .Next @東京にてセッションを持つことになりました。タイトルは「SOAとJavaテクノロジーその可能性と現在」です。私のセッションは兎も角,Greg PapadopoulosやDavid Yenの基調講演は必見です。是非ご登録ください。
SunではSOAのアーキテクチャとして,4つのレイヤを定義しています。

SOAはその名の通り”アーキテクチャ”ですので,このような形でエンタープライズ・システム全体でのアーキテクチャの整合性をとっておくことが最も重要です。アーキテクチャをきっちり守っておけば,その実装形態(例えば,サービスをSOA基盤ソフトウェアをベースに簡単に開発する,Java EEでカスタム開発する,など)が多少異なっていたとしても,そのメリットを損なうことなくSOAを実現することができます。
以前のエントリ(狭義のSOA,広義のSOA)では技術的な観点からSOAについて整理してみました。
一方,SOAをビジネスの観点から見た場合の重要なフレーバーとして,"ビジネス駆動(Business Driven)"あるいは"ビジネスプロセス駆動(Business Process Driven)"の考え方があります。ビジネス・プロセス駆動の考え方では,まず,業務機能要件をビジネス・プロセス・モデルとして定義します。それをSOAをベースにしたリファレンス・アーキテクチャに従いながら,システム機能要件を表現するようなオーケストレーション・モデルに落とし込みます。(ユースケースとのアナロジーで考えると,ビジネス・ユースケースからシステム・ユースケースへの落とし込みに相当します。)オーケストレーション・モデルはビジネス・サービス(ビジネス機能を実現するサービス)を組み合わせて構成されます。ビジネス・サービスはビジネス・ロジックとテクニカル・サービス(リソースやプロトコルの詳細を隠蔽するサービス)の呼び出しで実現されます。具体的には,オーケストレーション・モデルはBPELによって定義され,BPELエンジンで実行されます。
SOAを成功させるには,業務要件の実現を第一義とする,ビジネス・プロセス駆動の考え方(あるいはトップ・ダウン・アプローチと呼んでも良いかもしれません)が重要です。また,このような形で,ビジネスとシステムをシームレスにつないでおくことにより,SOAをBPM(Business Process Management)の基盤として活用できるようになります。
NASAは1990年代に「Cheaper, Better, Faster」への方針転換を行いました。例えば,Mars Pathfinder以降の火星探査では,パラシュートとエアバッグを使ってシンプルな(大胆な)着陸を行うことにより,Cheaper, Better, Fasterを達成しています(動画)。つまり,現在のRocket Scienceは以前のRocket Scienceとは変わってきているのです。
宇宙開発においてCheaper, Better, Fasterを実現する方法のひとつとして,標準化,再利用があげられています。これって,SOAと共通する考え方ですね。SOAはエンタープライズシステムにおいてCheaper, Better, Fasterを実現する手段と言えます。SOAの話をすると「再利用なんて無理」とか言われる場合が多いですが,宇宙開発だって変わっているのですから,IT開発だって変われないはずがありません。
最近JAXAが1ヶ月の間に2回,H-IIAロケットの打ち上げを成功させたことが話題になっていました。日本の宇宙開発が最近失敗続きだったことから,やっぱりRocket Scienceは(英語のスラングでも使われるように)複雑で難しいことなんだなと思われている方も多いかと思います。
しかし,宇宙開発も最近変わってきているのです。たとえば現在も土星探査をつづけているカッシーニの説明を見てみると「97年10月にフロリダ州ケープカナベラル宇宙基地からタイタン4型ロケットによって打ち上げられた高さ約7メートル、幅約4メートル、重さ約6トンとNASA最後といわれる重厚長大な土星探査機」との記述があります。なぜカッシーニが「NASA最後の重厚長大な土星探査機」と言われるようになったのでしょうか。
OpenESBプロジェクトのWhiteper(PDF)とFAQにService-Oriented Integration (SOI)に関する記述があります。
Q. What is the difference between service-oriented architecture (SOA) and service-oriented integration (SOI)?
SOA is an architectural pattern for constructing systems, based on service descriptions. Such systems are rarely constructed in completely new IT environments; instead, many of the services must come from existing applications within an enterprise. The act of adapting an application (or messaging protocol) to interact with other applications that it was not designed to interoperate with is called integration. Adapting applications and protocols to a SOA is a very common activity, and is called service-oriented integration (SOI).
広義のSOAのうち「インテグレーション分野に狭義のSOAを適用する」ことがSOIに相当しそうですね。
Sun SOAのページにSOAのTCOに関するWhitepaper(PDF)が載っています。
この調査報告(Butler Group)を要約すると,Sun Java Integration Suite(Sun Java CAPSに名称変更されています)のように,サービス指向のComposite Applicationを,うまく統合された開発環境を用いて開発すると,従来型のJ2EE(現在はJava EEと呼ぶのが正です)開発に比べて,初期フェーズ(設計,開発,ディプロイ)で50%,2~3年目のメンテナンスで70%,3年間トータルで58%のコスト削減が見込めるそうです。
うまく統合された開発環境(例えば,Sun Java CAPSの統合開発環境であるEnterprise Designerは,Near-Zeroコーディングを謳い文句にしています)では,コーディング量を大幅に削減できますので,開発,テスト,運用の工数を削減できるとされています。
旧SeeBeyond U.S.のSEの人によると,これまでのデモ開発等は全てコーディングを一切行わずに実現してきたそうです。これはちょっと極端ですが,SOAの開発では,画面開発,プロセス定義,サービス開発,多種多様なシステムと接続など多くの要素が含まれてきますので,それらをうまく連携して簡単に実現できる開発環境が重要というのは疑いようがありませんね。