Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20230929_SRE_NEXT_エラーバジェット運用までの取り組み-信頼性の低下に対...
Search
gonkun
September 29, 2023
Technology
2
3.1k
20230929_SRE_NEXT_エラーバジェット運用までの取り組み-信頼性の低下に対するアクションを定義しよう / Let's define actions against unreliability
https://sre-next.dev/2023/schedule/#jp050
gonkun
September 29, 2023
Tweet
Share
More Decks by gonkun
See All by gonkun
20240119_KEDAでスパイク負荷を迎え撃つ。メトリクスとスケジュールドリブンなオートスケールでKubernetes上のプロダクトの信頼性を高めよう/lets_use_keda_for_reliability
gonkun
1
260
はじめの一歩を踏み出したい方へ~SREというロールを担うためにやったこと、学びや反省 / Let's start the first step to the SRE
gonkun
3
510
Other Decks in Technology
See All in Technology
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
160
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
AGIについてChatGPTに聞いてみた
blueb
0
130
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
150
Terraform Stacks入門 #HashiTalks
msato
0
360
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
9
1.1k
『Firebase Dynamic Links終了に備える』 FlutterアプリでのAdjust導入とDeeplink最適化
techiro
0
130
Lexical Analysis
shigashiyama
1
150
日経電子版のStoreKit2フルリニューアル
shimastripe
1
140
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
1.3k
Featured
See All Featured
Building Adaptive Systems
keathley
38
2.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Typedesign – Prime Four
hannesfritz
40
2.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
Producing Creativity
orderedlist
PRO
341
39k
Gamification - CAS2011
davidbonilla
80
5k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Statistics for Hackers
jakevdp
796
220k
4 Signs Your Business is Dying
shpigford
180
21k
Visualization
eitanlees
145
15k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Writing Fast Ruby
sferik
627
61k
Transcript
エラーバジェット運用までの取り組み 信頼性の低下に対するアクションを定義しよう 株式会社マネーフォワード MFBC-CTO室 SRE部 HRソリューショングループ 佐々木 優太 SRE NEXT
2023/09/29 Track B #srenext_b
#srenext_b 自己紹介 佐々木 優太(ゴンくん) 株式会社マネーフォワード MFBC-CTO室 > SRE部 > HRソリューショングループ
@gogogonkun https://gonkunblog.com/
#srenext_b 過去に障害を連続で起こしてしまった経験から 信頼性の低下に対するアクションを取るために ポリシーを定義して運用した話です。 本発表の概要
#srenext_b こんな経験はありませんか? 小さな障害やその予兆を軽視した結果 後々大きな障害へと発展してしまう
#srenext_b こんな経験はありませんか? 運用も開発もどちらも大事 でも上手くバランスを取るのが難しい
#srenext_b 信頼性の低下に対する アクションを定めてみませんか? こんな経験はありませんか?
#srenext_b もくじ 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する
5. 運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
本発表の対象者 SLOまでは定めているんだけれども、 まだまだ活用出来ていない方 開発と運用、どちらも大事だけど... 双方のバランスの取り方に悩んでいる方
エラーバジェットの運用を始めよう! とチームへ提案出来る状態へ - 運用する意義が分かる - 具体的に何をすべきかが分かる 持ち帰れること
#srenext_b 定量化した信頼性に対する低下の許容量がエラーバジェット 本セッションの前提情報 信頼性 SLI SLO エラーバジェット 定量化 目標設定 可用性、
エラーレート等 目標: 99.9% 予算: 0.1% (100% - 99.9%) 許容量算出 例
#srenext_b 障害 エラーバジェット運用 = 意思決定にエラーバジェットを活用する。 本セッションの前提情報 エラーバジェット 予算: 0.1% (100%
- 99.9%) エラーバジェット ポリシー アクション 例 バジェット消費 7日間で予算が50%減少したら 信頼性回復のアクション実施 ルール化 遵守 根本対処 リリース凍結 この発表中では エラーバジェットの消費に対する アクションを定めて遵守すること。
#srenext_b 本セッションの前提情報
#srenext_b 本セッションの前提情報
#srenext_b 本セッションの前提情報 等々 今回はプロダクトSREがクラウド勤怠チームに エラーバジェットの運用をインストールした話
#srenext_b 本セッションの前提情報 クラウド勤怠チームが置かれていた状況
#srenext_b 本セッションの前提情報 - クラウド勤怠チームが置かれていた状況 ref: SRE NEXT 2022 一人から始めるプロダクト SRE
かつての一人SREの活動により、クラウド勤怠チームに SREプラクティスがインストールされていた
#srenext_b 本セッションの前提情報 - クラウド勤怠チームが置かれていた状況 かつての一人SREの活動により、チームは成長していた - SLIを実装/計測し、SLOを定められている - SLOが守れない(エラーバジェットの消費) =
ユーザの満足度の低下 と考えられている
#srenext_b 本セッションの前提情報 - クラウド勤怠チームが置かれていた状況 かつての一人SREの活動により、チームは成長していた - SLIを実装し、SLOを計測出来ている - SLOが守れない(エラーバジェットの消費) =
ユーザの満足度の低下 と考えられている - SLO違反に対するアクションは未定義 → エラーバジェットの運用は出来ていなかった
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか 開発と運用のバランスを取るにあたって 我々は合理的な意思決定を下したい 開発 運用 not 権力, 政治, 雰囲気
#srenext_b クラウド勤怠でエラーバジェットの運用を 始めるに至ったきっかけ なぜ、我々SREはエラーバジェットの運用にこだわるのか
#srenext_b 根本原因への対処が遅れ 障害を発生させてしまったこと なぜ、我々SREはエラーバジェットの運用にこだわるのか
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか エラーバジェットを 使い果たす(障害) 当日中の原因特定には至らず... 時間経過に伴い障害が落ち着く 調査は開発の合間で 実施する程度の温度感 過去に起きたこと
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか 数週間後にまた障害を発生させてしまう 同事象と思われる 障害が発生 (前回より規模大) 前回よりもユーザの信頼性を 大きく損ねる結果に 開発ロードマップの見直し 優先度が一気に引き上がり
無事に対処完了
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか 開発 運用 小さな障害 障害の予兆 始めは調査や対処の優先度がそこまで高くならない
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか 開発 運用 明らかにヤバい障害 小さな障害 障害の予兆 影響の規模感が大きくなってから優先度が上がる
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか SRE/クラウド勤怠チームで考えたこと - もっと早く対処の優先順位を上げられなかったものか - エラーバジェットが低下しても、それを回復するために 工数を割くべきかその意思決定が出来ていない
#srenext_b 開発と運用のバランスを 「感覚的」に取っていることが問題 なぜ、我々SREはエラーバジェットの運用にこだわるのか
#srenext_b どうする... なぜ、我々SREはエラーバジェットの運用にこだわるのか
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか 我々にはSLOがある
#srenext_b なぜ、我々SREはエラーバジェットの運用にこだわるのか SLOから算出したエラーバジェットの低下に伴うアクションを ポリシーとして定めることで「合理的」に意思決定を下せる 開発 運用 エラーバジェット
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b エラーバジェットの運用は後回しになりがち 理想は... 1. SLOからエラーバジェットを算出する 2. エラーバジェットの低下に対するアクション (エラーバジェットポリシー)を定める 3. 上記のポリシーを元にエラーバジェットを運用する
#srenext_b エラーバジェットの運用は後回しになりがち 現実には... 1. SLOからエラーバジェットを算出する > そのSLO自体の妥当性は確かなの? 2. エラーバジェットの低下に対するアクション (エラーバジェットポリシー)を定める
> 開発に影響するポリシーをわざわざ定めるの? 3. 上記のポリシーを元にエラーバジェットを運用する > どこまで巻き込んで合意形成するの?
#srenext_b エラーバジェットの運用は後回しになりがち 各段階の途中で脱落することもある... SLI/SLOへの信頼 適切なポリシー設定 関係者との合意形成
#srenext_b エラーバジェットの運用は後回しになりがち 運用までに乗り越えるハードルが多い
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b エラーバジェットポリシーを策定する エラーバジェット運用までの流れ 1. SLOに納得感を持ってもらう 2. エラーバジェットポリシー案を作成する 3. チームの合意を得る 4.
ロードマップの決定 / 変更権限を持つ人の合意を得る 5. エラーバジェットポリシーを遵守する
#srenext_b エラーバジェットポリシーを策定する - SLOに納得感を持ってもらう 毎週、SLOやメトリクスの状況をチームで眺める
#srenext_b エラーバジェットポリシーを策定する - SLOに納得感を持ってもらう 障害発生後のエラーバジェットの変化を確認する - チームの中で「即障害」と判断された際の SLO(エラーバジェットの消費量)を見る - エラーバジェット消費量と実際の障害規模を比較すると
SLOと肌感覚が合っているのか検証出来る
#srenext_b エラーバジェットポリシーを策定する SLOの信頼感が得られたら 次のステップへ
#srenext_b エラーバジェットポリシーを策定する - ポリシー案を作成 実体験を元にチームの「感覚」をポリシーとして明文化する 開発停止 復旧最優先 SLO (エラーバジェット) ◯◯機能
全ユーザ操作不可 事象 温度感 感覚 定量的に評価 エラーバジェット ポリシー アクション 変化量 例
#srenext_b エラーバジェットポリシーを策定する - ポリシー案を作成 ポリシー案を作成する上で注意すること - SREが勝手にポリシーを定めて、無理矢理従わせるのではない - チームの運用ルールを尊重する
#srenext_b エラーバジェットポリシーを策定する - ポリシー案を作成 エラーバジェットへのネガティブイメージを払拭する - リリースブロックのためのみのポリシーではない - 感覚ではなく、客観的な指標で議論出来るようになる =
チームにもメリットがあることを伝える
#srenext_b エラーバジェットポリシーを策定する - ポリシー案を作成 エラーバジェットポリシー例 - エラーバジェット枯渇 = 障害 -
即座にアクション会議を開催 - リリース凍結の有無、開発 優先度の組み替え要否を決定
#srenext_b エラーバジェットポリシーを策定する ポリシー案が整ってきたら 関係者との合意形成へ
#srenext_b エラーバジェットポリシーを策定する - チームの合意を得る クラウド勤怠チームに「良き理解者」を作り共に協力する - ポリシーはSREチームだけでは定められない - チームの一部メンバーにも推進役を担ってもらう リーダー層を巻き込んで
目標にも組み込んでもらえると心強い
#srenext_b エラーバジェットポリシーを策定する - 意思決定者の合意を得る ロードマップの決定 / 変更権限を持つ人の合意を得る - 最低限ここまでの関係者を巻き込まないと運用出来ない -
納得してもらえるまで説明あるのみ クラウド勤怠チーム SREチーム 良き理解者 ロードマップの 意思決定者 協力 意義の説明 意義の説明 ・・・
#srenext_b エラーバジェットポリシーを策定する SREとクラウド勤怠チームとで議論になったこと - エラーバジェット枯渇中に全てのリリース凍結は厳しすぎる
#srenext_b エラーバジェットポリシーを策定する - 議論したこと エラーバジェット枯渇中に全てのリリース凍結は厳しすぎる - リリース凍結の条件をより具体化 SLO違反の原因解決 + 回復のために工数を割けている場合は凍結解除
- リリース内容を細分化して可否を検討
#srenext_b エラーバジェットポリシーを策定する 何度も擦り合わせを行いつつ ようやく運用が出来る状態へ
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 「信頼性の回復を優先しましょう!」と宣言しやすくなった 根本原因がすぐに判明しないような、根深い問題が後回しになりにくくなった
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 顕在化しづらい事象に対しても早めにアクションを打つことが出来る エラーバジェット 0% 100% エラーバジェットを一気に消費する場合 ほとんどが目に見えてヤバい障害である → 対応の優先度が比較的に上がりやすい
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 顕在化しづらい事象に対しても早めにアクションを打つことが出来る エラーバジェット 0% 100% 日々減少 徐々にバジェットが減少する場合 事象が顕在化せずに後回しにされがち →エラーバジェットポリシーに従い
早めにアクションが打てる
#srenext_b 正直、上手くいかない部分も多い 運用して良かったこと・学びと反省
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 学びと反省 - プロダクトの成長にSLOとポリシーが追いついていない - 各チームの感覚や温度感を横並びで合わせるのは難しい
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 プロダクトの成長にSLOとポリシーが追いついていない - SLOとチームの肌感覚がズレてきた - SLOへの信頼を得る。という土台が揺らいでいる - プロダクトの成長に合わせ、四半期毎に要アップデート
#srenext_b エラーバジェットを運用して良かったこと・学びと反省 各チームの感覚や温度感を合わせるのは難しい クラウド勤怠チーム SREチーム セールスチーム カスタマーサクセスチーム ・・・ ・・・ ・・・
・・・ エラーバジェットポリシー お客様からの問い合わせ
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b 今後の展望 - SLI/SLO/エラーバジェットポリシーのアップデート - エラーバジェットの運用を更に広げる
#srenext_b 今後の展望 - エラーバジェットの運用を更に広げる 各チームが同じ1つの指標を元に議論出来る状態へ クラウド勤怠チーム SREチーム セールスチーム カスタマーサクセスチーム ・・・
・・・ ・・・ ・・・ エラーバジェットポリシー
#srenext_b 今後の展望 - エラーバジェットの運用を更に広げる SRE活動 → 双方の利害を一致させて多様な関係者の合意を得る クラウド勤怠チーム SREチーム セールスチーム
カスタマーサクセスチーム ・・・ ・・・ ・・・ ・・・ エラーバジェットポリシーの 合意を得る
#srenext_b 今後の展望 - エラーバジェットの運用を更に広げる SRE活動 → 突き詰めようとすると合意形成の連続 クラウド勤怠チーム SREチーム セールスチーム
カスタマーサクセスチーム ・・・ ・・・ ・・・ ・・・ ・・・ より上位の意思決定者
#srenext_b 今後の展望 エラーバジェットの運用は 関係者との合意形成の旅
#srenext_b 1. はじめに 2. なぜ、我々SREはエラーバジェットの運用にこだわるのか 3. エラーバジェットの運用は後回しになりがち 4. エラーバジェットポリシーを策定する 5.
運用して良かったこと・学びと反省 6. 今後の展望 7. まとめ
#srenext_b まとめ - エラーバジェットの運用には、 SLOやエラーバジェットポリシーへの合意が欠かせない - チームの「感覚」を明文化してポリシーを定義するのが大事 - 開発と運用のバランスを取る エラーバジェットの運用、始めてみませんか?
#srenext_b さいごに マネーフォワード MFBC-CTO室ではSREを募集しています!
ご清聴ありがとうございました