Upgrade to Pro — share decks privately, control downloads, hide ads and more …

jjug_ccc_fall_ykonno.pdf

 jjug_ccc_fall_ykonno.pdf

Yusuke Konno(Rakus)

December 02, 2022
Tweet

More Decks by Yusuke Konno(Rakus)

Other Decks in Technology

Transcript

  1. ©2022 RAKUS Co., Ltd.
    Javaで実現する
    フォールトトレランス
    〜Resilience4jを使ったサーキットブレーカーの実装〜
    株式会社ラクス 今野裕介

    View full-size slide

  2. 今野裕介(こんのゆうすけ)
    ● 株式会社ラクス所属
    ● サーバーサイドエンジニア
    ● 楽楽勤怠の開発に従事
    ● チーム内における役割
    ○ 打刻機能をメインに新機能開発を担当
    ○ 他にも開発プロセスの改善などいろいろやってます
    2

    View full-size slide

  3. サーキットブレーカーパターンとは
    ● マイクロサービスなどでカスケード障害に対応するために採用される
    ● 障害を検知したサービスへのリクエストを予め遮断する
    ○ 局所的な問題がシステム全体に波及しないようにする
    ○ 予め遮断することで応答が速くなる
    3

    View full-size slide

  4. Resilience4jの概要
    ● Javaのフォールトトレラント用のライブラリ
    ○ サーキットブレーカー以外にもリトライ、流量制御、
    タイムアウトハンドリングなどができる
    ● 各要素を組み合わせて適用できる
    ○ サーキットブレーカー+リトライなど
    ● 内部依存しているのはvavrのみ
    4

    View full-size slide

  5. サーキットブレーカーのステート
    ● CLOSED、OPEN、HALF_OPENの3つがある
    ○ CLOSED:ブレーカーは未稼働=すべてのリクエストが通る
    ○ OPEN:ブレーカーは稼働=すべてのリクエストを遮断
    ○ HALF_OPEN:ブレーカーは半稼働=一部のリクエストだけ通す
    5
    CLOSED OPEN
    HALF_OPEN

    View full-size slide

  6. 実装のステップ
    ● 実装はたったの3ステップ
    ○ 設定を作る
    ○ リクエスト部分をデコレートする
    ○ デコレートした処理を実行する
    ● サーキットブレーカー以外も上記の方法で実現できる
    ○ また、複数のフォールトトレランスを組み合わせられる
    6

    View full-size slide

  7. コードサンプル(サーキットブレーカー)
    7

    View full-size slide

  8. リトライ
    ● デコレートした処理を指定回数だけやりなおす処理
    ○ 偶発的な失敗をリカバリするのに向いている
    ● 実装方法はサーキットブレーカーと同様に3ステップ
    ○ 設定 => デコレーション => 実行
    8

    View full-size slide

  9. コードサンプル(リトライ)
    9

    View full-size slide

  10. コードサンプル(組み合わせ)
    10

    View full-size slide

  11. 勤怠管理システムでの適用例
    ● ICカード打刻機能で採用
    ○ 専用端末によるICカード打刻用のマイクロサービス
    ○ 独立したインフラ・アプリケーションを構築している
    ● 勤怠管理本体に対してリクエストを送る際に適用
    ○ 本体と通信が不通な場合に備え、パターン適用
    ○ 他にはリトライも適用
    11

    View full-size slide

  12. 勤怠管理システムでの適用例
    ICカード
    打刻端末
    打刻アプリ
    ケーション
    本体
    同期バッチ



    ③ A
    B
    サーキットブレーカー+リトライ
    リトライのみ
    12

    View full-size slide

  13. まとめ
    ● Resilience4jで簡単にサーキットブレーカーを実現できる!
    ● Resilience4jは適用も簡単!
    ○ 設定 => 対象処理のデコレート => 実行の3ステップ
    ○ 複数のフォールトトレランスの組み合わせもかんたん
    13

    View full-size slide

  14. ご清聴ありがとうございました!

    View full-size slide