第85回 JavaEE 読書会に参加してきました
第85回 JavaEE 読書会に参加してきました。
Enterprise Integration Patternsという本の読書会です。
進め方
- 全体をざっくり
- 詳細を議論
- 詳細議論までいけると better
トピック
- 長い眠りから覚醒めた GOOS が9月に出版されます
- 「サービスデザインパターン」が出版されます
- 福岡で G*ワークショップ(9月1日 G*ワークショップ in 福岡 #jggug)があります
JBoss ESB (SwitchYard)のデモ
解説
- JBoss は高速化しています!
- 並列化が効いてます
- quickstart にいろいろはいってます
- camel-jms-binding をデモします
- シンプルなパイプ・フィルターパターンの例です
- Queue からコンポーネントに渡す、という定義になっている
- コンポーネントを実装している Bean の method binding はどうやっている?
- Bean にメソッドが1つしか無ければそれが適用されるが、2つ以上あるなら設定が必要
- 型安全とか考えないのが ESB なので ClassCastException が出たり
- 静的チェックが出来ないので runtime でのテストが重要
- コンポーネントを実装している Bean の method binding はどうやっている?
- デプロイ
- テスト
- JMS セッションからコンポーネントを呼び出すようになってる
質疑とか
-
- AP サーバから Web Service へのリクエストをキューイングするとかに使えるのかなと
- ActiveMQ 使えないですかね
- メッセージのバリデーションとかはクライアントはやらないものですか?
- クライアント側でもやればいいですし
- switchyard は宣言的なバリデーションをするとかの仕組みがある
- ESB 的には検証サービスをルーティングするとかも
- キューイングサービス自体には検証する責務を置くべきじゃないのかなとか
- JMS の考え方としてはとりあえず放り込んじゃえ、というものですが、途中に Web サービス挟んだりすることは可能ですね
- EIP には「DB はデータを置いておく仕組み、キューやチャンネルはコミュニケーションをするための仕組み」とあるので
- 個人的にはキューの冗長性を確保する仕組みに興味があります
- 製品によって考え方とか癖とかがあるので面白い
- 1台構成で超高性能みたいなのよく見るけど耐障害性とかスケールアウトするような仕組みってあまり聞かないですね
- MOM と ESB どっちがいいのか?
- AP サーバから Web Service へのリクエストをキューイングするとかに使えるのかなと
休憩
-
- kobo 可愛いよ kobo
- フルカラーで漫画読めるやつ、すごい
- JoJo 的なチョククランチ!
- http://www.pierreherme.co.jp/item/glaces_et_sorbets/(゚д゚)ウマー
二章から
Introduction
-
- 星取表になってる、わけじゃないけど、できそう
- X がつかなければいいんじゃないか、みたいな
- Application Integration Option を選択するふわっとした観点
- 星取表になってる、わけじゃないけど、できそう
Shared Database
- index 問題
- パフォーマンス的に矛盾してしまうということがある
- スケールしない問題
- 統合データベースが適してるユースケースはあるのか?
- RPC で同じデータベースを参照するような統合、というのはあった
- MDM(Master Data Management) という考え方
- 6つくらいの戦略的なパターン
- 優劣ではなく条件に合ったパターンを
- マスターデータを持たせる、という話になると困ってしまうのだけど、更新データだけを持たせるなどの考え方は無いのかしら
- 登録、更新といったイベントのインターフェースを設けるというのはありますね
- それ、MOM で出来るよ
- アプリケーションに組まれる仕組みとか
- メッセージングの枠組みでトランザクション情報をまとめて、というような使い方ってあるんですかね
センターカット処理 というものがあります- 勘定系システムの伝統的な処理方式のようでした
- コンピュータシステム>バッチ(一括処理)型システム>オンラインバッチ(オンバッチ)
Remote Procedure Invocation
- 使います?
- Web サービスも RPC と考えることができますよね。であれば使います。
RESTFull じゃなくてREST風
- 呼び出し元で発生したタイムアウトをサーバ側がキャンセルできるんでしたっけ?
- クライアントが完了できなかったトランザクションをサーバ側でコミットしてしまう問題
- 普通はトランザクションを開始するとかの情報を RMI に渡すよね
- Web サービスにも Ws-Transaction とかありますし
- なにそれ派、懐かしい派、CORBA でいいじゃん派
- 某巨大システムで使われていたとかの情報
- 注文系の Web サービスは取り消しできないのつらい…
Messaging
- メッセージングの特性に合わせた改修がどんなシステムにも適用できるかというとそうでもなさそう
- ルーティング
- 非同期
- ヘテロジニアスなシステムにおいてメッセージングを導入すること自体が問題になる
- Web サービスはみなさんよくお使いですよね?
- Ws-XXX とか面倒くさいのに
- メッセージングを全面的に採用システムってあるんですかね?
- 某社の某システムでは独自実装だったり
- 学習コストとかよりはプロダクト自体が高価だったとかの問題の方が比重が高かったかと
- アーキテクチャがイメージできない問題
- 後半読めばヒントが掴めるのかも…
- 慣れの問題?
- File Transfer、Shared Database、Remote Procedure Invocation あたりなら「まぁ、やりましょう」で済みそう
- メッセージングはちゃんとした設計が必要になりそうで敷居が高い感