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

yuru sre 14

Avatar for maru maru
December 18, 2025
150

yuru sre 14

Avatar for maru

maru

December 18, 2025
Tweet

Transcript

  1. 普段の登壇では… • 2025/09 • Platform Engineering Kaigi • 2025/11 •

    Observability Conference Tokyo • 2026/01 • SRE Kaigi 考えてること(原液) →自分のチームで試行錯誤 → 後から振り返って整理する << ここを普段は話す
  2. 普段の登壇では… • 2025/09 • Platform Engineering Kaigi • 2025/11 •

    Observability Conference Tokyo • 2026/01 • SRE Kaigi 考えてること(原液) << 今日はここを話す! →自分のチームで試行錯誤 → 後から振り返って整理する << ここを普段は話す
  3. パーセントタイル?しきい値? パーセントタイルの考え方としては、 「ユーザーの期待を満たすのに、何回API callが必要か?」を考えると議論がしやすい。 「ある1つの画面を表示したいケース」 • 並列で呼ぶAPI callが1回必要であれば • 99%ileで400msの場合、1%(1-0.99)の確率で400ms以上かかる

    • 100人中1人が400ms 以上 • 90%ileで200msの場合、10%(1-0.9)の確率で200ms以上かかる • 100人中10人が200ms以上 • 並列で呼ぶAPI callが10回必要であれば • 99%ileで400msの場合、9%(1-0.99^10)の確率で400ms以上かかる • =100人中9人で400ms 以上 • 90%ileで200msの場合、65%(1-0.9^10)の確率で200ms以上かかる • 100人中65人で200ms 以上
  4. コード的にすると X = エラー数、z=信頼レベル(98%で2.33)、n=サンプル数 ((2.0 * x + z *

    z - (z * m.sqrt(z*z - 1.0 / n + 4.0 * x * (1.0 - p) + (4.0 * p - 2.0)) + 1.0)) / (2.0 * (n + z * z)))
  5. PromQLクエリにすると ((2.0 * sum(increase(requests_total{status="500"}[1m])) + 2.33 * 2.33 - (2.33

    * sqrt(2.33*2.33 - 1.0 / sum(increase(requests_total[1m])) + 4.0 * sum(increase(requests_total{status="500"}[1m])) * (1.0 - (sum(increase(requests_total{status="500"}[1m])) / sum(increase(requests_total[1m])))) + (4.0 * (sum(increase(requests_total{status="500"}[1m])) / sum(increase(requests_total[1m]))) - 2.0)) + 1.0)) / (2.0 * (sum(increase(requests_total[1m])) + 2.33 * 2.33))) * on (_your_label_) sum(increase(requests_total{status="500"}[1m])) > bool 0
  6. それぞれの区間で平均と分散を集計するんじゃ • 発生からシステムの検知(Detection)まで • Time to Detect(TTD) • 発生から人間の認知(Acknowledge)まで •

    Time to Ack • 発生から原因判明(Identify)まで • Time to Identify • 発生からサービス復旧(Service Recovery)まで • Time to (Service) Recovery • 発生から次の障害発生(Between failure)まで • Time between Failures
  7. それぞれの区間で平均と分散を集計するんじゃ • 発生からシステムの検知(Detection)まで • Time to Detect(TTD) • ➔ TTDの分散が大きければ、アラートやメトリクスを改善する。その成果は分散の変化で計測できる。

    • 発生から人間の認知(Acknowledge)まで • Time to Ack • ➔TTAの分散が大きければ、オンコール体制の整備が効果的。 • 発生から原因判明(Identify)まで • Time to Identify • 発生からサービス復旧(Service Recovery)まで • Time to (Service) Recovery • 発生から次の障害発生(Between failure)まで • Time between Failures
  8. 障害のグルーピング 平均故障間隔(MTBF)を計算しようとすると、再発防止策してるから再発しないはずじゃ・・・?となる。 障害を適当に分類して集計するところから始めてみよう。 • 原因別 • 設定ミス、オペレーションミス、実装ミス、仕様漏れ、外部サービス影響、etc • 組織ごと •

    開発組織A、開発組織B、etc • マイクロサービスごと • マイクロサービスA、マイクロサービスB、etc • デプロイ頻度ごとのマイクロサービスごと • 月1デプロイのマイクロサービス群、週1デプロイのマイクロサービス群、etc