SOA/ESB概要 1 WebSphere ESBアナウンスメントWorkshop ISE Webインフラ
by user
Comments
Transcript
SOA/ESB概要 1 WebSphere ESBアナウンスメントWorkshop ISE Webインフラ
WebSphere ESBアナウンスメントWorkshop SOA/ESB概要 ISE Webインフラ 小島賢二 [email protected] Copyright IBM Japan Co.,Ltd 2006 1 Disclaimer 当資料で提供する技術情報は、各製品の出荷前コードに基づくものを含 みます。 この資料は日本アイ・ビー・エム株式会社ならびに 日本アイ・ビー・エム システムズ・エンジニアリング株式会社の正式なレ ビューを受けておりません。 当資料は、資料内で説明されている製品の使用を保証するものではあり ません。 資料の内容には正確を期するよう注意しておりますが、この資料の内容 は2006年3月現在の情報であり、製品の新しいリリース、PTFなどによっ て動作、仕様が変わる可能性があるのでご注意下さい。 今後国内で提供されるリリース情報は、対応する発表レターなどでご確 認ください。また、当資料に記載された製品名または会社名はそれぞれ の各社の商標または登録商標です。 2 目次 アプリケーションの視点 インフラストラクチャーの視点 EAIにおけるハブ&スポーク・トポロジー ESBトポロジー SOA/ESB実行環境 イベントの視点 SOA/ESBとは? サイロにおける密結合の具体例 Webサービスの疎結合モデル サービス、そしてインテグレーション SCAによるインテグレーション SCAを活用したメディエーション CBE/CEI オープンテクノロジーの視点 SOA/ESBのキーポイント まとめ 3 アプリケーションの視点 4 SOA/ESBとは? 業務B ロジック 業務C ロジック 新サービス 業務A ロジック 業務A クライアントA 業務B クライアントB 業務Z サービスC サービスB サービスA クライアントZ ESB ESB 業務A クライアントA 業務B クライアントB 業務Z クライアントZ 現在の多くのシステムは、左側の図のようなサイロを構成していると言われています。 ビジネス環境の変化によって、このサイロを跨るシステム要件がでてきたとしても、密結 合したシステムでは業務ロジックを容易にインテグレーションすることはできません。 SOAでは、業務ロジックをサービスという単位で切り出し、それをWell-definedなイン ターフェース(WSDL, XMLスキーマなど)で公開することにより、 インターフェースを解釈できるクライアントが、ESBを経由して柔軟にサービスを活用す ることができます。ESBは、サービスにアクセスする為の透過的なメッセージ転送網と言 えます。 SOA/ESB環境では、サービスをコンポジットしたり、カストマイズしたりすることによって 新しいサービスとして再利用することも可能になるのです。 5 サイロにおける密結合の具体例 サービスインターフェース 密結合 密結合 ファサード リクエスト{画面ID, PFキー, any型} y型} B, an 面ID= ス{画 ン ポ レス IF PF5 } y型 IF PF7 B画面 レス C画面 ス ポン 面 {画 ID n ,a =C ビジネスロジック0001 入力1 A画面 0001 戻り1 IF PF6 入力2 ビジネスロジック0002 0002 ELSE 戻り2 【画面制御機能】 ①画面遷移 ②輝度の変更 ③読み取り専用 ④データ送信可否制御 ⑤セッション情報制御 などなど 【フロー機能】 ①入出力の加工 ②ロジックの呼び出し ③トランザクション制御 ④セキュリティチェック などなど インターフェースではなく、実装に依存している。 (H/W, OS, 言語, プロトコル, ロケーション, 各種機能) この図では、サイロなシステムの具体例を示しています。 A画面からリクエストは、ファサードを経由してビジネスロジックの呼び出しが行われ、結 果としてB画面またはC画面に遷移するというものです。 ファサードのインターフェースは、厳格には規定されておらず、any型を受け取り、any 型を返すという抽象的なインターフェースとなっています。 このような弱い型定義のインターフェースを使用している場合、クライアントとサーバー 間には固有な実装規約が存在しており、それに従う密結合したプログラムのみが、 このサイロなシステムに参加できるのです。 例えば、メッセージヘッダーとして画面IDを格納し、その画面IDから定義体を導き出し、 画面レイアウトと画面項目をマップするといったものや、 フラグエリアを設けて、そのフラグを使用してサーバーからクライアントの画面の輝度、 読み取りモード、データを送信する・しないといった制御をします。 サイロなシステムでは、インターフェースではなく、前述したような機能や実装に依存し ていると言えます。これによって、クライアントプログラムやビジネスロジックは、そのサイ ロな環境上でのみ稼動できるシステムとなり、別のサイロなシステムの結合は、非常に困 難なものとなっていまっているのです。 6 弱い型定義のインターフェース? 【強い型定義のXMLスキーマ】 【弱い型定義のXMLスキーマ】 <element name="address" type=“ns:AddressType"/> <complexType name="AddressType"> <sequence> <element name="city" type="xsd:string"/> <element name="zip" type="xsd:string"/> </sequence> </complexType> <element name=“address" type="xsd:any"/> リクエスターとプロバイダー間で 事前に規約を決めて、 送受信する必要があります。 ①文字列です。 ②XMLです。 ③最初に<city>タグです。 ④次が<zip>タグです。 <address> <city>Komae</city> <zip>128-01</zip> </address> 実際に転送されるデータは同じ XMLスキーマを見ただけで理解できます。 かつ、 XMLスキーマを理解できるデータバインディングの 仕組み(SDO, JAX-RPC, XMLBeans, Castorなど) を使用すれば、プログラム言語にマッピングできます。 7 Webサービスの疎結合モデル リクエスターは、サービスインターフェースにのみ依存する。 密結合 SOAP/HTTP バインディング SOAP/HTTP バインディング リクエスター 実装 J2EE JNDI サービス・リファレンス インターフェース 疎結合 プロバイダー 実装 SOAP/JMS バインディング SOAP/JMS バインディング 密結合 スタブ スケルトン サイロなシステムの実装依存な密結合とは対照的に、疎結合モデルを実現の代表例が Webサービスです。 Webサービスでは、以下の二点により疎結合を実現しています。 1. WSDLにおいて、テクノロジーに中立なXMLスキーマで、リクエスターとプロバイ ダー間を送受信するメッセージを定義します。 XMLメッセージは、各言語環境のデータ型にマッピングされ実装コード内で使用さ れることになります。 2. バインディング(プロトコル)やロケーションをWSDLに定義し、公開します。これを解 釈するツール(WSDL2Javaコマンドなど)がスタブ・スケルトンコードを生成します。 リクエスターはインターフェースのみに依存し、プロトコルやアドレスは、ツールによっ て自動生成されたコードが解釈します。 8 サービス、そしてインテグレーション ①コンペンセーション機能 ②ステート管理 ③実装形態のバリエーション - ステートマシン - ルールエンジン - BPEL - ヒューマンタスク ビジネス フロー サービス サービス WebSphere ESB Message Broker マイクロ フロー サービス 画面 フロー サービス サービス メディエーション フロー サービス サービス ESB ①画面遷移 ②セッション管理 ③関連項目チェックロジック ④業務コード変換 サービス サービス サービス ①ルーティング ②プロトコル変換 ③メッセージ変換 ④ロギング ⑤イベントの送信 Webサービス技術に代表されるWell-definedなインターフェースをもったサービスは、 容易にインテグレーションすることができ、必要に応じてカストマイズやロジックの追加す ることによって新たなサービスを作成することもできます。 インテグレーションには、満たすべき機能や用途、そしてその処理の複雑さに応じて 色々なバリエーションがあり、コンポジットアプリケーションやフロー(ビジネスフロー、メ ディエーションフロー、マイクロフロー、画面フロー)などと呼ばれています。 また重要なポイントとして、インテグレーションには、分散配置されたサービスを見つけ 出し、そのサービスに応じたプロトコルを使用して 容易に通信し、サービス呼び出しをすることができるインフラストラクチャーが必須となり ます。 この機能をはたすのがESB (Enterprise Service Bus)です。 本日のアナウンスメントワークショップでは、メディエーションフローをつかさどる WebSphere ESBの詳細をお伝えしていきます。 9 SCAによるインテグレーション WebSphere ESBの場合JavaとMediationが選択可能 WS-BPEL Java Mediation Business Rule Human Task Selector 【インポート・バインディング】 Webサービス バインディング (HTTP or JMS) SCA バインディング JMS バインディング EIS バインディング 実装方式 インターフェース-A モジュール サービス コンポーネント エクスポート サービス コンポーネント モジュール サービス コンポーネント ワイヤリング インターフェース-C インターフェース-B サービス コンポーネント インポート Webサービス バインディング (HTTP or JMS) SCA バインディング JMS バインディング Webサービス 実装 Webサービス バインディング EIS バインディング 【エクスポート・バインディング】 SCA (Service Component Architecture)を活用することにより、サービスのインテグ レーションを容易に実現することができます。 1. サービスコンポーネントの定義 インターフェースを定義し、実装形態はJava, BPEL, ステートマシン、ルールエンジ ンなど選択可能です。 2. 交換するメッセージの定義 SDOを使用したXMLスキーマのJava表現と言えます。 3. ワイヤリングすることによる依存関係の定義 コンポーネントやモジュール間の依存関係をワイヤリングすることで定義することが できます。 SCAでは、インポートとエクスポートを使用することによって、モジュール外の関係を築く ことができます。 1. エクスポートとは、モジュールのインターフェースを公開することです。 2. インポートとは、外部のインターフェースを取り込むことです。 Webサービスには、依存するモジュールをインポートするという考え方は存在してい ません。あくまでWSDLで公開するという考え方のみといえます。 3. インポート、エクスポートのプロトコルバインディングは、Webサービス、SCA、JMS、 EIS中から選択することができます。 10 SCAを活用したメディエーション メディエーション・モジュール インポート 緑インターフェース エクスポート リクエスター 実装 1. ルーティング 2. プロトコル変換 3. メッセージ変換 4. ロギング 5. イベントの送信 6. インターフェース の差を吸収 インポート 紫インターフェース 配置 プロバイダー 実装 WebSphere WebSphereESB ESB 赤インターフェース プロバイダー 実装 SCA技術を活用したメディエーション・モジュールでは、以下のようなインテグレーショ ン・ロジックを実装することによって、既存サービスを再利用した付加価値のある新 サービスを提供できます。 また、メディエーション・モジュールそのものは、WebSphere ESBに配置します。 1. ルーティング 2. プロトコル変換 3. メッセージ変換 4. ロギング 5. イベントの送信 6. インターフェースの差の吸収 11 インフラストラクチャーの視点 12 EAIにおけるハブ&スポーク・トポロジー メッシュ型 ハブ&スポーク型へ 送信 スポーク 受信 HA スポーク プロバイダー リクエスター ハブ 受信 送信 ハブ&スポーク・トポロジーは、メッセージングシステムにおいてPoint-to-Pointなキュー イングネットワークをメッシュに構築するのではなく、リクエスターとプロバイダーが、 最寄のスポークのみを知っていればアプリケーション間通信ができるシステムトポロ ジーと言えます。 セントラルポイントとなるハブが、中心的な役割を果たし、メディエーション(①ルーティン グ②プロトコル変換③メッセージ変換④ロギングなど)機能を提供できます。 一方で、ハブを高可用構成にする必要があったり、変化の激しいWS-*仕様、マルチプ ロトコルへの追従やパフォーマンス要件において、セントラルポイントとなるハブのス ペックに依存する問題も存在します。 13 ESBトポロジー JNDI 仮想的なネームスペース JMS 活動化 仕様 EJBホーム フロー サービス 宛先 サービス ファクトリ 接続 ファクトリー サービス 受信 リンク MQ 送信 ME ME ME 送信 物理的な世界 受信 ESB ESB ME リクエスター ME 受信 サービス 送信 ME ME ME 送信 ESBは、分散配置されたメッセージングエンジン(ME, MQ, WMQなど)の仮想的な集合 体と、アプリケーションを稼動させる各種コンテナーの融合と言えます。 ESBにおいてリクエスターは、仮想的なネームスペース上のリソース(宛先、EJB、Web サービス)に対してアクセスし、その宛先が物理的にどこに存在しているかを意識する必 要はありません。 これをESBにおける位置透過性と言います。また、各種通信プロトコル(SOAP/HTTP, SOAP/JMS, JMS, RMI/IIOPなど)もESBが隠蔽し、リクエスターやプロバイダーが意識 することはありません。 14 SOA/ESB実行環境 WebSphere ESB サービス メッセージ転送網 としての実行環境 ロジックの実行環境 Servlet JSP JavaBeans サービス メディエーション フロー EJB ビジネス・プロセス Webコンテナー EJBコンテナー SCA/SDO/SMO ESQL/Java SCA/SDO COBOL WAS WAS WESB WMB WPS CICS MQ ME/SIBus ESB ESB インフラストラクチャーの視点からSOA/ESB実行環境をまとめると、この図のようになりま す。 メッセージ転送網としては、WebSphereのME/SIBus、MQなどの製品群によって実現 されます。 またロジックの実行環境としては、その言語に応じたコンテナーおよび製品群(WAS, WESB, WMB, WPS, CICS)によって実現されます。 15 イベントの視点 16 CBE/CEI イベント CBE フロー サービス メッセージ CBE CBE サービス メッセージ メッセージ リクエスター 実装 CBE メッセージ サービス ESB WESB イベント・サーバー ①エラー時の問題判別 ②パフォーマンスデータ ③セキュリティ監査ログ CBEブラウザー ESBを流れるデータには、業務要件を満たす為に実装されるサービスやフロー間を伝 播するメッセージ(リクエスト、レスポンス)と、 非機能要件に対応できるイベントの二種類に分類できます。 このイベントを集計することによって、問題判別、監査ログ、パフォーマンス解析などに 活用することができます。 そのイベントの共通フォーマットを定義しているのがCBE(コモン・ベース・イベント)であり、 そのインフラがCEI(共通イベントインフラストラクチャー)です。 CBEは、ESB内のCEIを経由してイベントサーバー(WESBサーバー上のアプリケー ション)に集約されます。そして、CBEブラウザーで蓄積したイベントをブラウズすること ができます。 17 オープンテクノロジーの視点 18 Service Component Architecture http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-sca/SCA_White_Paper1_09.pdf SOAプログラミングモデルのコア技術であるSCA仕様は、BEA、Interface21、IONA、 Oracle、SAP、Siebel、Sybaseと共同で2005年11月に発表されました。 Springフレームワークで有名なInterface21社や、WebLogicアプリケーションサーバー のBEA社といったSOA/ESBの技術エリアのトップ企業が協業した画期的な仕様といえ ます。 現時点でIBMにおいてSCAを実装した製品は、WESBとWPSの二つです。 19 Apache Tuscany Project http://incubator.apache.org/tuscany/index.html SOAプログラミングモデルのコア技術であるSCA/SDOは、IBM固有の技術ということで はなく、Apache Tuscanyオープンソースプロジェクトでも開発が進められています。 Java言語以外のC++や、Data Access Serviceなどの開発も並行して進められていま す。 20 その他のオープン技術 Eclipse W3C BO/SMO⇒XMLスキーマ SOAP WSDL OASIS WebSphere Integration Developer(統合開発環境) CBE WS-BPEL WS-* J2EE JAX-RPC, JMS, JCA, EJB, WebServices for J2EE SCA/SDO以外にも、ここで記述している多くのオープンな技術を活用することによって、 SOA/ESBは実現されます。 21 SOA/ESBのキーポイント 1. 新規 2. 3. Define Implement Deploy 1. 再利用 2. 3. 4. Assemble Define Implement/Customize Deploy 1. 再利用 2. 3. 4. Assemble Define Implement/Customize Deploy 加速! SOA/ESBでは、既存サービスを再利用し、コンポジットした新しいサービスに拡張させ ることにより、システムを効率よく成長させる手法といえます。 22 まとめ 実装依存な密結合とインターフェース依存な疎結合 SCAによるインテグレーション Well-Definedなインターフェース プロトコル非依存 位置透過性 QoS (セキュリティ、トランザクション、CBE) コンポジットアプリケーション フロー(ビジネスフロー、メディエーションフロー、マイクロフローなど) ESBという新しい非同期分散コンピューティング環境 オープン技術 ツールサポート WebSphere Integration Developer 23