オープンソーステストツールTestMakerの開発元であるPushToTestはIBM、Oracle、TIBCOのSOA開発ソリューションを導入した場合のTCOの比較および調査結果を公表した。"大規模SOAのための合成的アプローチ"と題したこの研究によれば、TCOを含む複数の点において、TIBCOが最も優れたソリューションだという。InfoQはPushToTestのCEOであり創設者でもあるFrank Cohen氏にこの研究の基本的な仕組みについて話を聞いた。
InfoQ: なぜSOAスタックのTCOの調査をし、コミュニティに調査結果を提供したのですか。
IT業界のひとつのコミュニティのリーダーとして、SOA開発の相互運用性や開発生産性、性能について開発者やアーキテクトに教えてくれる専門的な情報源をずっと探しています。PushToTestは中規模から大規模の組織のために標準的なSOA導入の青写真を明らかにし、相互運用性や性能、開発者の生産性に関する問題を明確にするという仕事をしています。このような仕事は、PushToTestが知識やTestMakerのようなテストツール、サポートサービスを提供することで利益を上げる手助けをしてくれるでしょう。SOA Knowledge KitはBest BuyやPepsiCoやDeloitte、その他30社にとって、事実上の標準になっています。
また、標準化団体(OMG, OASIS, W3C, IETF)に対して、この標準を採用するよう働きかけることで、IT産業の信頼性を高めたいと思っています。PushToTestのこのSOA Knowledge Kit作成はOASIS SOA Blueprintsプロジェクトでも取り上げられています(http://tinyurl.com/85tsbal)。私たちは今後もこの仕事を続けていくつもりです。
私たちが初めにSOA Knowledge Kitを公開したのが2008年です。OracleとIBMとTIBCOのSOAスタックを取り上げました。この3社がSOA開発とSOA導入のプラットフォームを持っていたからです。2009年にはJBossを加えました。来年はMuleを含むほかのSOAプラットフォームも加えたいと思っています。現在はこのKitの評価対象を最新のバージョンに更新する作業をしています。IBM WebSphere Integration Developer V7.0、TIBCO ActiveMatrix SOA Product Suite 3.13、Oracle SOA Suite 11gR1 (11.1.1.5.0)です。
InfoQ: このプロジェクトに関わったチームの構成はどのようなものでしたか。平均的なエンジニアの各SOAに対する経験やウェブサービス開発に対する経験はどの程度でしょうか。
PushToTestは2つのエンジニアリングチームを使ってSOA Knowledge Kitを作りました。各チームはSOA構築やリッチインターネットアプリケーション(RIA,Ajax,Flex, Flash,)、ウェブアプリケーションの経験が5-8年程度ある1人のアーキテクトと、5年のJavaのコーディング経験があるエンジニアが2人、そして、1人のプロジェクトマネージャで構成されます。エンジニアはEJBや、SOAPとRESTベースのサービスのインターフェイスやサービスの仲介や編成の開発経験があります。チームAはOracleとTIBCOを実装しました。チームBはIBMです。各SOAを使ってユースケースを実装するのにおおよそ3-4週間かかります。
InfoQ: サービスの設計と実装には、評価対象のすべてのSOAで同じサービスパターンを使いましたか。各SOAで具体的なサービスを実装するときに直面した難点があれば教えてください。
私たちは典型的な製造業のユースケースを定義しました。このユースケースをTIBCOとOracleとIBMのSOAスタックに実装したのです。そして、実装に変化を加えました。HTTPS/SSLセキュリティを加えたり、メッセージスキーマを変更したり、非同期メッセージを配信する仕組みを追加しました。機能テストを行い、最後に性能テスト、スケーラビリティテストを実施しました。そして、ユースケースと開発者の経験を文書化し、オープンソースソフトウエアライセンスであるGPL v2で公開したのです
この製造業のシナリオには3つのビジネスステップが含まれています。
1) 注文書割り当てプロセスでは新しい注文書を起こす。この実装はSOAPインターフェイス経由でHTTPでアクセスするメソッドを提供する。
2) 倉庫がジャストインタイムで在庫を管理し必要に応じて在庫を保持するためのサービスを利用する部品の保管プロセスは注文書で定義しなければならない。このサービスはSpringとData Access Object (DAO)サービスで、JMSサービスインターフェイス経由でREST形式のリクエストを受け付ける。このリクエストのメッセージは在庫管理サービスのXMLメッセージスキーマに従います。このユースケースではOAGISのBusiness Object Document (BOD)スキーマを利用しました。Ajaxを使ったウェブページで人間がリクエストを行うインターフェイスを提供します。
3) 注文書の値付けプロセスでは現在の価格表に基づいて注文書に小売価格を割り当てます。この仕組みではSAPのシミュレーションビジネス関数を使って商品に値段を付けます。この関数にはSAP NetWeaverのSOAPウェブサービスインターフェイスとセキュリティ認証システムのシミュレーションを経由してアクセスします。今回はsoapUIを使ってモックのSOAPサービスを作りました。
開発者は各SOAスタックについて開発者日誌に記録しました。どれも60-80ページくらいの日誌になりました。この日誌にはエンジニアが一歩ずつユースケースの構築を達成するために行った指示や、コメント、意見などが書かれています。この開発者日誌は各SOAスタックの重大な問題点とそれに対する回避策/解決策が書かれているのです。
私たちは具体的なサービスパターンを実装するにあたり、下記の課題を見つけました。
Oracle
OracleのSOAスタックを使えは開発者は素早くソリューションを構築できます。Oracleのスタックで必要なのは、コードを書き、ディスクリプタやクラスパス、一般的な構成情報を手動で設定することです。Oracleのツールは開発者向けでアーキテクトやビジネスアナリスト向けではありません。また、OracleでSOAアプリケーションを設計、構築、配置する場合はモデル駆動アプローチはほとんど使えません。
開発者がこのツールの使い方を確認できるのは、Oracleのウェブサイトだけです。Oracleのクイックスタートガイドは簡単で便利です。
そのまま動作するものはありません。すべてコミュニティのサポート(特にBEAコンポーネント)が必要です。ほとんどのソリューションは第三者が見つけた回避策でした。例えば、ウェブサービスの構築についてはOracleのウェブサイトでたくさんのチュートリアルを見つけました。しかし、私たちが選んだそのうちのひとつは間違っていました。http://st-curriculum.oracle.com/obe/jdev/obe11jdev/ps1/webservices/ws.html#t5 です。soapUIのウェブサービスモックはOracleからは呼び出せないことがわかりました。JDeveloperがWebServiceExceptionをスローしてしまいます。WSDLからのモデル作成に失敗しているようです。これは開発者日誌に記録しています。
例えば、また、複数のチュートリアルを見つけましたが、動作するものとしないものがありました。例えば、http://download.oracle.com/docs/cd/E17904_01/web.1111/e15184/asynch.htm#CBHECBFG で見つけた非同期サービス構築のチュートリアルです。私たちはアプリケーションサーバでは使えないアノテーションを使っていました。@AsyncWebServiceと @PortableWebServiceです。
IBM
IBMのSOAスタックは複数の大きなプラットフォームが統合されたものです。WebSphere Application Server、WebSphere Integration Developer(WID)、Rational Application Developer(RAD)、WebSphere Process Server(WPS)の各プラットフォームです。IBM RAD単体をダウンロードするだけでも6Gもありました。各プラットフォームにはバージョンの問題があります。WID 7.0にはWAS 7.0が必要で、RAD 8.0.3にはWAS 8.0.3が必要です。結局このSOAスタックを動かすには複数のバージョンのWASをインストールしなければなりません。各部分は巨大で上手く協調して動かないことがあります。例えば、WebSphere Integration Developer (WID)が壊れたWSDLドキュメントを出力する場合があります。
どうにもならない状況に直面することがありました。例えば、WPSで構築したサービス向けのクライアント構築できないことがありました。また、WIDのリファクタリングが単純な名前空間や名前、スキーマの変更を制御できないことがありました。WIDが壊れたWSDLを生成したこともあります。RADにはビジネスプロセスを開発する機能がありません。されにプロセスの開発とその統合は別々のツールで行います。WIDとWPSです。
TIBCO
TIBCOのSOAスタックはモデリングツール、コンポーネント開発ツール、そしてサービスグリッドの配置の3つで構成されています。具体的に言えば、ActiveMatrix Service Grid 3.13、 BusinessWorks 5.9.2、Enterprise Message Service EMS 6.0.1、Rendezvous RV 8.1、BusinessWorks Studio(BS)の各ツールです。
これらのツールはモデル指向で、コードを簡単に管理でき、基盤にある技術を抽象化できます。コードを見る必要はありません。SOA Conceptsを使ってモデリングをすればいいだけです。これは開発者にとって素晴らしいことです。ビジネスマネージャやソフトウエアアーキテクトと同じツールを使ってサービスのインターフェイスとワークフローをモデリングできるからです。
SOAの知識がないコード指向の開発者は急な学習曲線を持つことになるでしょう。ドキュメントは豊富で良く出来ています。ただし、正しいガイドを見つけるのは大変です。TIBCOのウェブサイトにある概要を記してあるドキュメントは手順よりも機能を説明しています。モデリング言語はプロプライエタリで、直感的に分かりやすいものではありません。BW StudioはEclipseベースのIDEで多くの開発者にとって親しみやすいです。新しい概念もあります。例えば、JMSを使ったAysnchronous Serviceはコード指向の開発者がMessage Driven Beans(MDB)を使おうとする場面で使われるでしょう。また、協調フローは非同期サービスの実装を必要としています。
InfoQ: SOAアプリに対する機能テスト、性能テストの方法が見つかりましたか。
私たちはアジャイル開発でKitを構築しました。開発者とテスターがペアを組んで、サービスとビルドする毎に単体テストを作成しました。オブジェクトのインターフェイスにあるメソッドを呼び出す単体テストはJUnitで作りました。他のテストはsoapUI TestSuitesを使いました。これは、サービスに対してSOAPやRESTの呼び出しを行えます。また、私たちはPushToTestのTestMakerを使い、上述した単体テストを使って機能テストや負荷テスト、性能テストを行いました。TestMakerは品質保証担当のテストサーバのグリッドにテストを配置できます。またクラウド環境(Amazon EC2、GoGrid、 Collabnet、Rackspace)にも配置できます。TestMakerは機能の問題や性能のボトルネックの原因を記載したレポートを生成してくれます。
SOA Knowledge Kitには実装したテストとPushToTestのTestMakerのコピーが含まれています。私たちのハードウエアでの性能テストの結果を公表するより、誰もが自分の環境でテストを実施して、各SOAスタックの性能差を確かめられるようにしました。
InfoQ: 開発にかかる労力から算出したTCOモデルの詳細を教えてください。
サービスのライフサイクルの各ステップの時間および労力の分析を行います。これは、ビルドや統合、配置、ひとつのアプリケーションを構成する様々なサービスの管理にかかる時間と労力の量を明らかにするためです。この調査の目的は開発生産性向上によるTCOの削減によるコスト削減の度合いを比較することです。TCOモデルはOpen Office/MS Excelファイルで、Kit開発の各ステップのコストを割り当ててあります。Kitとともにこのモデルも提供されます。
製品の実装では、TIBCO ActiveMatrixとBusinessWorksが最も優れた生産性を提供しました。TIBCOはOracleに比べて29%の時間と開発コストの削減しています。また、IBMと比べれば、TIBCOは時間と開発コストを22%削減しています。
InfoQ: リポジトリ、ESB、その他の協調サービスなど上述の各ベンダが提供しているSOAインフラ機能を使いましたか。簡単に詳細を説明してください。
各ベンダが提供しているベストプラクティスに従いました。リポジトリやESB、協調サービスについても同様です。IBMの場合は、WebSphere Application Server v8.0.3、IBM Rational Application Developer V8.0.3 Multiplatform Multilingual、IBM Websphere Integration Developer V7.0、IBM Websphere Application Server V7.0 Multiplatform Multilingual、そして、テスト環境にIBM Websphereを使いました。Oracleの場合は、Oracle SOA Suite 11gR1 (11.1.1.5.0)、Oracle Database XE 10g 10.2.0.1、 Oracle WebLogic Server 10.3.5、Coherence、OEPE、Repository Creation Utility 11.1.1.5.0、SOA Suite 11.1.1.5.0 (2 parts)、JDeveloper 11.1.1.5、Oracle Service Bus 11.1.1.5.0を使いました。TIBCOの場合は、ActiveMatrix Service Grid 3.13、BusinessWorks 5.9.2、Enterprise Message Service EMS 6.0.1、Rendezvous RV 8.1、TIBCO Runtime Agent 5.7.1、ActiveMatrix Sample Examples BWSE 5.9.2、 Business Studio (BS) VS、Designer Design Time DABS 1.3.1を使いました。
InfoQ: IBM、TIBCO、Oracleの3つのベンダのSOAスタックの将来のバージョンに対するサポート計画を教えてください。
2012年にはOracle、TIBCO、IBM向けのKitを更新する予定です。新しい重要なリリースにするベくしっかりと時間を取るつもりです。また、新しくKitに追加するSOAスタックを見つけるために開発者コミュニティからのフィードバックを求めています。例えば、Microsoftのスタック(BizTalk Server、ASP.net)や他のオープンソースプロジェクトなどが候補になります。どうぞ、フィードバックをください。
SOA Knowledge Kitはhttp://soakit.pushtotest.comから自由にダウンロードできる。