Slide 1

Slide 1 text

SLO by 
 Google Cloud Monitoring @dach


Slide 2

Slide 2 text

Introduction


Slide 3

Slide 3 text

Do you know “SLO” ?
 サービスレベル目標 !!
 ● 「サービスレベルの目標だから、システムパフォーマンスの目標」
 ってことでしょ?
 ● どうやってシステムパフォーマンスの目標を立てる? 
 ● GCP ではどうやってそれを実現する?外部サービス使うの?


Slide 4

Slide 4 text

Goal
 SLO を完全に理解して 
 GCP 上で運用する方法を理解する


Slide 5

Slide 5 text

Who is dach?
 チキン南蛮エンジニア ● Job: Eng / PM ● Skill: 0→1,火消し,文化作り,それっぽいDocs作り ● Twitter: i-dach ● Contents: EasyEasy (完全に理解したTalk) @dach

Slide 6

Slide 6 text

Table Of Contents
 ● 第1部 SLO を設計する
 ○ SLO を設定するまでのあれこれ
 
 ● 第2部 SLO を設定する
 ○ どうやって実現するのか
 
 ● 第3部 運用サイクルに載せる
 ○ SLO のある運用とどう活かしていくべきか
 


Slide 7

Slide 7 text

Table Of Contents
 ● 第1部 SLO を設計する
 ○ SLO を設定するまでのあれこれ
 
 ● 第2部 SLO を設定する
 ○ どうやって実現するのか
 


Slide 8

Slide 8 text

Part1
 Design to SLO


Slide 9

Slide 9 text

SLO Roadmap
 STEP 0 SLO を理解する
 
 STEP 1 ビジネス分析をして CUJ を知る
 
 STEP 2 SLI を定義する
 
 STEP 3 SLO を設計する


Slide 10

Slide 10 text

SLO Roadmap
 STEP 0 SLO を理解する  ← - - - - - - - 
 
 STEP 1 ビジネス分析をして CUJ を知る
 
 STEP 2 SLI を定義する
 
 STEP 3 SLO を設計する  ← - - - - - - - 
 - 今日話す範囲
 
 
 
 
 
 - 今日話す範囲


Slide 11

Slide 11 text

SLO Roadmap
 STEP 0 SLO を理解する
 
 STEP 1 ビジネス分析をして CUJ を知る
 
 STEP 2 SLI を定義する
 
 STEP 3 SLO を設計する


Slide 12

Slide 12 text

Why need to SLO?
 SLO は、チームがやるべきことについて意味のある疑念を解決する便利なツールとなります。「この課題には絶対取り組まなくては」 ということと、「この課題には取り組まなくていいかもしれない」ということの間に線引きすることこそが目標なのです。 SLO は、企業が達成したいとする目標であり、防御のために起こす行動でもあります。ただし忘れてならないのは、SLO はサービス レベル契約(SLA)ではないということです。ユーザー エクスペリエンスにおいて最も重要な側面を SLO が象徴するようにしなくてはな りません。SLO が満たされるということは、ユーザーにとっても自社にとってもハッピーなことでなくてはならないのです。一方で、シス テムが SLO を満たさないということは、不満を持つユーザーがいることを意味します。 (優れた SLO を策定するには : CRE が現場で学んだこと より)


Slide 13

Slide 13 text

For Example...
 ユーザー Our Service Good ! 5 sec


Slide 14

Slide 14 text

For Example...
 ユーザー Our Service XXX 10 sec


Slide 15

Slide 15 text

For Example...
 ユーザー Our Service XXX 6 sec


Slide 16

Slide 16 text

For Example...
 ユーザー Our Service Good ! 6 sec
 SLO: 7 sec


Slide 17

Slide 17 text

What you need “SLO” is..
 SLOが無い世界:
 ● 「ユーザーがサービスに満足しているか」の基準がない
 ● 影響を感覚と感情でしか判断することができない
 
 SLOがある世界:
 ● UX に基づいた明確な目標を与える
 ● サービスの「今」が健全かどうかを示す
 


Slide 18

Slide 18 text

Wait a minute before SLO design
 Essence
 1. SLOは目標だが戦略ではない
 2. 必要とされるだけ可用性が高くなるように設定する
 3. SLOにはシステムが実現する最も重要な側面を設定する必要がある


Slide 19

Slide 19 text

Essence 1: SLOは目標だが戦略ではない
 
 
 ユーザー Our Service Good ! 6 sec
 SLO: 7 sec


Slide 20

Slide 20 text

ユーザー Our Service Well… 10 sec
 SLO: 7 sec
 Essence 1: SLOは目標だが戦略ではない
 
 


Slide 21

Slide 21 text

ユーザー Our Service Well… 10 sec
 SLO: 7 sec
 ユーザー体験は下がる 
 が、そこに何かしらの責任が発生するわけではない 
 Essence 1: SLOは目標だが戦略ではない
 
 


