SlideShare a Scribd company logo
1 of 19
Download to read offline
SLO のすすめ
Takeo Sawada
Dropbox, Inc.
September 25, 2017
自己紹介
名前 澤田 武男
Twitter @SawadaTakeo
2013 - 2014 Ads Backend SRE @Google HQ
Display Ads Backend など
2014 - 2017 Source SRE @ Google NY
Piper (Google のプロプライエタリなソースコン
トロールシステム)
Git (Android, Chrome, code.google.com,
Cloud Source Repositories)
ローンチ調整エンジニア (LCE, SRE 本 27 章)
SLO の策定、モニタリング、障害対応、
PRR(SRE 本 32 章) など
2017 - Build SRE @ Dropbox
Changes (内製の CI ツール)
Bazel クラスタ
今日の話題
SRE 本第 II 部 原則 から
4 章: 「サービスレベル目標」
外部に直接面していないような
サービスでもサービスレベル目
標を有効に使ってほしい
5 章: 「トイルの撲滅」
サービスレベル目標
サービスレベル目標とは何か
用語: SLI vs SLO vs SLA
SLI - Service Level Indicator: 指標
例: リクエストの成功率
SLO - Service Level Objective: 目標
例: 各四半期中の全リクエストの成功率は 99.9%以上です。
SLA - Service Level Agreement: 合意
例: SLO が満たされなかった場合、利用料の 50%を返金します。
サービスレベル目標: あるサービスの信頼性についての数値目標
SLO を定義するメリット
どのくらいの信頼性を目指すのかをはっきりさせる
コストや開発速度とのトレードオフをしっかりと議論する機
会になる
SLO によってサービスのアーキテクチャ、チーム体制、モニ
タリングの感度、障害対応などが変わってくる
「高い信頼性」という曖昧な目標から、チームメンバーが共
有する 1 つの数値目標へ
エラーバジェットでトレードオフのバランスを取る (SRE 本
3 章)
過剰な要求からチームを守る
あらかじめステークホルダーに SLO を共有し合意しておく
達成困難な信頼性目標を要求された時に参照できる
過剰に依存されるのを避ける
ユーザに対してあらかじめ「期待できる信頼性」を示しておく
自サービスより高い信頼性が求められるサービスに不適切に
組み込まれるのを避ける
SLO の定義のしかた
1. SLI にするメトリクスを決める
2. 目標を決める
3. Profit!!!
サービス、ユーザ、チームなどによるので「正しいやり方」は無い
SLI の選びかた
ユーザ体験の満足度への近さ
モニタリングの容易さ
安定して収集し分析できるメトリクス
シンプルさ
SLI はできるだけ少なくする
さまざまなカテゴリ
可用性 (Availability)
レイテンシー (Latency)
耐久性 (Durability)
スループット (Throughput)
まずは可用性から始めてみよう
SLI をモニターする
ユーザートラフィックを直接計測する
エラーの分類:リクエストが失敗した原因がユーザにあるか
サービス側にあるかを正しく分類する
全てのリクエストを SLO でカバーすべきか考える (リクエス
トの種類、サイズなど)
トラフィックパターンに影響を受けやすい
プローブ用のトラフィックを生成し計測する (ブラックボッ
クスモニタリング)
ユーザ環境に近い地点で計測できる
全てのコードパス、リクエストパスを検査するのは大変
ref. SRE 本 6 章 「分散システムのモニタリング」
SLO の定義の色々
例えば “99.9%の Uptime” と言っても...
ある期間中の全てのリクエストとエラーを集計したエラー率
が 0.1%以下
ある期間を数分のウィンドウ単位に分割し、99.9%以上の
ウィンドウでエラー率が x% 以下
ある期間を数分のウィンドウ単位に分割し、各ウィンドウの
エラー率を平均したものが 0.1% 以下
Amazon S3, Google Cloud Storage などがこの形式
サービスの特性、ユーザの期待などに合わせて適切な定義を選ぶ
SLO が達成できなかったら?
リリースをフリーズ
障害の多くは変更に付随して発生する
信頼性に関する改善の優先順位を上げる
目標そのものを見直す
ref. SRE 本 3 章 3.4 エラーバジェットの活用
Public SLA へ
外部に公開する SLA はプロダクトデザインレベルの選択に
なる
SRE が技術的な判断や情報を提供しつつ、開発者、PM と議
論する
トイルの撲滅
ref. SRE本5章
トイルとは何か
プロダクションサービスを動作させることに関係する作
業で、
手作業で繰り返し行われ、
自動化することが可能であり、
戦術的な価値を持たず、
作業量がサービスの成長に比例する
トイルの例
リリース作業
手作業でのテスト
バックアップ作業
データベースのクリーンアップなど
VM のセットアップ、追加、削除など
アラート、障害対応
0 にするのは難しいものもある
トイルが多すぎると
SRE のポジションのキャリア上の魅力が減る
採用が難しくなる
SWE への転出
生産性の低下
手作業によるミスの発生
Google では 50%を目標にしている。
ref. SRE 本 5 章 5.4 トイルは常に悪なのか?
トイルの削減: オンコール対応の例
行っている作業を見直し、地道に自動化、改善していくしかない
週に数十以上のページ (アラート) が発生して多大なオンコー
ル対応負荷が生じていた (SRE 本 11 章 11.3 バランスの取れ
たオンコール)
対応
毎週プロダクションミーティングを開催 (SRE 本 31 章 31.1)
その週におきた全てのアラートとその対応をレビュー
重大な障害にはポストモーテムを書き、その後ポストモーテ
ムレビューを実施 (SRE 本 15 章)
場当たり的な修正に変えて
根本的な原因の修正。時間のかかるものはプロジェクト化
他チームのバグの積極的な修正依頼
プレイブック (手順書) の強化
不要なアラートの見直し
数ヶ月の取り組みでページ頻度が 1/5 程度に
ありがとうございました。
ご質問、ご感想は
Twitter @SawadaTakeo
までお気軽に!

