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
870
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
16
meetup_20210608_kintai.pdf
yusukekonnorakus
0
1.4k
Other Decks in Technology
See All in Technology
TechLION vol.41~MySQLユーザ会のほうから来ました / techlion41_mysql
sakaik
0
180
Model Mondays S2E02: Model Context Protocol
nitya
0
220
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
170
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
4
480
25分で解説する「最小権限の原則」を実現するための AWS「ポリシー」大全 / 20250625-aws-summit-aws-policy
opelab
9
1.1k
急成長を支える基盤作り〜地道な改善からコツコツと〜 #cre_meetup
stefafafan
0
120
エンジニア向け技術スタック情報
kauche
1
250
生成AIでwebアプリケーションを作ってみた
tajimon
2
150
生成AI時代 文字コードを学ぶ意義を見出せるか?
hrsued
1
330
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
1.6k
Prox Industries株式会社 会社紹介資料
proxindustries
0
290
Postman AI エージェントビルダー最新情報
nagix
0
110
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
RailsConf 2023
tenderlove
30
1.1k
Writing Fast Ruby
sferik
628
61k
Practical Orchestrator
shlominoach
188
11k
Designing for humans not robots
tammielis
253
25k
Facilitating Awesome Meetings
lara
54
6.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
GitHub's CSS Performance
jonrohan
1031
460k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Docker and Python
trallard
44
3.4k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
A better future with KSS
kneath
239
17k
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
ご清聴ありがとうございました!