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
jjug_ccc_fall_ykonno.pdf
Search
Yusuke Konno(Rakus)
December 02, 2022
Technology
0
1k
jjug_ccc_fall_ykonno.pdf
Yusuke Konno(Rakus)
December 02, 2022
Tweet
Share
More Decks by Yusuke Konno(Rakus)
See All by Yusuke Konno(Rakus)
20210901_lt.pdf
yusukekonnorakus
0
20
meetup_20210608_kintai.pdf
yusukekonnorakus
0
1.5k
Other Decks in Technology
See All in Technology
20260114_データ横丁 新年LT大会:2026年の抱負
taromatsui_cccmkhd
0
140
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
910
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
1.2k
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
490
First-Principles-of-Scrum
hiranabe
4
2k
Qiita Bash アドカレ LT #1
okaru
0
190
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Data Hubグループ 紹介資料
sansan33
PRO
0
2.6k
歴史から学ぶ、Goのメモリ管理基礎
logica0419
14
2.7k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
6.2k
次世代AIコーディング:OpenAI Codex の最新動向 進行スライド/nikkei-tech-talk-40
nikkei_engineer_recruiting
0
140
Claude Codeを使った情報整理術
knishioka
20
12k
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.5k
First, design no harm
axbom
PRO
2
1.1k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
84
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
100k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Discover your Explorer Soul
emna__ayadi
2
1k
RailsConf 2023
tenderlove
30
1.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
New Earth Scene 8
popppiees
1
1.4k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
150
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
©2022 RAKUS Co., Ltd. Javaで実現する フォールトトレランス 〜Resilience4jを使ったサーキットブレーカーの実装〜 株式会社ラクス 今野裕介
今野裕介(こんのゆうすけ) • 株式会社ラクス所属 • サーバーサイドエンジニア • 楽楽勤怠の開発に従事 • チーム内における役割 ◦
打刻機能をメインに新機能開発を担当 ◦ 他にも開発プロセスの改善などいろいろやってます 2
サーキットブレーカーパターンとは • マイクロサービスなどでカスケード障害に対応するために採用される • 障害を検知したサービスへのリクエストを予め遮断する ◦ 局所的な問題がシステム全体に波及しないようにする ◦ 予め遮断することで応答が速くなる 3
Resilience4jの概要 • Javaのフォールトトレラント用のライブラリ ◦ サーキットブレーカー以外にもリトライ、流量制御、 タイムアウトハンドリングなどができる • 各要素を組み合わせて適用できる ◦ サーキットブレーカー+リトライなど
• 内部依存しているのはvavrのみ 4
サーキットブレーカーのステート • CLOSED、OPEN、HALF_OPENの3つがある ◦ CLOSED:ブレーカーは未稼働=すべてのリクエストが通る ◦ OPEN:ブレーカーは稼働=すべてのリクエストを遮断 ◦ HALF_OPEN:ブレーカーは半稼働=一部のリクエストだけ通す 5
CLOSED OPEN HALF_OPEN
実装のステップ • 実装はたったの3ステップ ◦ 設定を作る ◦ リクエスト部分をデコレートする ◦ デコレートした処理を実行する •
サーキットブレーカー以外も上記の方法で実現できる ◦ また、複数のフォールトトレランスを組み合わせられる 6
コードサンプル(サーキットブレーカー) 7
リトライ • デコレートした処理を指定回数だけやりなおす処理 ◦ 偶発的な失敗をリカバリするのに向いている • 実装方法はサーキットブレーカーと同様に3ステップ ◦ 設定 =>
デコレーション => 実行 8
コードサンプル(リトライ) 9
コードサンプル(組み合わせ) 10
勤怠管理システムでの適用例 • ICカード打刻機能で採用 ◦ 専用端末によるICカード打刻用のマイクロサービス ◦ 独立したインフラ・アプリケーションを構築している • 勤怠管理本体に対してリクエストを送る際に適用 ◦
本体と通信が不通な場合に備え、パターン適用 ◦ 他にはリトライも適用 11
勤怠管理システムでの適用例 ICカード 打刻端末 打刻アプリ ケーション 本体 同期バッチ ① ④ ②
③ A B サーキットブレーカー+リトライ リトライのみ 12
まとめ • Resilience4jで簡単にサーキットブレーカーを実現できる! • Resilience4jは適用も簡単! ◦ 設定 => 対象処理のデコレート =>
実行の3ステップ ◦ 複数のフォールトトレランスの組み合わせもかんたん 13
ご清聴ありがとうございました!