31
ESB MuleによるSOA 小仁 20060817

ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

Embed Size (px)

Citation preview

Page 1: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

ESB MuleによるSOA

小沢仁

2006年08月17日

Page 2: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

2

先ず、なぜSOA?

将来を予測してシステムを構築するのではなく、変化に備えてシステムを構築する。

1.技術に非依存2.サービスが疎結合3.サービス提供者の物理エンドポイントに非依存

ビジネスモデルは変化する1.アプリケーションの変更2.技術の変化3.経営方針の変更

ビジネスルールを定義(動的にビジネスプロセス を生成するルールを定義する)1.アクティビティの構造とスケジュールを定義2.サービスプロバイダのロール(役割)を定義3.サービスの結合方法を定義

なぜ?

どうやって?

ビジネス的技術的 SOA

Page 3: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

3

WebServiceの問題点

長い間、WebServiceは話題になっているが、なかなか普及はしていない。

なぜ?

Page 4: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

4

アーキテクチャの問題

アプリケーションを重ねて層を作成する。アプリケーションは上下のアプリケーションのみと連携する。

ポイントツポイントで全てのアプリケーションを相互に接続するにはn(n-1)/2の接続数が必要になる。

接続数

アプリケーション数ESB Mule

ポイントつポイント

ポータル

HRM

人事

給与

財務会計

多くの場合は密結合で連携されているために、情報共有に限度がある。

WebServiceでポイントツポイント接続するぼ、接続

数がサービスの2乗で増えるために管理が困難になる。

Page 5: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

5

インターオペラビリティからシステム統合へ

相互運用性はシステム統合を行うためには必要な要素の一つにすぎない。

インターオペラビリティ(相互運用性)によりシステム間でデータ交換ができるようになる。

システム統合とは、ビジネスデータ及びビジネスプロセスを共有するために、企業内の異なるアプリケーションを連携する。

ユーザが要求しているのはシステム統合、WebServiceが提供しているのは

インターオペラビリティ。

Page 6: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

6

良いサービスとは

�再利用性が高い

�柔軟性が高く、短時間で保守が可能

�実装に非依存である

�性能が良い

多くのWebServiceは良いサービスではない!

Page 7: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

7

インタフェースの問題 - 組立て

1.サービスの組立て

インタフェースC

インタフェースA

インタフェースB

①ユーザの要望①ユーザの要望 異なる型のインタフェースを集約したインタフェースを利用したい

インタフェースA

インタフェースA

インタフェースA

②多くのWebService

②多くのWebService

同じ型のインタフェースのみの集約が可能

Page 8: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

8

インタフェースの問題 - インタフェースの変更

1.インタフェースの変更

インタフェースA

インタフェースA’

①ユーザの要望①ユーザの要望 インタフェースを変更したい

②多くのWebService②多くのWebService ユーザアプリケーションのインタフェース及びユーザアプリケーションも変更する必要がある

インタフェースA

インタフェースA’

インタフェースは公開した後には不変である。そのために、実際にはインタフェースが増える。

Page 9: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

9

サービス粒度の問題(1)

単純にメソッドをサービスにすると、粒度が小さすぎてサービス化した利点が不明になる。

アプリケーション全体を一つのサービスとして定義すると、粒度が大きすぎて柔軟にサービスを組み合わせることが困難になる。

複数のシナリオで利用できるようにサービスを定義する。(再利用が高いサービスを作成する。)

外部システムで利用できるサービス定義を優先する。(外部システムのインタフェースを変更するのは内部システムをインタフェースを修正するより困難である。)

Page 10: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

10

サービス粒度の問題(2)

性能などは通信プロトコール、ネットワーク構成、データベース構成などでまず考慮して、最終手段としてサービスを決める粒度で考慮する。また、SOAはバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理はバックエンド処理で利用して、性能を重視する処理

