jjug_ccc_fall_ykonno.pdf
by
Yusuke Konno(Rakus)
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
©2022 RAKUS Co., Ltd. Javaで実現する フォールトトレランス 〜Resilience4jを使ったサーキットブレーカーの実装〜 株式会社ラクス 今野裕介
Slide 2
Slide 2 text
今野裕介(こんのゆうすけ) ● 株式会社ラクス所属 ● サーバーサイドエンジニア ● 楽楽勤怠の開発に従事 ● チーム内における役割 ○ 打刻機能をメインに新機能開発を担当 ○ 他にも開発プロセスの改善などいろいろやってます 2
Slide 3
Slide 3 text
サーキットブレーカーパターンとは ● マイクロサービスなどでカスケード障害に対応するために採用される ● 障害を検知したサービスへのリクエストを予め遮断する ○ 局所的な問題がシステム全体に波及しないようにする ○ 予め遮断することで応答が速くなる 3
Slide 4
Slide 4 text
Resilience4jの概要 ● Javaのフォールトトレラント用のライブラリ ○ サーキットブレーカー以外にもリトライ、流量制御、 タイムアウトハンドリングなどができる ● 各要素を組み合わせて適用できる ○ サーキットブレーカー+リトライなど ● 内部依存しているのはvavrのみ 4
Slide 5
Slide 5 text
サーキットブレーカーのステート ● CLOSED、OPEN、HALF_OPENの3つがある ○ CLOSED:ブレーカーは未稼働=すべてのリクエストが通る ○ OPEN:ブレーカーは稼働=すべてのリクエストを遮断 ○ HALF_OPEN:ブレーカーは半稼働=一部のリクエストだけ通す 5 CLOSED OPEN HALF_OPEN
Slide 6
Slide 6 text
実装のステップ ● 実装はたったの3ステップ ○ 設定を作る ○ リクエスト部分をデコレートする ○ デコレートした処理を実行する ● サーキットブレーカー以外も上記の方法で実現できる ○ また、複数のフォールトトレランスを組み合わせられる 6
Slide 7
Slide 7 text
コードサンプル(サーキットブレーカー) 7
Slide 8
Slide 8 text
リトライ ● デコレートした処理を指定回数だけやりなおす処理 ○ 偶発的な失敗をリカバリするのに向いている ● 実装方法はサーキットブレーカーと同様に3ステップ ○ 設定 => デコレーション => 実行 8
Slide 9
Slide 9 text
コードサンプル(リトライ) 9
Slide 10
Slide 10 text
コードサンプル(組み合わせ) 10
Slide 11
Slide 11 text
勤怠管理システムでの適用例 ● ICカード打刻機能で採用 ○ 専用端末によるICカード打刻用のマイクロサービス ○ 独立したインフラ・アプリケーションを構築している ● 勤怠管理本体に対してリクエストを送る際に適用 ○ 本体と通信が不通な場合に備え、パターン適用 ○ 他にはリトライも適用 11
Slide 12
Slide 12 text
勤怠管理システムでの適用例 ICカード 打刻端末 打刻アプリ ケーション 本体 同期バッチ ① ④ ② ③ A B サーキットブレーカー+リトライ リトライのみ 12
Slide 13
Slide 13 text
まとめ ● Resilience4jで簡単にサーキットブレーカーを実現できる! ● Resilience4jは適用も簡単! ○ 設定 => 対象処理のデコレート => 実行の3ステップ ○ 複数のフォールトトレランスの組み合わせもかんたん 13
Slide 14
Slide 14 text
ご清聴ありがとうございました!