S3 - Seasarイベントサイト

Seasar Conference
2006 Spring
企業システム進化論
~Seasarファミリー for SOA
2006.05.14
The Seasar Foundation
タワーズクエスト株式会社
和田 卓人
© The Seasar Foundation and the others 2006. all rights reserved.
1
自己紹介
• 名前:和田 卓人(わだ たくと)
• ブログ: http://d.hatena.ne.jp/t-wada
• メール : [email protected]
• S2AnA, S2Continuations, S2Buri, S2Coffeeコミッタ
– (S2Buriに関してはプレゼン専門コミッタ)
• タワーズクエストという会社を経営しています
• 一緒に仕事する仲間募集中!!
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
2
(ちょっと宣伝) Life Hacks PRESS
Life Hacks PRESS
B5判、168ページ
定価1,596円(税込)
ISBN 4-7741-2728-0
3月24日発売
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
3
今日のアジェンダ
• 企業システムとは
• 企業システムの進化とSeasar
– 孤島段階
– ネットワーク化段階
– プロセス制御段階
• レイヤ分割とPOJOの資産化
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
4
企業システムの特徴
• 企業内外の組織やプロセス、ビジネスモデルと
密接に関係する
– 動く的(Moving Target)
• システムが使われる期間が長い
• システムに手を入れつづける
• 複数のシステムが五月雨式に導入されることも
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
5
分散するべきか否か
• 業界のトレンドは集中/分散の繰り返し
– なにが答えなのかわからない
– ハード主導のパラダイム?
• 失敗も多かった
– しかし全てが間違いというわけではない
– 知識を得てらせん状に進化していく
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
6
企業システムの進化段階
• 孤島段階
• ネットワーク化段階
• プロセス制御段階
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
7
避けられない分散
• 孤島システムばかり作っていませんか
• 企業システムは作られて終わりではない
– 開発が終わったらもうシステムとして使われだす
– 新しくシステムを構築する場合は別システムとして
– 何らかの形でデータ連携/システム連携が必要にな
る
• バッチによるデータ連携
• リアルタイム連携
– リアルタイム連携 → 分散システム
• 「統合データベース」は成功していない
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
8
孤島システムの群れ
購買システム
1983年導入
人事システム
1988年導入
ZZシステム
200X年
導入予定
ばらばら
XXシステム
1996年導入
Seasar Conference
2006 Spring
YYシステム
2004年導入
© The Seasar Foundation and the others 2006. all rights reserved.
9
避けられない分散
• Seasarであるにしろないにしろ、企業システム
はやがて「分散システム」というテーマに立ち向
かわざるを得ない
• ではSeasarは分散システムというテーマにどう
立ち向かうのか。どう「易しく、優しく」してくれる
のか。
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
10
企業システムの進化段階
• 孤島段階
• ネットワーク化段階
• プロセス制御段階
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
11
分散の二つのパターン
• 同期通信
• 非同期通信
• Seasarはどちらの通信方法にも対応できる
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
12
同期通信
Server1
Server2
1
Server2の
処理が終わ
るまでブロッ
クされる
2
3
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
13
Seasarの同期通信用のプロダクト群
• Seasarファミリーの分散同期通信用プロダクト
– S2Remoting
– S2Axis
– S2RMI
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
14
S2Remoting
• 同期通信の詳細をクライアントから隠蔽する
– 通信自体はコネクタとアダプタの実装に委譲する
• S2AxisとS2RMIを隠蔽
– クライアントはS2Axisで通信しているのかS2RMIで
通信しているのか関係なくなる
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
15
S2Remoting概念図
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
16
S2Remoting概念図
S2Remoting
S2Axis or S2RMI
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
17
S2Axis
• Apache AxisをSeasarから使いやすくするため
のプロダクト
• S2Remotingを使用してクライアントから透過的
にサーバ上のコンポーネントにアクセスできる
• コンポーネントをWebサービスとして簡単に公開
できる
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
18
コンポーネントをWebサービスとして公開
• 恐ろしいほど簡単
– コンポーネントのmetaタグに設定を加えるのみ
<component name="Echo" class="examples.EchoImpl">
<meta name="axis-service"/>
</component>
たったこれだけ!
• AutoRegister(コンポーネントの自動登録機能)を使って
いる場合には、一箇所にメタデータ登録用の設定を行う
のみで公開したいコンポーネントをWebサービスとして公
開できる
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
19
S2RMI
• サーバ上のコンポーネントにRMIを使用してアク
セスできる
• S2Remotingを使用してクライアントから透過的
にサーバ上のコンポーネントにアクセスできる
• RMIなのでパフォーマンスが(他の分散方法より
も)良い
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
20
S2Axis? それともS2RMI?
• S2Axis
– 拡張性 : 高
• SOAPを扱えるクライアントから接続できる
– 結合度 : 中
– パフォーマンス : 中
• S2RMI
– 拡張性 : 低
• クライアントはJavaに限られる
– 結合度 : 高
– パフォーマンス : 高
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
21
非同期通信
Server1
Server2
1
Server1は
Server2の
終了を待た
ない
Seasar Conference
2006 Spring
2
© The Seasar Foundation and the others 2006. all rights reserved.
22
非同期通信
• MOM
– 非同期通信用のミドルウェア
• Websphere MQ
• ActiveMQ
• JMS
– MOMをJavaから扱うためのAPI
– DBに対するJDBCのような関係
• 低レベル(実装に近い)APIという点でも同様
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
23
MOM
Server1
メッセージが
キューイン
グされる
Server2
1
MOM
2
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
24
Seasarの非同期通信用のプロダクト
• S2JMSファミリー
– S2JMS
• JMSプログラミングをSeasarの機能をつかって単純化
– S2JMS-ActiveMQ
• JMSを使用した非同期通信をActiveMQ上で実現
– S2JMS-Container
• J2EEコンテナに依存せずにJMSを利用するための自前
JMSコンテナ
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
25
S2JMS
• SeasarからJMSを使用するためのプロダクト
• メッセージの送信、受信もPOJOで行えるように
なる
– POJOにアノテーションを付加することで実現
– メッセージ送信用のインターセプタを使うことによっ
て、メッセージ送信のコードがロジックから消える!!
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
26
• ここまでで、Seasarで分散システムを構築する
道具立てが揃う
• 次に出てくる問題は?
→ 企業の業務プロセスの管理
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
27
企業システムの進化段階
• 孤島段階
• ネットワーク化段階
• プロセス制御段階
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
28
プロセスが問題に
• 業務プロセスがシステム内に断片的に存在する
– メンテナンス性が低い
– プロセス変更に弱い
• 個々の業務ロジックより業務プロセスのほうが
寿命が短い
– 業務プロセスは業務プロセスとして、システムで管
理する必要がある
→ ワークフローマネジメントシステム導入の必要
性
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
29
S2Buri
• Seasar発のワークステートエンジン
– ワークフローエンジンの機能を備える
– プロセス(業務フロー)の状態を管理する
• DBから状態制御用のフラグが消える
• 複数のシステムや人を介する処理(ロングトランザクショ
ン)の制御が可能になる
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
30
S2Buri
中継層を利用
して外部コン
ポーネントの
呼出し
プロセスを待
ち状態に
プロセスを
条件分岐
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
31
企業システムをレイヤ分割する
プロセス層
S2Buri
中継層
S2Axis, S2JMS
基本ロジック層 POJO, S2Dao, …
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
32
レイヤ分割の効果
• 基本ロジック層は中継層やプロセス層に依存しない
→ 結合度が低く、再利用性が高い
• 中継層は用途に応じてSeasarファミリーの中から選択、
変更できる
→ 通信技術に依存しない分散システムを構築可能
• 業務プロセスは変更されやすいのでプロセス層で集中
管理する
安定度に応じてレイヤ分割
アーキテクチャと技術の詳細の分離
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
33
資産としてのPOJO
• POJO(Plain Old Java Object)
– 特定のフレームワークやAPIに依存しない「普通の」
Javaオブジェクト
– 透明性
– ピュアなロジック
• 「POJOであること」が本当の資産化
– POJOとJUnitが長く残る資産
• 資産とアーキテクチャの分離
– POJOは中継層やプロセス層に依存しない
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
34
まとめ
• 分散システムにもSeasarは適応可能
– 同期通信
• S2Axis
• S2RMI
– 非同期通信
• S2JMS
• 最初から分散のことを考えなくても良い
• 業務プロセス制御もS2Buriにより可能になる
• レイヤ分割とPOJOの遵守が勝利のカギ
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
35
登場したプロダクトのロードマップ
• S2Axis
– Apache Axis2対応 → S2Axis2開発(6月中予定)
• S2JMS
– マイルストーンリリース(イベント前日予定)
– ドキュメントを整備して正式リリース(6月予定)
• S2Buri
– 秋の始め頃に0.3.0をリリース、その後1.0リリース
• パフォーマンス改善
• 権限機能強化
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
36
Special Thanks
• S2Remoting,S2Axis,S2RMI,S2JMS,S2Buriコ
ミッタチームの皆様
• S2Containerのコミッタチームの皆様
• Seasar Conference 2006 Springスタッフの皆
様
• そして、Seasar Conference 2006 Springにお
越しくださった皆様、ありがとうございました
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
37
ご清聴
ありがとう
ございました
Seasar Conference
2006 Spring
© The Seasar Foundation and the others 2006. all rights reserved.
38