(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。(例:トランザクション処理)には利用しない方がよい。

システム全をSOAで再構築するのではなく、フローが変更される

可能性が高いものを選択する。

システム全をSOAで再構築するのではなく、フローが変更される

可能性が高いものを選択する。

Page 11: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

11

Web Serviceの問題を解決するESB Mule

Page 12: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

12

ソフトウエア開発アーキテクチャ

サービスラッパー層サービスラッパー層サービスラッパー層サービスラッパー層

DIコンテナ層コンテナ層コンテナ層コンテナ層

ネットワーク層ネットワーク層ネットワーク層ネットワーク層

5555

4444

3333

2222

1111

内容内容内容内容

ローカルオブジェクトを提供

オブジェクトの生成、関連、管理

汎用インタフェース

サービスの管理、サービスのルーティング

サービスの提供

疎結合疎結合疎結合疎結合

密結合密結合密結合密結合

ESB Mule

アプリケーション層アプリケーション層アプリケーション層アプリケーション層 データベース層データベース層データベース層データベース層

Page 13: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

13

ESB Muleとは

� 英SymphonySoft社のRoss Masonを中心として開発が進められているESBフレームワークである

� ESB Muleとは軽量メッセ-ジングフレームワークである

� 分散オブジェクトブローカーとして考えることもできる

� SEDA(Staged Event-Driven Architecture)に基づいたソフ

トウエア・アーキテクチャー

�キューを連鎖した並列エンタプライズ・プラットフォーム

Page 14: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

14

ESB Muleが目指すもの

�業界標準、オープンプロトコール、標準パターンに基づいて小中規模なアプリケーション連携プロジェクトを最小な資源、予算、期間最小な資源、予算、期間最小な資源、予算、期間最小な資源、予算、期間で行えるようにする

�「エンタープライズ統合パターン」(Gregor Hohpe著)に基づいた

コンポーネントを提供

�DIコンテナを基にすることで、容易に機能を追加することができる

ようにする

Page 15: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

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

�エンドポイントの設定を定義ファイルで行うことが可能

Page 16: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

16

依存関係の排除

� 開発時にアプリケーション間の依存関係を排除する

� 実行時実行時実行時実行時にESBが依存関係を作成する

� アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様アプリケーションのエンドポイント仕様に従ってデータの取得・提供を行う

� ビジネスプロセス定義用のサービスを入出サービスのインタフェースに非依存にする

エンドポイント仕様はアプリケーションが提供するサーサーサーサービスビスビスビスの仕様として、データ項目やデータ型とは非依存にする

エンドポイント仕様はアプリケーションが提供するサーサーサーサービスビスビスビスの仕様として、データ項目やデータ型とは非依存にする

Page 17: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

17

非依存性の例

� ESB Muleはサービス利用者に最小の影響でプロセスフロー、エンティティ構造構造、データ型、データの変更を可能にする

� ビジネスプロセスの変更

� 例:部長の承認を不要とした

� エンドポイント仕様の変更

� 例:データ項目を追加した

� 文字型を日付型に変更した

� データ表現の変更

� 例:USD(米ドル)を日本円に変えた

基本クラスを利用してビジネスルールを定義することで、ビジネスルールをサービス資源定義に非依存にすることができる。

Page 18: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

18

サービス定義はデータ形式に非依存にする

社員情報サービス・エンドポイント CSV入力:リーダー

先頭2行:定義情報

行:データ

XLS入力:リーダー

セルフォーマット:定義情報

シート:データ

ResultSet入力:リーダー

metadata:定義情報

resultset:データ

WebService入力:リーダー

WSDL:定義情報

データ:データ

社員情報サービスは、社員情報の本質本質本質本質な要素を基に定義する。具体的に受け取るデータの定義情報は、各資源の定義情報を利用する。

Page 19: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

19

サービス利用者がデータ形式を提示する

社員情報出力エンドポイント CSV出力:ライター

先頭2行:定義情報

行:データ

XLS出力:ライター

セルフォーマット:定義情報

シート:データ

ResultSet出力:ライター

metadata:定義情報

resultset:データ

WebService出力:ライター

WSDL:定義情報

データ:データ

具体的なデータ定義は、受け取る側が提供する。出力エンドポイントはその情報に従ってデータを

提供する。

社員情報の本質を基に定義する。

Page 20: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

20

ビジネスインタフェースとアプリケーションインタフェースの分離

サービス提供アプリケーション ESB Mule サービス利用アプリケーション

人事

Lotus

アプリケーション毎のサービスシグネチャ(担当部署)

ビジネスプロセス定義用のサービスシグネチャ(全社)

アプリケーション毎のサービスシグネチャ(担当部署)

サービス提供アプリケーション及びサービス利用アプリケーションを置き換えてもビジネスプロセスの修正を不要にするために、ESB Muleの出入り口でサービス形式を全社統一形式に変換する。

サービス・インタフェース

(変換

)

HRM

ポータル

サービス・インタフェース

(変換

)カノリカル・シグネチャ独自シグネチャ 独自シグネチャ

Page 21: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

21

システム例

Page 22: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

22

ユーザの要求と制限事項

ユーザ要求:

1.短時間かつ少工数で新人事システムと新HRMシステムへ切り替えたい

2.システム間のデータ通信はリアルタイムで行うようにしたい

3.新HRMに提供するデータ項目を増やしたい(兼務情報など)

ユーザ要求:

1.短時間かつ少工数で新人事システムと新HRMシステムへ切り替えたい

2.システム間のデータ通信はリアルタイムで行うようにしたい

3.新HRMに提供するデータ項目を増やしたい(兼務情報など)

制限事項:

1.新人事システムの切り替え時期は、新HRMシステムより遅れる。新人事システムが立ち上がるまでは、新HRMは旧人事システムからデータを取得する

制限事項:

1.新人事システムの切り替え時期は、新HRMシステムより遅れる。新人事システムが立ち上がるまでは、新HRMは旧人事システムからデータを取得する

Page 23: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

23

人事-HRMシステムの切り替え(現状)

HRMサーバHRMサーバ

HRM

アプリケーションアプリケーションアプリケーションアプリケーションOracle

ファイルディレクトリ

CSV

人事システム(現行、ホストシステム)

人事システム(現行、ホストシステム)

人事人事人事人事アプリケーションアプリケーションアプリケーションアプリケーション

ホスト

CSV生成

プログラム

社員ID、氏名社員ID、氏名

社員生年月日社員生年月日

社員(役職)社員(役職)

CSVファイルの内容ファイルの内容ファイルの内容ファイルの内容CSV

...

日次バッチでファイルを転送

ユーザユーザユーザ

...

...

Page 24: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

24

フェーズ1

データ共有

「Enterprise Integration Patterns」(著:Gregor Hohpe,

Bobby Woolf)の導入パターンを参考

「Enterprise Integration Patterns」(著:Gregor Hohpe,

Bobby Woolf)の導入パターンを参考

Page 25: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

25

人事-HRMシステムの切り替え

人事システム(現行、ホストシステム)

人事システム(現行、ホストシステム)

人事人事人事人事アプリケーションアプリケーションアプリケーションアプリケーション

ホスト

CSV生成

プログラム

...

HRMサーバHRMサーバ

HRM

アプリケーションアプリケーションアプリケーションアプリケーションOracle

ファイルディレクトリ

CSV

新HRMサーバ新HRMサーバ

     HRM

    アプリケーションアプリケーションアプリケーションアプリケーションOracle

ファイルディレクトリ

CSV

社員ID、氏名社員ID、氏名

社員生年月日社員生年月日

社員(役職)社員(役職)

CSVファイルの内容ファイルの内容ファイルの内容ファイルの内容CSV

...

日次バッチでファイルを転送

ESB Mule

システム切り替え

システム切り替え

インタフェース

インタフェース

注:CSVファイル項目は全てString型として扱われる

Page 26: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

26

フェーズ2

処理共有

Page 27: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

27

サービスの洗い出しとESBの進め方

処理A’

処理A”

処理A

処理C

処理B

処理B’

処理C’

処理処理処理処理A

処理処理処理処理C

処理処理処理処理B

A’

C’

A”

B’

ESB Mule

従来のシステム従来のシステム ESBのシステムESBのシステム

各アプリケーションで類似した処理を実装

類似した処理をサービスとして定義してESBを介し

て利用できるようにする。サービスの一括管理を可能にする

Page 28: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

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

新規追加

Page 29: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

29

フェーズ3

サービス共有

Page 30: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

30

人事-HRMシステムの切り替え

新HRMサーバ新HRMサーバ

     HRM

    アプリアプリアプリアプリ      ケーション      ケーション      ケーション      ケーション

Oracle

ESB Mule

新人事システム新人事システム

新人事新人事新人事新人事アプリケーションアプリケーションアプリケーションアプリケーション

SQL Server

1.複数システムからのビジネスルールに基づいてデータを集約して、一つのインタフェースで提供する2.ESB Muleを利用することで、利用者インタフェースは提供者イ

ンタフェースと分離できる

インタフェース

インタフェース

PeopleSoftPeopleSoft

アプリケーションアプリケーションアプリケーションアプリケーション

Oracle

LotusLotus

アプリケーションアプリケーションアプリケーションアプリケーション

Notes

インタフェース

インタフェース

XLS,CSV

ファイル

メール(例:POP3)

インタフェース

インタフェース

集約したデータ

Page 31: ESB Mule による SOA 小沖仁 - ネットワーク利用技術 …h_ozawa/mule/manual/MuleIntro.pdfESB Muleはサービス利用者に暷小の影響でプロセスフロー、

31

ありがとうございました