jjug_ccc_fall_ykonno.pdf
by
Yusuke Konno(Rakus)
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
ご清聴ありがとうございました!