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
190
実践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
37
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
tadayosi
0
40
ブレイクスルーと文学 - The Breakthrough and Literature
tadayosi
0
32
JJBUG 2013 - SwitchYard
tadayosi
0
25
Red Hat の日本でできるグローバルな働き方
tadayosi
0
39
Red Hat Tech Night 2018 - Apache Camel
tadayosi
0
17
Red Hat Tech Night 2019.5 - Camel 3 and Beyond...
tadayosi
0
23
Other Decks in Programming
See All in Programming
AtCoder Conference 2025
shindannin
0
850
Navigating Dependency Injection with Metro
l2hyunwoo
1
200
Implementation Patterns
denyspoltorak
0
140
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
580
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
510
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
230
Deno Tunnel を使ってみた話
kamekyame
0
290
Cap'n Webについて
yusukebe
0
160
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
300
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Rubyで鍛える仕組み化プロヂュース力
muryoimpl
0
260
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
37
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Prompt Engineering for Job Search
mfonobong
0
130
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
180
Odyssey Design
rkendrick25
PRO
0
450
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
34
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
WENDY [Excerpt]
tessaabrams
9
35k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
42
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Google's AI Overviews - The New Search
badams
0
880
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
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