エラー・バジェットによるリスク管理
Managing Risk with Error Budgets
Google Cloud INSIDE
SEPTEMBER 28, 2017
Google Cloud SRE アドボケイト
ポール ニューソン
Paul Newson
開発者の目的
Purpose of the developer
新しい機能を提供する Provide new functionality
SREの目的
Purpose of the SRE
信頼性 Reliability
Proprietary + Confidential
戦い
Fight!
会社の目的
Purpose of the Company
新しい機能を確実に
提供する
Provide new functionality
reliably
SLO
SLOを明確に定義する必要がある
A clearly defined SLO is required
Proprietary + Confidential
同じ目標
Same Goal
サービス レベル
インジケータ(SLI)
“…提供されるサービス レベルの
特定の側面について注意深く
定義された定量的尺度
”
SLIの種類 Types of SLI
SLIの種類
リクエスト率 Request rate
Types of SLI
SLIの種類
リクエスト率
エラー率
Request rate
Error rate
Types of SLI
SLIの種類
リクエスト率
エラー率
レイテンシー
Request rate
Error rate
Latency
Types of SLI
SLIの種類
リクエスト率
エラー率
レイテンシー
スループット
Request rate
Error rate
Latency
Throughput
Types of SLI
SLIの種類
リクエスト率
エラー率
レイテンシー
スループット
耐久性
Request rate
Error rate
Latency
Throughput
Durability
Types of SLI
SLIの種類
リクエスト率
エラー率
レイテンシー
スループット
耐久性
可用性
Request rate
Error rate
Latency
Throughput
Durability
Availability
Types of SLI
SLI集約 SLI Aggregation
SLI集約
時間(秒、分、時) Time (second, minute, hour)
SLI Aggregation
SLI集約
時間(秒、分、時)
スペース(サーバー、ゾーン、
地域、グローバル)
Time (second, minute, hour)
Space (server, zone, region, global)
SLI Aggregation
SLI集約
時間(秒、分、時)
スペース(サーバー、ゾーン、
地域、グローバル)
リクエストタイプ (GET, POSTなど)
Time (second, minute, hour)
Space (server, zone, region, global)
Request Type (GET, POST, etc.)
SLI Aggregation
SLI集約
時間(秒、分、時)
スペース(サーバー、ゾーン、
地域、グローバル)
リクエストタイプ (GET, POSTなど)
顧客
Time (second, minute, hour)
Space (server, zone, region, global)
Request Type (GET, POST, etc.)
Customer
SLI Aggregation
SLI集約
時間(秒、分、時)
スペース(サーバー、ゾーン、
地域、グローバル)
リクエストタイプ (GET, POSTなど)
顧客
平均値または分布
(例えば99パーセンタイル)
Time (second, minute, hour)
Space (server, zone, region, global)
Request Type (GET, POST, etc.)
Customer
Average or Distribution (e.g 99th
percentile)
SLI Aggregation
…SLI で測定されるサービス
レベルの目標値または目標値範囲
サービス レベル 目標
(SLO)
”“
通常100%未満
It is usually less than 100%
SLOの例 SLO Example
SLOの例
99.99%の可用性 99.99% availability
SLO Example
SLOの例
99.99%の可用性
過去90日
99.99% availability
over 90 days
SLO Example
SLOの例
99.99%の可用性
過去90日
スライディングウィンドウ
99.99% availability
over 90 days
sliding window
SLO Example
SLOの例
99.99%の可用性
過去90日
スライディングウィンドウ
可用性の定義が必要
99.99% availability
over 90 days
sliding window
what is available?
SLO Example
SLOの例
可用性は: Available is:
SLO Example
SLOの例
可用性は:
99.9%の成功率
Available is:
99.9% success rate
SLO Example
SLOの例
可用性は:
99.9%の成功率
GETリクエスト
Available is:
99.9% success rate
for GET requests
SLO Example
SLOの例
可用性は:
99.9%の成功率
正しいGETリクエスト
Available is:
99.9% success rate
for valid GET requests
SLO Example
SLOの例
可用性は:
99.9%の成功率
正しいGETリクエスト
5分の期間
Available is:
99.9% success rate
for valid GET requests
5 minute period
SLO Example
SLOの例
可用性は:
99.9%の成功率
正しいGETリクエスト
5分の期間
地域別
Available is:
99.9% success rate
for valid GET requests
5 minute period
by region
SLO Example
サービス レベル 契約
(SLA)
SLO の達成(または未達)に
関する規定を含むユーザーとの契約
”“
SLI / SLO / SLA
SLI = 指標
SLO = SLI + 目標
SLA = SLO + 罰金
エラー バジェット
Error Budget
1 - アップタイム = エラー バジェット
1 - 99.9% アップタイム = 0.1% エラー バジェット
1 - 99.99% アップタイム = 0.01% エラー バジェット
1 - 99.999% アップタイム = 0.001% エラー バジェット
エラー予算の例
Error budget examples
スリー ナイン
(99.9% アップタイム)
(0.1% エラー バジェット)
30 日 => 43.2 分
90 日 => 2.16 時間
365 日 => 8.76 時間
Proprietary + Confidential
フォー ナイン
(99.99% アップタイム)
(0.01% エラー バジェット)
30 日 => 4.3 分
90 日 => 13.0 分
365 日 => 52.6 分
ファイブ ナイン
(99.999% アップタイム)
(0.001% エラー バジェット)
30 日 => 25.9 秒
90 日 => 77.8 秒
365 日 => 5.26 分
エラーバジェット管理
Error budget management
エラーバジェット管理
Error budget management
この新機能をデプロイすべきか? Should we deploy this new feature?
エラーバジェット管理
Error budget management
この新機能をデプロイすべきか?
変更をどのようなスピードで
デプロイすべきか?
Should we deploy this new feature?
How quickly should we deploy
changes?
エラーバジェット管理
Error budget management
この新機能をデプロイすべきか?
変更をどのようなスピードで
デプロイすべきか?
冗長性をもっと高めるべきか?
Should we deploy this new feature?
How quickly should we deploy
changes?
Should we add more redundancy?
エラーバジェット管理
Error budget management
この新機能をデプロイすべきか?
変更をどのようなスピードで
デプロイすべきか?
冗長性をもっと高めるべきか?
テストを追加実施すべきか?
Should we deploy this new feature?
How quickly should we deploy
changes?
Should we add more redundancy?
Should we do more testing?
エラーバジェット管理
Error budget management
この新機能をデプロイすべきか?
変更をどのようなスピードで
デプロイすべきか?
冗長性をもっと高めるべきか?
テストを追加実施すべきか?
機能を開発すべきか?
信頼性を高めるべきか?
Should we deploy this new feature?
How quickly should we deploy
changes?
Should we add more redundancy?
Should we do more testing?
Code for features?
Code for reliability?
会社の目的
Purpose of the Company
新しい機能を確実に提供する Provide new functionality reliably
Proprietary + Confidential
同じ目標
Same Goal
ご清聴ありがとうございました
Thank You
ポール ニューソン
Paul Newson
Google Cloud INSIDE
SEPTEMBER 28, 2017

エラー・バジェットによるリスク管理 Managing risk with error budgets