$30 off During Our Annual Pro Sale. View Details »

20230929_SRE_NEXT_エラーバジェット運用までの取り組み-信頼性の低下に対するアクションを定義しよう / Let's define actions against unreliability

gonkun
September 29, 2023

20230929_SRE_NEXT_エラーバジェット運用までの取り組み-信頼性の低下に対するアクションを定義しよう / Let's define actions against unreliability

gonkun

September 29, 2023
Tweet

More Decks by gonkun

Other Decks in Technology

Transcript

  1. エラーバジェット運用までの取り組み
    信頼性の低下に対するアクションを定義しよう
    株式会社マネーフォワード MFBC-CTO室 SRE部 HRソリューショングループ 佐々木 優太
    SRE NEXT 2023/09/29 Track B #srenext_b

    View Slide

  2. #srenext_b
    自己紹介
    佐々木 優太(ゴンくん)
    株式会社マネーフォワード
    MFBC-CTO室 > SRE部 > HRソリューショングループ
    @gogogonkun
    https://gonkunblog.com/

    View Slide

  3. #srenext_b
    過去に障害を連続で起こしてしまった経験から
    信頼性の低下に対するアクションを取るために
    ポリシーを定義して運用した話です。
    本発表の概要

    View Slide

  4. #srenext_b
    こんな経験はありませんか?
    小さな障害やその予兆を軽視した結果
    後々大きな障害へと発展してしまう

    View Slide

  5. #srenext_b
    こんな経験はありませんか?
    運用も開発もどちらも大事
    でも上手くバランスを取るのが難しい

    View Slide

  6. #srenext_b
    信頼性の低下に対する
    アクションを定めてみませんか?
    こんな経験はありませんか?

    View Slide

  7. #srenext_b
    もくじ
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  8. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  9. 本発表の対象者
    SLOまでは定めているんだけれども、
    まだまだ活用出来ていない方
    開発と運用、どちらも大事だけど...
    双方のバランスの取り方に悩んでいる方

    View Slide

  10. エラーバジェットの運用を始めよう!
    とチームへ提案出来る状態へ
    - 運用する意義が分かる
    - 具体的に何をすべきかが分かる
    持ち帰れること

    View Slide

  11. #srenext_b
    定量化した信頼性に対する低下の許容量がエラーバジェット
    本セッションの前提情報
    信頼性
    SLI SLO エラーバジェット
    定量化 目標設定
    可用性、
    エラーレート等
    目標: 99.9% 予算: 0.1%
    (100% - 99.9%)
    許容量算出

    View Slide

  12. #srenext_b
    障害
    エラーバジェット運用 = 意思決定にエラーバジェットを活用する。
    本セッションの前提情報
    エラーバジェット
    予算: 0.1%
    (100% - 99.9%)
    エラーバジェット
    ポリシー
    アクション

    バジェット消費
    7日間で予算が50%減少したら
    信頼性回復のアクション実施
    ルール化 遵守
    根本対処
    リリース凍結
    この発表中では エラーバジェットの消費に対する
    アクションを定めて遵守すること。

    View Slide

  13. #srenext_b
    本セッションの前提情報

    View Slide

  14. #srenext_b
    本セッションの前提情報

    View Slide

  15. #srenext_b
    本セッションの前提情報
    等々
    今回はプロダクトSREがクラウド勤怠チームに
    エラーバジェットの運用をインストールした話

    View Slide

  16. #srenext_b
    本セッションの前提情報
    クラウド勤怠チームが置かれていた状況

    View Slide

  17. #srenext_b
    本セッションの前提情報 - クラウド勤怠チームが置かれていた状況
    ref: SRE NEXT 2022 一人から始めるプロダクト SRE
    かつての一人SREの活動により、クラウド勤怠チームに
    SREプラクティスがインストールされていた

    View Slide

  18. #srenext_b
    本セッションの前提情報 - クラウド勤怠チームが置かれていた状況
    かつての一人SREの活動により、チームは成長していた
    - SLIを実装/計測し、SLOを定められている
    - SLOが守れない(エラーバジェットの消費)
    = ユーザの満足度の低下 と考えられている

    View Slide

  19. #srenext_b
    本セッションの前提情報 - クラウド勤怠チームが置かれていた状況
    かつての一人SREの活動により、チームは成長していた
    - SLIを実装し、SLOを計測出来ている
    - SLOが守れない(エラーバジェットの消費)
    = ユーザの満足度の低下 と考えられている
    - SLO違反に対するアクションは未定義
    → エラーバジェットの運用は出来ていなかった

    View Slide

  20. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  21. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    開発と運用のバランスを取るにあたって
    我々は合理的な意思決定を下したい
    開発 運用
    not 権力, 政治, 雰囲気

    View Slide

  22. #srenext_b
    クラウド勤怠でエラーバジェットの運用を
    始めるに至ったきっかけ
    なぜ、我々SREはエラーバジェットの運用にこだわるのか

    View Slide

  23. #srenext_b
    根本原因への対処が遅れ
    障害を発生させてしまったこと
    なぜ、我々SREはエラーバジェットの運用にこだわるのか

    View Slide

  24. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    エラーバジェットを
    使い果たす(障害)
    当日中の原因特定には至らず...
    時間経過に伴い障害が落ち着く
    調査は開発の合間で
    実施する程度の温度感
    過去に起きたこと

    View Slide

  25. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    数週間後にまた障害を発生させてしまう
    同事象と思われる
    障害が発生
    (前回より規模大)
    前回よりもユーザの信頼性を
    大きく損ねる結果に
    開発ロードマップの見直し
    優先度が一気に引き上がり
    無事に対処完了

    View Slide

  26. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    開発
    運用
    小さな障害
    障害の予兆
    始めは調査や対処の優先度がそこまで高くならない

    View Slide

  27. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    開発
    運用
    明らかにヤバい障害
    小さな障害
    障害の予兆
    影響の規模感が大きくなってから優先度が上がる

    View Slide

  28. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    SRE/クラウド勤怠チームで考えたこと
    - もっと早く対処の優先順位を上げられなかったものか
    - エラーバジェットが低下しても、それを回復するために
    工数を割くべきかその意思決定が出来ていない

    View Slide

  29. #srenext_b
    開発と運用のバランスを
    「感覚的」に取っていることが問題
    なぜ、我々SREはエラーバジェットの運用にこだわるのか

    View Slide

  30. #srenext_b
    どうする...
    なぜ、我々SREはエラーバジェットの運用にこだわるのか

    View Slide

  31. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    我々にはSLOがある

    View Slide

  32. #srenext_b
    なぜ、我々SREはエラーバジェットの運用にこだわるのか
    SLOから算出したエラーバジェットの低下に伴うアクションを
    ポリシーとして定めることで「合理的」に意思決定を下せる
    開発 運用
    エラーバジェット

    View Slide

  33. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  34. #srenext_b
    エラーバジェットの運用は後回しになりがち
    理想は...
     1. SLOからエラーバジェットを算出する
    2. エラーバジェットの低下に対するアクション
      (エラーバジェットポリシー)を定める
     3. 上記のポリシーを元にエラーバジェットを運用する

    View Slide

  35. #srenext_b
    エラーバジェットの運用は後回しになりがち
    現実には...
     1. SLOからエラーバジェットを算出する
      > そのSLO自体の妥当性は確かなの?
    2. エラーバジェットの低下に対するアクション
      (エラーバジェットポリシー)を定める
      > 開発に影響するポリシーをわざわざ定めるの?
     3. 上記のポリシーを元にエラーバジェットを運用する
      > どこまで巻き込んで合意形成するの?

    View Slide

  36. #srenext_b
    エラーバジェットの運用は後回しになりがち
    各段階の途中で脱落することもある...
    SLI/SLOへの信頼
    適切なポリシー設定
    関係者との合意形成

    View Slide

  37. #srenext_b
    エラーバジェットの運用は後回しになりがち
    運用までに乗り越えるハードルが多い

    View Slide

  38. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  39. #srenext_b
    エラーバジェットポリシーを策定する
    エラーバジェット運用までの流れ
    1. SLOに納得感を持ってもらう
    2. エラーバジェットポリシー案を作成する
    3. チームの合意を得る
    4. ロードマップの決定 / 変更権限を持つ人の合意を得る
    5. エラーバジェットポリシーを遵守する

    View Slide

  40. #srenext_b
    エラーバジェットポリシーを策定する - SLOに納得感を持ってもらう
    毎週、SLOやメトリクスの状況をチームで眺める

    View Slide

  41. #srenext_b
    エラーバジェットポリシーを策定する - SLOに納得感を持ってもらう
    障害発生後のエラーバジェットの変化を確認する
    - チームの中で「即障害」と判断された際の
    SLO(エラーバジェットの消費量)を見る
    - エラーバジェット消費量と実際の障害規模を比較すると
    SLOと肌感覚が合っているのか検証出来る

    View Slide

  42. #srenext_b
    エラーバジェットポリシーを策定する
    SLOの信頼感が得られたら
    次のステップへ

    View Slide

  43. #srenext_b
    エラーバジェットポリシーを策定する - ポリシー案を作成
    実体験を元にチームの「感覚」をポリシーとして明文化する
    開発停止
    復旧最優先
    SLO
    (エラーバジェット)
    ◯◯機能
    全ユーザ操作不可
    事象 温度感
    感覚
    定量的に評価
    エラーバジェット
    ポリシー
    アクション
    変化量

    View Slide

  44. #srenext_b
    エラーバジェットポリシーを策定する - ポリシー案を作成
    ポリシー案を作成する上で注意すること
    - SREが勝手にポリシーを定めて、無理矢理従わせるのではない
    - チームの運用ルールを尊重する

    View Slide

  45. #srenext_b
    エラーバジェットポリシーを策定する - ポリシー案を作成
    エラーバジェットへのネガティブイメージを払拭する
    - リリースブロックのためのみのポリシーではない
    - 感覚ではなく、客観的な指標で議論出来るようになる
    = チームにもメリットがあることを伝える

    View Slide

  46. #srenext_b
    エラーバジェットポリシーを策定する - ポリシー案を作成
    エラーバジェットポリシー例
    - エラーバジェット枯渇 = 障害
    - 即座にアクション会議を開催
    - リリース凍結の有無、開発
    優先度の組み替え要否を決定

    View Slide

  47. #srenext_b
    エラーバジェットポリシーを策定する
    ポリシー案が整ってきたら
    関係者との合意形成へ

    View Slide

  48. #srenext_b
    エラーバジェットポリシーを策定する - チームの合意を得る
    クラウド勤怠チームに「良き理解者」を作り共に協力する
    - ポリシーはSREチームだけでは定められない
    - チームの一部メンバーにも推進役を担ってもらう
    リーダー層を巻き込んで
    目標にも組み込んでもらえると心強い

    View Slide

  49. #srenext_b
    エラーバジェットポリシーを策定する - 意思決定者の合意を得る
    ロードマップの決定 / 変更権限を持つ人の合意を得る
    - 最低限ここまでの関係者を巻き込まないと運用出来ない
    - 納得してもらえるまで説明あるのみ
    クラウド勤怠チーム SREチーム
    良き理解者
    ロードマップの
    意思決定者
    協力
    意義の説明
    意義の説明
    ・・・

    View Slide

  50. #srenext_b
    エラーバジェットポリシーを策定する
    SREとクラウド勤怠チームとで議論になったこと
    - エラーバジェット枯渇中に全てのリリース凍結は厳しすぎる

    View Slide

  51. #srenext_b
    エラーバジェットポリシーを策定する - 議論したこと
    エラーバジェット枯渇中に全てのリリース凍結は厳しすぎる
    - リリース凍結の条件をより具体化
    SLO違反の原因解決 + 回復のために工数を割けている場合は凍結解除
    - リリース内容を細分化して可否を検討

    View Slide

  52. #srenext_b
    エラーバジェットポリシーを策定する
    何度も擦り合わせを行いつつ
    ようやく運用が出来る状態へ

    View Slide

  53. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  54. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    「信頼性の回復を優先しましょう!」と宣言しやすくなった
    根本原因がすぐに判明しないような、根深い問題が後回しになりにくくなった

    View Slide

  55. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    顕在化しづらい事象に対しても早めにアクションを打つことが出来る
    エラーバジェット
    0%
    100%
    エラーバジェットを一気に消費する場合
    ほとんどが目に見えてヤバい障害である
    → 対応の優先度が比較的に上がりやすい

    View Slide

  56. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    顕在化しづらい事象に対しても早めにアクションを打つことが出来る
    エラーバジェット
    0%
    100%
    日々減少
    徐々にバジェットが減少する場合
    事象が顕在化せずに後回しにされがち
    →エラーバジェットポリシーに従い
     早めにアクションが打てる

    View Slide

  57. #srenext_b
    正直、上手くいかない部分も多い
    運用して良かったこと・学びと反省

    View Slide

  58. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    学びと反省
    - プロダクトの成長にSLOとポリシーが追いついていない
    - 各チームの感覚や温度感を横並びで合わせるのは難しい

    View Slide

  59. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    プロダクトの成長にSLOとポリシーが追いついていない
    - SLOとチームの肌感覚がズレてきた
    - SLOへの信頼を得る。という土台が揺らいでいる
    - プロダクトの成長に合わせ、四半期毎に要アップデート

    View Slide

  60. #srenext_b
    エラーバジェットを運用して良かったこと・学びと反省
    各チームの感覚や温度感を合わせるのは難しい
    クラウド勤怠チーム SREチーム
    セールスチーム
    カスタマーサクセスチーム
    ・・・
    ・・・
    ・・・
    ・・・
    エラーバジェットポリシー
    お客様からの問い合わせ

    View Slide

  61. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  62. #srenext_b
    今後の展望
    - SLI/SLO/エラーバジェットポリシーのアップデート
    - エラーバジェットの運用を更に広げる

    View Slide

  63. #srenext_b
    今後の展望 - エラーバジェットの運用を更に広げる
    各チームが同じ1つの指標を元に議論出来る状態へ
    クラウド勤怠チーム SREチーム
    セールスチーム カスタマーサクセスチーム
    ・・・
    ・・・
    ・・・
    ・・・
    エラーバジェットポリシー

    View Slide

  64. #srenext_b
    今後の展望 - エラーバジェットの運用を更に広げる
    SRE活動 → 双方の利害を一致させて多様な関係者の合意を得る
    クラウド勤怠チーム SREチーム
    セールスチーム カスタマーサクセスチーム
    ・・・
    ・・・
    ・・・
    ・・・
    エラーバジェットポリシーの
    合意を得る

    View Slide

  65. #srenext_b
    今後の展望 - エラーバジェットの運用を更に広げる
    SRE活動 → 突き詰めようとすると合意形成の連続
    クラウド勤怠チーム SREチーム
    セールスチーム カスタマーサクセスチーム
    ・・・
    ・・・
    ・・・
    ・・・
    ・・・
    より上位の意思決定者

    View Slide

  66. #srenext_b
    今後の展望
    エラーバジェットの運用は
    関係者との合意形成の旅

    View Slide

  67. #srenext_b
    1. はじめに
    2. なぜ、我々SREはエラーバジェットの運用にこだわるのか
    3. エラーバジェットの運用は後回しになりがち
    4. エラーバジェットポリシーを策定する
    5. 運用して良かったこと・学びと反省
    6. 今後の展望
    7. まとめ

    View Slide

  68. #srenext_b
    まとめ
    - エラーバジェットの運用には、
    SLOやエラーバジェットポリシーへの合意が欠かせない
    - チームの「感覚」を明文化してポリシーを定義するのが大事
    - 開発と運用のバランスを取る
    エラーバジェットの運用、始めてみませんか?

    View Slide

  69. #srenext_b
    さいごに
    マネーフォワード MFBC-CTO室ではSREを募集しています!

    View Slide

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

    View Slide