Slide 1

Slide 1 text

SLOは何を実現するのか Forkwell Library #28 SLO サービスレベル⽬標 2023/07/25 19:35-20:05 ⼭⼝能迪 (@ymotongpoo) 1

Slide 2

Slide 2 text

どしどし質問をお待ちしております 2

Slide 3

Slide 3 text

⼭⼝ 能迪 Developer Relations Engineer Google 3 @ymotongpoo @ymotongpoo

Slide 4

Slide 4 text

SRE文脈でのSLO 4

Slide 5

Slide 5 text

SREについて SRE とは本番システムを信頼性高く開発・運用するための一 連のプラクティスと心構え、および職務を指します。 5

Slide 6

Slide 6 text

信頼性に基づいた開発と運用 6 コンセプト ビジネス 開発 運用 市場 全部署が 信頼性を基準に ビジネスのプロセス

Slide 7

Slide 7 text

信頼性指標の計測 暗黙的‧明⽰的な期待に応えているから、ユーザーは満⾜する。 7 期待 (⽬標値) 指標

Slide 8

Slide 8 text

信頼性(Reliability) The probability that [a system] an item will perform a required function without failure under stated conditions for a stated period of time. (システムが)求められる機能を、定められた条件の下で、定められた期間に わたり、障害を起こす ことなく実⾏する確率 P. O'Connor and A. Kleyner, Practical Reliability Engineering, 5th edition: Wiley, 2012. 8

Slide 9

Slide 9 text

サービスレベル指標(SLI)とサービスレベル目標(SLO) ユーザーの満⾜度によく相関している指標とその⽬標 9 SLO SLI

Slide 10

Slide 10 text

信頼性指標の元データ サービスの性質による典型的な信頼性指標の元データ ● リクエスト/レスポンス 可用性、レイテンシー、品質 ● データ処理 カバレッジ、正確性、鮮度、スループット ● ストレージ スループット、レイテンシー 監視システムは、多くの潜在的な SLI を捉える可能性がありますし、そうあるべきです が、ほとんどはそのままでは SLO を定義するのには使えません。 10

Slide 11

Slide 11 text

サービスレベル指標(SLI)の定義 次の式のように、定量的かつ慎重に定義します。 可⽤性の場合の例 ● 良いイベント: HTTPステータスコードが 2xx、3xx、4xxのレスポンス ● 有効なイベント: 全レスポンス 11 SLI : 良いイベント 有効なイベント × 100%

Slide 12

Slide 12 text

サービスレベル指標(SLI)の共有 組織内で共通認識を持つために⾔語化する 12 SLI の種類: 可⽤性 SLI の仕様: CheckoutService へのリクエストに対するすべてのレスポンスのうち、 HTTP レスポンスコード 2xx、3xx、4xx を返すもの (=良いレスポンス) の割合。 ただし 429 を除く。 SLI の実装: Web アクセスログから HTTP レスポンスコードを特定する

Slide 13

Slide 13 text

サービスレベル目標(SLO)の定義 SLIの⽬標値。計測期間も定義する必要がある。 ● SLI: CheckoutService の良いレスポンスの割合 ● SLO: CheckoutService の過去28⽇間の良いレスポンスが99.9% 13

Slide 14

Slide 14 text

サービスレベル目標(SLO)の共有 SLIと合わせてSLOも共有する 14 SLI の種類 : 可⽤性 SLI の仕様 : CheckoutService へのリクエストに対するすべてのレスポンスのうち、 HTTP レスポンスコード 2xx、3xx、4xx を返すもの (=良いレスポンス) の割合。 ただし 429 を除く。 SLI の実装 : Web ログから HTTP レスポンスコードを特定する SLO : 過去 28 ⽇間の CheckoutService のレスポンスのうち 99.9% が 良いレスポンスでなければならない 根拠 : 過去に0.1%までのエラーであれば顧客問い合わせがなかった

Slide 15