More Related Content

What's hot

What's hot (20)

大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic
大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic
大規模レガシー環境に立ち向かう有機的な開発フォーメーション #devsumi #devsumic
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 
Composer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放されるComposer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放される
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
Concourseで快適な自動化の旅
Concourseで快適な自動化の旅Concourseで快適な自動化の旅
Concourseで快適な自動化の旅
 
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
Kubernetes 疲れに Azure Container Apps はいかがでしょうか?(江東区合同ライトニングトーク 発表資料)
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
インフラCICDの勘所
インフラCICDの勘所インフラCICDの勘所
インフラCICDの勘所
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介Redmine issue assign notice plugin の紹介
Redmine issue assign notice plugin の紹介
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Keycloak拡張入門
Keycloak拡張入門Keycloak拡張入門
Keycloak拡張入門
 
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdevApache OpenWhiskで実現するプライベートFaaS環境 #tjdev
Apache OpenWhiskで実現するプライベートFaaS環境 #tjdev
 
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
 
Azure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステストAzure load testingを利用したパフォーマンステスト
Azure load testingを利用したパフォーマンステスト
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 

Viewers also liked

Viewers also liked (20)

Streaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis FirehoseStreaming Data Analytics with Amazon Redshift and Kinesis Firehose
Streaming Data Analytics with Amazon Redshift and Kinesis Firehose
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
 
An introduction and future of Ruby coverage library
An introduction and future of Ruby coverage libraryAn introduction and future of Ruby coverage library
An introduction and future of Ruby coverage library
 
Blockchain on Go
Blockchain on GoBlockchain on Go
Blockchain on Go
 
ScalaからGoへ
ScalaからGoへScalaからGoへ
ScalaからGoへ
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)golang.tokyo #6 (in Japanese)
golang.tokyo #6 (in Japanese)
 
神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)神に近づくx/net/context (Finding God with x/net/context)
神に近づくx/net/context (Finding God with x/net/context)
 
What’s New in Amazon Aurora
What’s New in Amazon AuroraWhat’s New in Amazon Aurora
What’s New in Amazon Aurora
 
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan ViladrosarieraApache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
Apache Spark Streaming + Kafka 0.10 with Joan Viladrosariera
 
MongoDBの可能性の話
MongoDBの可能性の話MongoDBの可能性の話
MongoDBの可能性の話
 
Operations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from HappeningOperations: Production Readiness Review – How to stop bad things from Happening
Operations: Production Readiness Review – How to stop bad things from Happening
 
Microservices at Mercari
Microservices at MercariMicroservices at Mercari
Microservices at Mercari
 
Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話Swaggerでのapi開発よもやま話
Swaggerでのapi開発よもやま話
 
Fast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPCFast and Reliable Swift APIs with gRPC
Fast and Reliable Swift APIs with gRPC
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
So You Wanna Go Fast?
So You Wanna Go Fast?So You Wanna Go Fast?
So You Wanna Go Fast?
 
Google Home and Google Assistant Workshop: Build your own serverless Action o...
Google Home and Google Assistant Workshop: Build your own serverless Action o...Google Home and Google Assistant Workshop: Build your own serverless Action o...
Google Home and Google Assistant Workshop: Build your own serverless Action o...
 

Similar to SLOのすすめ

Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Atsushi Kambara
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
Recruit Technologies
 

Similar to SLOのすすめ (20)

サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀ドメイン駆動設計という仕事の流儀
ドメイン駆動設計という仕事の流儀
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
SRE 1st steps
SRE 1st stepsSRE 1st steps
SRE 1st steps
 
ここが良かったDatadog
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadog
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介
 
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
夏サミ2013 基調講演 「DevOpsは開発現場とビジネスの間に何を生むか?」(新野淳一氏)
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
小規模チームでも実現!スケーラブルな広告システム開発
小規模チームでも実現!スケーラブルな広告システム開発小規模チームでも実現!スケーラブルな広告システム開発
小規模チームでも実現!スケーラブルな広告システム開発
 
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
160724 jtf2016sre
160724 jtf2016sre160724 jtf2016sre
160724 jtf2016sre
 
FiNC DDD第一回勉強会
FiNC DDD第一回勉強会FiNC DDD第一回勉強会
FiNC DDD第一回勉強会
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
 
20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング20141003 webマーケティングエンジニアリング
20141003 webマーケティングエンジニアリング
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 

SLOのすすめ