Slide 22

Slide 22 text

ユーザー Our Service Good! 10 sec
 SLO: 7 sec
 SLO を戦略とした場合、 しきい値がユーザーの期待値を超えていた場合でも SLO を追い求めることとなり、不要なコストをかけるようになる 
 Essence 1: SLOは目標だが戦略ではない
 
 


Slide 23

Slide 23 text

ユーザー Our Service 6 sec
 SLO: ? sec
 Essence 2: 必要とされるだけ可用性が高くなるように設定する
 ある程度 早ければ いいや

Slide 24

Slide 24 text

Essence 2: 必要とされるだけ可用性が高くなるように設定する
 Page Speed SLO Period Error Rate 7 sec avg / week 0 % 可用性が守られていれば 問題修復における機会費 用をロスしなくなる 現実的かつ適切な値を置く

Slide 25

Slide 25 text

Essence 3: システムが実現する最も重要な側面を設定する
 Our Service e.g. EC サイト 商品を 見る 商品を 買う ユーザー 事業者 UX 期待値 目標 結果

Slide 26

Slide 26 text

Essence 3: システムが実現する最も重要な側面を設定する
 ユーザー Our Service (Item List) Good ! 1 sec
 SLO: 3 sec
 色々な商品 見たい

Slide 27

Slide 27 text

Essence 3: システムが実現する最も重要な側面を設定する
 ユーザー Our Service (Item List) 別でいいや 10 sec
 SLO: 3 sec
 色々な商品 見たい

Slide 28

Slide 28 text

Essence
 1. SLOは目標だが戦略ではない
 2. 必要とされるだけ可用性が高くなるように設定する
 3. SLOにはシステムが実現する最も重要な側面を設定する必要がある


Slide 29

Slide 29 text

SLO Roadmap
 STEP 0 SLO を理解する
 
 STEP 1 ビジネス分析をして CUJ を知る
 
 STEP 2 SLI を定義する
 
 STEP 3 SLO を設計する


Slide 30

Slide 30 text

STEP 1 & 2 Summary
 ● Essence 3 を知るためにシステムを分析する
 ○ UC や要望、サービスの挙動や特性を理解する
 
 ● サービスが必要十分に機能するための指標を定義する
 ○ システム構成図などでシステムのI/Fや特性を理解する


Slide 31

Slide 31 text

SLO Roadmap
 STEP 0 SLO を理解する
 
 STEP 1 ビジネス分析をして CUJ を知る
 
 STEP 2 SLI を定義する
 
 STEP 3 SLO を設計する


Slide 32

Slide 32 text

Design to SLO
 ● CUJ:
 ○ 買い物客として、店で販売されている商品の一覧を見たい
 ● SLI の種類:
 ○ 可用性
 ● SLI の仕様:
 ○ ProductCatalogService へのリクエストに対する全てのレスポンスのうち、HTTP レスポンスコードが 2xx, 3xx, 4xx を返 すもの(= 良いレスポンス)の割当。ただし 429 を除く。
 ● SLI の実装:
 ○ Web ログから HTTP レスポンスコードを特定する。
 Google Cloud で実践する SRE の「CUJ と SLI と SLO 」から引用 


Slide 33

Slide 33 text

Design to SLO
 ● CUJ:
 ○ 買い物客として、店で販売されている商品の一覧を見たい
 ● SLI の種類:
 ○ 可用性
 ● SLI の仕様:
 ○ ProductCatalogService へのリクエストに対する全てのレスポンスのうち、HTTP レスポンスコードが 2xx, 3xx, 4xx を返 すもの(= 良いレスポンス)の割当。ただし 429 を除く。
 ● SLI の実装:
 ○ Web ログから HTTP レスポンスコードを特定する。
 ● SLO:
 ○ 過去 28 日間の ProductCatalogService のレスポンスのうち 99.9% が良いレスポンスでなければならない
 Google Cloud で実践する SRE の「CUJ と SLI と SLO 」から引用 


Slide 34

Slide 34 text

Design to SLO
 ● CUJ:
 ○ 買い物客として、店で販売されている商品の一覧を見たい
 ● SLI の種類:
 ○ 可用性
 ● SLI の仕様:
 ○ ProductCatalogService へのリクエストに対する全てのレスポンスのうち、HTTP レスポンスコードが 2xx, 3xx, 4xx を返 すもの(= 良いレスポンス)の割当。ただし 429 を除く。
 ● SLI の実装:
 ○ Web ログから HTTP レスポンスコードを特定する。
 ● SLO:
 ○ 過去 28 日間の ProductCatalogService のレスポンスのうち 99.9% が良いレスポンスでなければならない
 Google Cloud で実践する SRE の「CUJ と SLI と SLO 」から引用 
 どう定義するの?

Slide 35

Slide 35 text

