Upload
phamminh
View
222
Download
7
Embed Size (px)
Citation preview
ESB MuleによるSOA
小沢仁
2006年08月17日
2
先ず、なぜSOA?
将来を予測してシステムを構築するのではなく、変化に備えてシステムを構築する。
1.技術に非依存2.サービスが疎結合3.サービス提供者の物理エンドポイントに非依存
ビジネスモデルは変化する1.アプリケーションの変更2.技術の変化3.経営方針の変更
ビジネスルールを定義(動的にビジネスプロセス を生成するルールを定義する)1.アクティビティの構造とスケジュールを定義2.サービスプロバイダのロール(役割)を定義3.サービスの結合方法を定義
なぜ?
どうやって?
ビジネス的技術的 SOA
3
WebServiceの問題点
長い間、WebServiceは話題になっているが、なかなか普及はしていない。
なぜ?
4
アーキテクチャの問題
アプリケーションを重ねて層を作成する。アプリケーションは上下のアプリケーションのみと連携する。
ポイントツポイントで全てのアプリケーションを相互に接続するにはn(n-1)/2の接続数が必要になる。
接続数
アプリケーション数ESB Mule
ポイントつポイント
ポータル
HRM
人事
給与
財務会計
多くの場合は密結合で連携されているために、情報共有に限度がある。
WebServiceでポイントツポイント接続するぼ、接続
数がサービスの2乗で増えるために管理が困難になる。
5
インターオペラビリティからシステム統合へ
相互運用性はシステム統合を行うためには必要な要素の一つにすぎない。
インターオペラビリティ(相互運用性)によりシステム間でデータ交換ができるようになる。
システム統合とは、ビジネスデータ及びビジネスプロセスを共有するために、企業内の異なるアプリケーションを連携する。
ユーザが要求しているのはシステム統合、WebServiceが提供しているのは
インターオペラビリティ。
6
良いサービスとは
�再利用性が高い
�柔軟性が高く、短時間で保守が可能
�実装に非依存である
�性能が良い
多くのWebServiceは良いサービスではない!
7
インタフェースの問題 - 組立て
1.サービスの組立て
インタフェースC
インタフェースA
インタフェースB
①ユーザの要望①ユーザの要望 異なる型のインタフェースを集約したインタフェースを利用したい
インタフェースA
インタフェースA
インタフェースA
②多くのWebService
②多くのWebService
同じ型のインタフェースのみの集約が可能
8
インタフェースの問題 - インタフェースの変更
1.インタフェースの変更
インタフェースA
インタフェースA’
①ユーザの要望①ユーザの要望 インタフェースを変更したい
②多くのWebService②多くのWebService ユーザアプリケーションのインタフェース及びユーザアプリケーションも変更する必要がある
インタフェースA
インタフェースA’
インタフェースは公開した後には不変である。そのために、実際にはインタフェースが増える。
9
サービス粒度の問題(1)
単純にメソッドをサービスにすると、粒度が小さすぎてサービス化した利点が不明になる。
アプリケーション全体を一つのサービスとして定義すると、粒度が大きすぎて柔軟にサービスを組み合わせることが困難になる。
複数のシナリオで利用できるようにサービスを定義する。(再利用が高いサービスを作成する。)
外部システムで利用できるサービス定義を優先する。(外部システムのインタフェースを変更するのは内部システムをインタフェースを修正するより困難である。)
10
サービス粒度の問題(2)
性能などは通信プロトコール、ネットワーク構成、データベース構成などでまず考慮して、最終手段としてサービスを決める粒度で考慮する。また、SOAはバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理
(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。
システム全をSOAで再構築するのではなく、フローが変更される
可能性が高いものを選択する。
システム全をSOAで再構築するのではなく、フローが変更される
可能性が高いものを選択する。
11
Web Serviceの問題を解決するESB Mule
12
ソフトウエア開発アーキテクチャ
サービスラッパー層サービスラッパー層サービスラッパー層サービスラッパー層
DIコンテナ層コンテナ層コンテナ層コンテナ層
ネットワーク層ネットワーク層ネットワーク層ネットワーク層
5555
4444
3333
2222
1111
内容内容内容内容
ローカルオブジェクトを提供
オブジェクトの生成、関連、管理
汎用インタフェース
サービスの管理、サービスのルーティング
サービスの提供
疎結合疎結合疎結合疎結合
密結合密結合密結合密結合
ESB Mule
アプリケーション層アプリケーション層アプリケーション層アプリケーション層 データベース層データベース層データベース層データベース層
13
ESB Muleとは
� 英SymphonySoft社のRoss Masonを中心として開発が進められているESBフレームワークである
� ESB Muleとは軽量メッセ-ジングフレームワークである
� 分散オブジェクトブローカーとして考えることもできる
� SEDA(Staged Event-Driven Architecture)に基づいたソフ
トウエア・アーキテクチャー
�キューを連鎖した並列エンタプライズ・プラットフォーム
14
ESB Muleが目指すもの
�業界標準、オープンプロトコール、標準パターンに基づいて小中規模なアプリケーション連携プロジェクトを最小な資源、予算、期間最小な資源、予算、期間最小な資源、予算、期間最小な資源、予算、期間で行えるようにする
�「エンタープライズ統合パターン」(Gregor Hohpe著)に基づいた
コンポーネントを提供
�DIコンテナを基にすることで、容易に機能を追加することができる
ようにする
15
ESB Muleの特徴
�商用で利用可能なオープンソースソフトウエアである
�他の多くのオープンソースソフトウエアと連携している
�例:Axis, JBoss, ActiveMZ, Acegi
�アプリケーションサーバとの統合が可能
�例:Oracle Application Server, WebMethod, WebSphere, Weblogic, SunOne, SeeBeyond
�業界標準に対応している
�例:JBI, BPEL, JSR-223 Scripting, PGP, JMX, REST, SSL
�多くのプロトコールに対応している
�例:HTTP, FTP, SOAP, JMS, JDBC, TCP, UDP, POP3, SMTP, IMAP, RMI, VFS, XMPP
�DIコンテナを利用している
�例:Seasar(予定),Springframework, PicoContainer, HiveMind
�エンドポイントの設定を定義ファイルで行うことが可能
16
依存関係の排除
� 開発時にアプリケーション間の依存関係を排除する
� 実行時実行時実行時実行時にESBが依存関係を作成する
� アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様に従ってデータの取得・提供を行う
� ビジネスプロセス定義用のサービスを入出サービスのインタフェースに非依存にする
エンドポイント仕様はアプリケーションが提供するサーサーサーサービスビスビスビスの仕様として、データ項目やデータ型とは非依存にする
エンドポイント仕様はアプリケーションが提供するサーサーサーサービスビスビスビスの仕様として、データ項目やデータ型とは非依存にする
17
非依存性の例
� ESB Muleはサービス利用者に最小の影響でプロセスフロー、エンティティ構造構造、データ型、データの変更を可能にする
� ビジネスプロセスの変更
� 例:部長の承認を不要とした
� エンドポイント仕様の変更
� 例:データ項目を追加した
� 文字型を日付型に変更した
� データ表現の変更
� 例:USD(米ドル)を日本円に変えた
基本クラスを利用してビジネスルールを定義することで、ビジネスルールをサービス資源定義に非依存にすることができる。
18
サービス定義はデータ形式に非依存にする
社員情報サービス・エンドポイント CSV入力:リーダー
先頭2行:定義情報
行:データ
XLS入力:リーダー
セルフォーマット:定義情報
シート:データ
ResultSet入力:リーダー
metadata:定義情報
resultset:データ
WebService入力:リーダー
WSDL:定義情報
データ:データ
社員情報サービスは、社員情報の本質本質本質本質な要素を基に定義する。具体的に受け取るデータの定義情報は、各資源の定義情報を利用する。
19
サービス利用者がデータ形式を提示する
社員情報出力エンドポイント CSV出力:ライター
先頭2行:定義情報
行:データ
XLS出力:ライター
セルフォーマット:定義情報
シート:データ
ResultSet出力:ライター
metadata:定義情報
resultset:データ
WebService出力:ライター
WSDL:定義情報
データ:データ
具体的なデータ定義は、受け取る側が提供する。出力エンドポイントはその情報に従ってデータを
提供する。
社員情報の本質を基に定義する。
20
ビジネスインタフェースとアプリケーションインタフェースの分離
サービス提供アプリケーション ESB Mule サービス利用アプリケーション
人事
Lotus
アプリケーション毎のサービスシグネチャ(担当部署)
ビジネスプロセス定義用のサービスシグネチャ(全社)
アプリケーション毎のサービスシグネチャ(担当部署)
サービス提供アプリケーション及びサービス利用アプリケーションを置き換えてもビジネスプロセスの修正を不要にするために、ESB Muleの出入り口でサービス形式を全社統一形式に変換する。
サービス・インタフェース
(変換
)
HRM
ポータル
サービス・インタフェース
(変換
)カノリカル・シグネチャ独自シグネチャ 独自シグネチャ
21
システム例
22
ユーザの要求と制限事項
ユーザ要求:
1.短時間かつ少工数で新人事システムと新HRMシステムへ切り替えたい
2.システム間のデータ通信はリアルタイムで行うようにしたい
3.新HRMに提供するデータ項目を増やしたい(兼務情報など)
ユーザ要求:
1.短時間かつ少工数で新人事システムと新HRMシステムへ切り替えたい
2.システム間のデータ通信はリアルタイムで行うようにしたい
3.新HRMに提供するデータ項目を増やしたい(兼務情報など)
制限事項:
1.新人事システムの切り替え時期は、新HRMシステムより遅れる。新人事システムが立ち上がるまでは、新HRMは旧人事システムからデータを取得する
制限事項:
1.新人事システムの切り替え時期は、新HRMシステムより遅れる。新人事システムが立ち上がるまでは、新HRMは旧人事システムからデータを取得する
23
人事-HRMシステムの切り替え(現状)
HRMサーバHRMサーバ
HRM
アプリケーションアプリケーションアプリケーションアプリケーションOracle
ファイルディレクトリ
CSV
人事システム(現行、ホストシステム)
人事システム(現行、ホストシステム)
人事人事人事人事アプリケーションアプリケーションアプリケーションアプリケーション
ホスト
CSV生成
プログラム
社員ID、氏名社員ID、氏名
社員生年月日社員生年月日
社員(役職)社員(役職)
CSVファイルの内容ファイルの内容ファイルの内容ファイルの内容CSV
...
日次バッチでファイルを転送
ユーザユーザユーザ
...
...
24
フェーズ1
データ共有
「Enterprise Integration Patterns」(著:Gregor Hohpe,
Bobby Woolf)の導入パターンを参考
「Enterprise Integration Patterns」(著:Gregor Hohpe,
Bobby Woolf)の導入パターンを参考
25
人事-HRMシステムの切り替え
人事システム(現行、ホストシステム)
人事システム(現行、ホストシステム)
人事人事人事人事アプリケーションアプリケーションアプリケーションアプリケーション
ホスト
CSV生成
プログラム
...
HRMサーバHRMサーバ
HRM
アプリケーションアプリケーションアプリケーションアプリケーションOracle
ファイルディレクトリ
CSV
新HRMサーバ新HRMサーバ
HRM
アプリケーションアプリケーションアプリケーションアプリケーションOracle
ファイルディレクトリ
CSV
社員ID、氏名社員ID、氏名
社員生年月日社員生年月日
社員(役職)社員(役職)
CSVファイルの内容ファイルの内容ファイルの内容ファイルの内容CSV
...
日次バッチでファイルを転送
ESB Mule
システム切り替え
システム切り替え
インタフェース
インタフェース
注:CSVファイル項目は全てString型として扱われる
26
フェーズ2
処理共有
27
サービスの洗い出しとESBの進め方
処理A’
処理A”
処理A
処理C
処理B
処理B’
処理C’
処理処理処理処理A
処理処理処理処理C
処理処理処理処理B
A’
C’
A”
B’
ESB Mule
従来のシステム従来のシステム ESBのシステムESBのシステム
各アプリケーションで類似した処理を実装
類似した処理をサービスとして定義してESBを介し
て利用できるようにする。サービスの一括管理を可能にする
28
人事-HRMシステムの切り替え
新HRMサーバ新HRMサーバ
HRM
アプリアプリアプリアプリ ケーション ケーション ケーション ケーション
Oracle
ファイルディレクトリ
CSV
人事システム(現行、ホストシステム)
人事システム(現行、ホストシステム)
人事人事人事人事アプリケーションアプリケーションアプリケーションアプリケーション
ホスト
CSV生成
プログラム
...
ESB Mule
インタフェース
社員ID、氏名(String型)社員ID、氏名(String型)
社員生年月日(Date型)社員生年月日(Date型)
役職(String型)役職(String型)
新データの内容新データの内容新データの内容新データの内容
...兼務(List型)兼務(List型)
1.新HRMアプリの変更はなし(同じインタフェースを利用するため)
2.新人事アプリケーションはリアルタイムでデータを提供3.データ項目を追加(例:兼務)4.データ型の変更(例:日付をString型からDate型に)
インタフェース
システム切り替え
システム切り替え
新人事システム新人事システム
新人事新人事新人事新人事アプリケーションアプリケーションアプリケーションアプリケーション
SQL Server
インタフェース
CSV:
20060331
SQL Server:
2006-03-31
新規追加
29
フェーズ3
サービス共有
30
人事-HRMシステムの切り替え
新HRMサーバ新HRMサーバ
HRM
アプリアプリアプリアプリ ケーション ケーション ケーション ケーション
Oracle
ESB Mule
新人事システム新人事システム
新人事新人事新人事新人事アプリケーションアプリケーションアプリケーションアプリケーション
SQL Server
1.複数システムからのビジネスルールに基づいてデータを集約して、一つのインタフェースで提供する2.ESB Muleを利用することで、利用者インタフェースは提供者イ
ンタフェースと分離できる
インタフェース
インタフェース
PeopleSoftPeopleSoft
アプリケーションアプリケーションアプリケーションアプリケーション
Oracle
LotusLotus
アプリケーションアプリケーションアプリケーションアプリケーション
Notes
インタフェース
インタフェース
XLS,CSV
ファイル
メール(例:POP3)
インタフェース
インタフェース
集約したデータ
31
ありがとうございました