...

SOA/ESB概要 1 WebSphere ESBアナウンスメントWorkshop ISE Webインフラ

by user

on
Category: Documents
29

views

Report

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
Fly UP