Essence 2: 必要とされるだけ可用性が高くなるように設定する
 Page Speed SLO Period Error Rate 7 sec avg / week 0 % 可用性が守られていれば 問題修復における機会費 用をロスしなくなる 現実的かつ適切な値を置く

Slide 36

Slide 36 text

Principle
 1. 「現実的な」値であること
 
 2. 「適切な」値であること
 
 3. 期間を設けること


Slide 37

Slide 37 text

Principle
 1. 「現実的な」値であること
 a. 実測値をベースにする(直ぐに完璧にする必要はなし) 
 
 2. 「適切な」値であること
 a. 今が適切もしくはユーザー期待値の限界であると仮定する 
 
 3. 期間を設けること
 a. ユーザーアクションを集計したい期間もしくは 
 結果から改善できる期間を利用する 
 1からスタートするときの 個人的なおすすめ方法

Slide 38

Slide 38 text

Principle Example
 1. 「現実的な」値であること
 a. 実測値をベースにする(直ぐに完璧にする必要はなし) 
 
 2. 「適切な」値であること
 a. 今が適切もしくはユーザー期待値の限界であると仮定する 
 
 3. 期間を設けること
 a. ユーザーアクションを集計したい期間もしくは 
 結果から改善できる期間を利用する 
 商品ページに対する可用性の定義は なかったので今が上限と仮定する 売上をベースにユーザーの行動を振り返 るので 1ヶ月 を軸にする access log を見ると、 先月は 99.0% 達成していた

Slide 39

Slide 39 text

Design to SLO
 ● CUJ:
 ○ 買い物客として、店で販売されている商品の一覧を見たい
 ● SLI の種類:
 ○ 可用性
 ● SLI の仕様:
 ○ ProductCatalogService へのリクエストに対する全てのレスポンスのうち、HTTP レスポンスコードが 2xx, 3xx, 4xx を返 すもの(= 良いレスポンス)の割当。ただし 429 を除く。
 ● SLI の実装:
 ○ Web ログから HTTP レスポンスコードを特定する。
 ● SLO:
 ○ 過去 28 日間の ProductCatalogService のレスポンスのうち 99.9% が良いレスポンスでなければならない
 Google Cloud で実践する SRE の「CUJ と SLI と SLO 」から引用 


Slide 40

Slide 40 text

Part1 Summary
 ● SLO はサービスの「今」が健全かどうかを示す
 
 ● SLO に理想を詰め込まず、現実的なものにする
 
 ● SLO を設定するために、きちんとサービスを理解する


Slide 41

Slide 41 text

Table Of Contents
 ● 第1部 SLO を設計する
 ○ SLO を設定するまでのあれこれ
 
 ● 第2部 SLO を設定する
 ○ どうやって実現するのか
 
 


Slide 42

Slide 42 text

Part2
 SLO by Google Cloud Monitoring


Slide 43

Slide 43 text

SLO Setting Roadmap
 STEP 1 Google Cloud Monitoring で設定する
 
 STEP 2 Alert を設定する
 
 STEP 3 Terraform で管理する
 


Slide 44

Slide 44 text

SLO Setting Roadmap
 STEP 1 Google Cloud Monitoring で設定する
 
 STEP 2 Alert を設定する
 
 STEP 3 Terraform で管理する
 


Slide 45

Slide 45 text

Services Overview


Slide 46

Slide 46 text

Create SLO - Set your SLI
 Availability / Request-based を 設定

Slide 47

Slide 47 text

Create SLO - Define SLI details
 前述の設計に沿って設定

Slide 48

Slide 48 text

Create SLO - Set your SLO
 Preview で 既に超えてないかを確認

Slide 49

Slide 49 text

Sample 


Slide 50

Slide 50 text

Part 2 Summary
 ● 設計できてれば画面から簡単にポチポチつくれちゃいます


Slide 51

Slide 51 text

In our case
 ● SLO の設計
 →Spread Sheet でビジネス分析 ~ SLO 設計までをセットで管理 
 
 ● SLO の設定
 →Terraform module を利用して一部は共通的なものを利用
 
 ● Alert の設定
 →Terraform module を利用して共通的なものを利用


Slide 52

Slide 52 text

Summary
 ● SLO を設定することが目的にならないようにする
 
 ● SLO を設定するだけだと陳腐化する
 
 ● 定期的な見直しが必要


Slide 53

Slide 53 text

Reference
 *Google Cloud で実践する SRE 
 https://www.slideshare.net/GoogleCloudPlatformJP/google-cloud-sre-249557085
 
 *SLO、SLI、SLA について考える : CRE が現場で学んだこと 
 https://cloud.google.com/blog/ja/products/gcp/availability-part-deux-cre-life-lessons
 
 *可用性とどう向き合うべきか、それが問題だ : CRE が現場で学んだこと 
 https://cloud.google.com/blog/ja/products/gcp/available-or-not-that-is-the-question-cre-life-lessons


Slide 54

Slide 54 text

Thanks