$30 off During Our Annual Pro Sale. View Details »
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
180
実践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
39
ブレイクスルーと文学 - The Breakthrough and Literature
tadayosi
0
31
JJBUG 2013 - SwitchYard
tadayosi
0
25
Red Hat の日本でできるグローバルな働き方
tadayosi
0
36
Red Hat Tech Night 2018 - Apache Camel
tadayosi
0
16
Red Hat Tech Night 2019.5 - Camel 3 and Beyond...
tadayosi
0
21
Other Decks in Programming
See All in Programming
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
240
ID管理機能開発の裏側 高速にSaaS連携を実現したチームのAI活用編
atzzcokek
0
190
AIコードレビューがチームの"文脈"を 読めるようになるまで
marutaku
0
310
Microservices rules: What good looks like
cer
PRO
0
580
スタートアップを支える技術戦略と組織づくり
pospome
8
15k
Why Kotlin? 電子カルテを Kotlin で開発する理由 / Why Kotlin? at Henry
agatan
2
6.3k
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
150
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
150
AIコーディングエージェント(Manus)
kondai24
0
130
How Software Deployment tools have changed in the past 20 years
geshan
0
28k
CSC305 Lecture 17
javiergs
PRO
0
270
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
11
6.9k
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Invisible Side of Design
smashingmag
302
51k
Bash Introduction
62gerente
615
210k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Designing Experiences People Love
moore
142
24k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
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