Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
実践EIP入門 ― Apache CamelでEIPを使いこなす
Search
Tadayoshi Sato
August 29, 2024
Programming
0
140
実践EIP入門 ― Apache CamelでEIPを使いこなす
「現場から学ぶモデル駆動の設計 - 実践!インテグレーションパターン」発表資料。
https://modeling-how-to-learn.connpass.com/event/233934/
Tadayoshi Sato
August 29, 2024
Tweet
Share
More Decks by Tadayoshi Sato
See All by Tadayoshi Sato
Domain-Driven Design Retrospective
tadayosi
0
33
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
tadayosi
0
37
ブレイクスルーと文学 - The Breakthrough and Literature
tadayosi
0
28
JJBUG 2013 - SwitchYard
tadayosi
0
20
Red Hat の日本でできるグローバルな働き方
tadayosi
0
28
Red Hat Tech Night 2018 - Apache Camel
tadayosi
0
15
Red Hat Tech Night 2019.5 - Camel 3 and Beyond...
tadayosi
0
18
Other Decks in Programming
See All in Programming
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
110
Cursor AI Agentと伴走する アプリケーションの高速リプレイス
daisuketakeda
1
130
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
420
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
850
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.5k
XP, Testing and ninja testing
m_seki
3
200
ニーリーにおけるプロダクトエンジニア
nealle
0
540
技術同人誌をMCP Serverにしてみた
74th
1
380
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
690
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
17
5k
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
570
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
200
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
5
220
The Pragmatic Product Professional
lauravandoore
35
6.7k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Bash Introduction
62gerente
614
210k
Producing Creativity
orderedlist
PRO
346
40k
Gamification - CAS2011
davidbonilla
81
5.3k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Transcript
実践EIP入門 Apache CamelでEIPを使いこなす 2022.2.9 佐藤 匡剛 @tadayosi レッドハット株式会社 シニアソフトウェアエンジニア 現場から学ぶモデル駆動設計
今日話すこと • EIPってなに? • EIPとアーキテクチャ • Apache Camelによる実践 • 最新の話題
EIPってなに? 2003年に出版されたもうひとつの書籍 アプリケーションに非同期メッセージングを導 入するためのパターンランゲージ https://www.enterpriseintegrationpatterns.com/patterns/messaging/ インテグレーション = システムとシステムを接続すること
インテグレーションの基本パターン ④ メッセージング ① ファイル転送 ② 共有データベース ③ リモート手続き呼び出し(RPC)
メッセージングの何がいいの? リアクティブ 「即応性」「耐障害性」「弾力性」のあるシステムを実現できる 結合性の排除 コード上だけでなく時間的な結合も排除できる(temporal decoupling) 業務モデルの自然な実現 業務がすべて同期的に行われる訳ではない
パターンランゲージ ランゲージ = ソフトウェア開発のストーリーを上から下までパターンで表現できるもの 単なるカタログではない( GoFデザインパターン) インテグレーションのストーリー: 開発:エンドポイント(送信側) → メッセージ生成
→ 通信チャネル → ルーティング → メッセージ変換 → エンドポイント(受信側) 運用:システム監視・管理
Source: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ メッセージングのパターン メッセージ変換 メッセージ生成 メッセージルーティング メッセージングエンドポイント メッセージングチャネル システム管理
メッセージングチャネル 通信の形態 • ポイント・ツー・ポイント(P2P) • パブリッシュ・サブスクライブ(Publish-Subscribe) 異常系のためのチャネル • 無効メッセージチャネル(Invalid Message
Channel) • 配信不能メッセージチャネル(Dead Letter Channel) 通信の信頼性 • 配信保証(Guaranteed Delivery)
メッセージ生成 メッセージの種類 • コマンドメッセージ • ドキュメントメッセージ • イベントメッセージ 双方向性 •
リクエストリプライ • 返信アドレス メッセージ間の関連付け・有効期限 • 相関識別子 • メッセージ順序 • メッセージ期限
メッセージルーティング ルーティングの基本 • コンテンツベースルーター(CBR) • メッセージフィルター • 宛先リスト メッセージを増やしたり減らしたり並べ替えたり •
スプリッター • アグリゲーター • リシーケンサー 応用編 • 組立式メッセージプロセッサー • スキャッター・ギャザー • 回覧票(Routing Slip)
メッセージ変換 メッセージ変換の基本 • コンテンツエンリッチャー • コンテンツフィルター 応用編 • 荷物預かり(Claim Check)
• ノーマライザー • カノニカルデータモデル
メッセージングエンドポイント メッセージ受信の方法 • ポーリングコンシューマー • イベント駆動コンシューマー • 競合コンシューマー • メッセージディスパッチャー
• 選択コンシューマー トランザクション • トランザクショナルクライアント メッセージ受信の信頼性 • 永続サブスクライバー • 冪等レシーバー
システム管理 ルートの管理 • コントロールバス • 迂回路(Detour) • 盗聴(Wire Tap) メッセージの管理
• メッセージ履歴 • メッセージストア テスト • テストメッセージ • チャネルパージャー
アーキテクチャの話 アプリケーションアーキテクチャをどうするか • 3層アーキテクチャ? • クリーンアーキテクチャ? • マイクロサービス? どの視点から見るか •
腐敗防止層/メッセージングマッパー • コレオグラフィーとオーケストレーション • コンテキストマッピング μs μs μs μs μs
Javaベース のインテグレーショ ンフレームワーク 流れるようなルーティングDSL EIPの完全実装 300以上 の接続コンポーネント& データフォーマット
サポートするランタイム Spring Boot Quarkus WildFly(Jakarta EE) Apache Karaf(OSGi) Kubernetes/OpenShift(Camel K)
300以上のコンポーネント&データフォーマット対応
EIPの完全実装 パターンってライブラリ化していいんだっけ? 一般にデザインパターンのコード再利用はアンチパターン しかしEIPはソリューション を再利用できる コンテキスト と問題の検討が重要!
コンテンツベースルーター
サンプル①:Twitterのログをローカルに書き出す
サンプル②:WebサービスのJSONデータを加工する Globe icon made by Vitaly Gorbachev from www.flaticon.com
DEMO
Apache CamelでEIPをはじめるには? 公式のサンプルプロジェクトを動かしてみる • https://github.com/apache/camel-examples • https://github.com/apache/camel-spring-boot-examples • https://github.com/apache/camel-quarkus-examples 日本語で読めるApache
Camel開発ガイド(Red Hatアカウント不要) • https://access.redhat.com/documentation/ja-jp/red_hat_fuse/7.10/html/a pache_camel_development_guide/index ブログ記事 • Apache Camelによるマイクロサービスの開発方法 https://qiita.com/tadayosi/items/e310c825689a1ed69b08 • Apache CamelとJBangによるインテグレーションスクリプティング https://zenn.dev/tadayosi/articles/d56bb322dec6f6
最新の話題 - Apache Camel K Source: https://www.nicolaferraro.me/2018/10/15/introducing-camel-k/ “K”は Kubernetes /
Knative の K OperatorベースのクラウドネイティブなApache Camel
DEMO
END