Slide 15 text

エラーバジェット SLOが決まるとエラーバジェット(許容できるエラーの量)が決まる ⇨ 不具合が発⽣すると、エラーバジェットを消費することになる エラーバジェットを監視することでサービスの余裕がわかる 15 残りのエラーバジェット 0.1% = 100% - 99.9%

Slide 16

Slide 16 text

バーンレートアラート バーンレートが急な場合ほど早く知らせる 16 エラーバジェット 時間 EB 100% (SLI 0.1%) 28 d 想定通りの EB の消費 =バーンレート 1 想定の 2 倍速の EB の消費 =バーンレート 2 14 d 想定の 7 倍速の EB の消費 =バーンレート 7 4 d

Slide 17

Slide 17 text

ポリシーを設定し更にEBを活用 ➔ しきい値 1: ⾃動アラートが SLO の危険を SRE に通知します ➔ … ➔ しきい値 3: SRE が、SLO を守るためには助けが必要と結論付け、開発者に エスカレーションします ➔ しきい値 4: 30 ⽇間のエラーバジェットを使い切っても根本原因は⾒つかっ ていません。機能リリースは停⽌され、開発チームはより多くのリソースを 割り当てます ➔ しきい値 5: 90 ⽇間のエラーバジェットを使い切っても根本原因は⾒つかっ ていません。SRE は経営陣にエスカレーションを⾏い、安定性のためのエン ジニアリング業務により多くの時間を確保します 17

Slide 18

Slide 18 text

信頼性に基づいた開発と運用 18 コンセプト ビジネス 開発 運用 市場 SLOを基準に 客観的に判断可能 ビジネスのプロセス

Slide 19

Slide 19 text

Four Keysとの比較 19

Slide 20

Slide 20 text

Four Keys (2014〜2017年) 20 デプロイ頻度 変更リードタイム サービス復旧時間 変更障害率 速度 安定性 ソフトウェアデリバリーパフォーマンス

Slide 21

Slide 21 text

Four Keys はどのタイミングの指標か 障害〜復旧 運⽤ 開発〜デプロイ ● デプロイ頻度 ● 変更リードタイム ● 変更障害率 ● サービス復旧時間 安定時のパフォーマンスは?

Slide 22

Slide 22 text

「組織のパフォーマンス」再考 ソフトウェアデリバリーパフォーマンス ≠ サービス品質 ● リリースされたソフトウェアにユーザーが満⾜しなければ意味がない ● 2018年のSODRより組織の能⼒を捕捉するために可⽤性を5番⽬の指標に ● 2022年のSODRでは発展させて「信頼性」を5番⽬の指標に 22

Slide 23

Slide 23 text

運用パフォーマンスとしての信頼性 障害〜復旧 運⽤ 開発〜デプロイ ● デプロイ頻度 ● 変更リードタイム ● 変更障害率 ● サービス復旧時間 SLOに基づき運⽤ ● 信頼性

Slide 24

Slide 24 text

エラーバジェット:何を優先させるか? 24 バジェットを消費した場合 信頼性を優先する ● ポストモーテムアイテムの優先順位付け ● デプロイメントパイプラインの⾃動化 ● モニタリングと可観測性の向上 ● SRE のコンサルテーションが必要 バジェットが⼗分な場合 ベロシティを優先する ● 予想されるシステムの変更 ● ハードウェア、ネットワークなどの不可避的 な障害 ● 計画的ダウンタイム ● 危険な実験

Slide 25

Slide 25 text

運用パフォーマンスとしての信頼性 障害〜復旧 運⽤ 開発〜デプロイ ● デプロイ頻度 ● 変更リードタイム ● 変更障害率 ● サービス復旧時間 エラーバジェットに基づき運⽤ ● 信頼性 SLO エラーバジェット バーンレート

Slide 26

Slide 26 text

どこから始めるのか SLO関連書籍をぜひ参照してみてください 26