Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

#srenext_b 障害 エラーバジェット運用 = 意思決定にエラーバジェットを活用する。 本セッションの前提情報 エラーバジェット 予算: 0.1% (100% - 99.9%) エラーバジェット ポリシー アクション 例 バジェット消費 7日間で予算が50%減少したら 信頼性回復のアクション実施 ルール化 遵守 根本対処 リリース凍結 この発表中では エラーバジェットの消費に対する アクションを定めて遵守すること。

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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