Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
22
実践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
16
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
tadayosi
0
19
ブレイクスルーと文学 - The Breakthrough and Literature
tadayosi
0
15
JJBUG 2013 - SwitchYard
tadayosi
0
8
Red Hat の日本でできるグローバルな働き方
tadayosi
0
16
Red Hat Tech Night 2018 - Apache Camel
tadayosi
0
7
Red Hat Tech Night 2019.5 - Camel 3 and Beyond...
tadayosi
0
6
Other Decks in Programming
See All in Programming
Enabling DevOps and Team Topologies Through Architecture: Architecting for Fast Flow
cer
PRO
0
410
Vue.js_好きに捧ぐ Nuxt Hub で簡単に始めるCloudflare
xiombatsg
1
100
社内活動の取り組み紹介 ~ スリーシェイクでこんな取り組みしてます ~
bells17
0
360
Better Code Design in PHP
afilina
PRO
0
140
Swift Testing - iPlayground
chiaoteni
0
140
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
130
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
2.3k
as(型アサーション)を書く前にできること
marokanatani
10
3k
layerx_20241129.pdf
kyoheig3
1
180
Discord Bot with AI -for English learners-
xin9le
0
100
カンファレンスの「アレ」Webでなんとかしませんか? / Conference “thing” Why don't you do something about it on the Web?
dero1to
1
150
聞き手から登壇者へ: RubyKaigi2024 LTでの初挑戦が 教えてくれた、可能性の星
mikik0
1
140
Featured
See All Featured
A better future with KSS
kneath
238
17k
Statistics for Hackers
jakevdp
796
220k
A Philosophy of Restraint
colly
203
16k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Side Projects
sachag
452
42k
RailsConf 2023
tenderlove
29
910
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Building Adaptive Systems
keathley
38
2.3k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
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