🐥
実践!インテグレーションパターン
概要
2022/02/09に開催された下記勉強会のメモです
セッション
実践EIP入門 ― Apache CamelでEIPを使いこなす
インテグレーションの基本パターン
- ファイル転送
- 共有データベース
- リモート手続き呼び出し(RPC)
- メッセージング
EIPは4.の話
メッセージングの何が良いか
- リアクティブ
- 結合性の排除
- 業務モデルの自然な実現
パターンランゲージ=単なるカタログではない
メッセージングのパターン
- メッセージングチャネル
- メッセージ生成
- メッセージルーティング
- メッセージ変換
- メッセージエンドポイント
- システム管理
EIPはソリューションを再利用できる
Apache CamelとEIP
その他参考資料
curlで天気予報
おまけ:
EIPの著者が書かれた有名な記事
Azureのクラウド設計パターン
Camelデザインパターンの紹介
EIPとAkkaについて
配送保証のパターンの解説
通信は届かない(ことがある)
アナロジー:二人の将軍問題
メッセージ配送の信頼性(信頼性の低い順、ただし順にコストが高くなる)
- At-Most-Once Delivery(0または1回配送)
- 届かないことがある
- At-Least-Once Delivery(少なくとも1回)
- メッセージ重複の可能性がある
- 送信側にディスクが必要
- Exactly-Once Delivery(正確に1回)
- 受信側にもディスクが必要
EIPの配送保証(At-Least-Once)
メッセージングシステムがデータストアにメッセージを保存
メッセージが正常に送信されたらデータストアから削除
kafkaでは同じようなことをやっている
※永続化について、ディスクに書くと遅いんじゃないの?みたいな話あるけどそんなことないよ的なことが書いてあります(超訳ですが間違ってたらすみません)メッセージの永続性は信頼性を高めるがパフォーマンスは犠牲になる
パターンの採用はトレードオフ
実装例サンプル
おまけ:
JavaEE勉強会 EIP
アプリケーションクラスの設計パターンとしてのEIP
EIPはアプリケーションの設計パターンとして参考になる
- 処理の構造化(クラスの役割分担)のパターン
- 関心事の分離:並列化
- 関心事の分離:直列化
- 関心の分離:分岐
- ソース=>分割=>振分け=>個別処理=>集約
- メッセージ内容(情報)の扱い方のパターン
- エンリッチ:必要な情報を付加する
- フィルター:不要な情報を取り除く
- 荷物を預かり引換券を渡す
- データ形式の正規化
Discussion