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

SLO_By_Google_Cloud_Monitoring

dach
February 22, 2022
120

 SLO_By_Google_Cloud_Monitoring

SLO を完全に理解して GCP で設定するまでがとりあえず出来るようになるためのお話

dach

February 22, 2022
Tweet

Transcript

  1. SLO by 

    Google Cloud Monitoring
    @dach


    View Slide

  2. Introduction


    View Slide

  3. Do you know “SLO” ?

    サービスレベル目標 !!

    ● 「サービスレベルの目標だから、システムパフォーマンスの目標」

    ってことでしょ?

    ● どうやってシステムパフォーマンスの目標を立てる? 

    ● GCP ではどうやってそれを実現する?外部サービス使うの?


    View Slide

  4. Goal

    SLO を完全に理解して 

    GCP 上で運用する方法を理解する


    View Slide

  5. Who is dach?

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

    View Slide

  6. Table Of Contents

    ● 第1部 SLO を設計する

    ○ SLO を設定するまでのあれこれ


    ● 第2部 SLO を設定する

    ○ どうやって実現するのか


    ● 第3部 運用サイクルに載せる

    ○ SLO のある運用とどう活かしていくべきか


    View Slide

  7. Table Of Contents

    ● 第1部 SLO を設計する

    ○ SLO を設定するまでのあれこれ


    ● 第2部 SLO を設定する

    ○ どうやって実現するのか


    View Slide

  8. Part1

    Design to SLO


    View Slide

  9. SLO Roadmap

    STEP 0 SLO を理解する


    STEP 1 ビジネス分析をして CUJ を知る


    STEP 2 SLI を定義する


    STEP 3 SLO を設計する


    View Slide

  10. SLO Roadmap

    STEP 0 SLO を理解する  ← - - - - - - - 


    STEP 1 ビジネス分析をして CUJ を知る


    STEP 2 SLI を定義する


    STEP 3 SLO を設計する  ← - - - - - - - 

    - 今日話す範囲






    - 今日話す範囲


    View Slide

  11. SLO Roadmap

    STEP 0 SLO を理解する


    STEP 1 ビジネス分析をして CUJ を知る


    STEP 2 SLI を定義する


    STEP 3 SLO を設計する


    View Slide

  12. Why need to SLO?

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


    View Slide

  13. For Example...

    ユーザー
    Our Service
    Good !
    5 sec


    View Slide

  14. For Example...

    ユーザー
    Our Service
    XXX
    10 sec


    View Slide

  15. For Example...

    ユーザー
    Our Service
    XXX
    6 sec


    View Slide

  16. For Example...

    ユーザー
    Our Service
    Good !
    6 sec

    SLO: 7 sec


    View Slide

  17. What you need “SLO” is..

    SLOが無い世界:

    ● 「ユーザーがサービスに満足しているか」の基準がない

    ● 影響を感覚と感情でしか判断することができない


    SLOがある世界:

    ● UX に基づいた明確な目標を与える

    ● サービスの「今」が健全かどうかを示す


    View Slide

  18. Wait a minute before SLO design

    Essence

    1. SLOは目標だが戦略ではない

    2. 必要とされるだけ可用性が高くなるように設定する

    3. SLOにはシステムが実現する最も重要な側面を設定する必要がある


    View Slide

  19. Essence 1: SLOは目標だが戦略ではない



    ユーザー
    Our Service
    Good !
    6 sec

    SLO: 7 sec


    View Slide

  20. ユーザー
    Our Service
    Well…
    10 sec

    SLO: 7 sec

    Essence 1: SLOは目標だが戦略ではない



    View Slide

  21. ユーザー
    Our Service
    Well…
    10 sec

    SLO: 7 sec

    ユーザー体験は下がる 

    が、そこに何かしらの責任が発生するわけではない 

    Essence 1: SLOは目標だが戦略ではない



    View Slide

  22. ユーザー
    Our Service
    Good!
    10 sec

    SLO: 7 sec

    SLO を戦略とした場合、 しきい値がユーザーの期待値を超えていた場合でも SLO
    を追い求めることとなり、不要なコストをかけるようになる 

    Essence 1: SLOは目標だが戦略ではない



    View Slide

  23. ユーザー
    Our Service
    6 sec

    SLO: ? sec

    Essence 2: 必要とされるだけ可用性が高くなるように設定する

    ある程度
    早ければ
    いいや

    View Slide

  24. Essence 2: 必要とされるだけ可用性が高くなるように設定する

    Page Speed SLO Period Error Rate
    7 sec avg / week 0 %
    可用性が守られていれば
    問題修復における機会費
    用をロスしなくなる
    現実的かつ適切な値を置く

    View Slide

  25. Essence 3: システムが実現する最も重要な側面を設定する

    Our Service
    e.g. EC サイト
    商品を
    見る
    商品を
    買う
    ユーザー 事業者
    UX
    期待値
    目標
    結果

    View Slide

  26. Essence 3: システムが実現する最も重要な側面を設定する

    ユーザー
    Our Service
    (Item List)
    Good !
    1 sec

    SLO: 3 sec

    色々な商品
    見たい

    View Slide

  27. Essence 3: システムが実現する最も重要な側面を設定する

    ユーザー
    Our Service
    (Item List)
    別でいいや
    10 sec

    SLO: 3 sec

    色々な商品
    見たい

    View Slide

  28. Essence

    1. SLOは目標だが戦略ではない

    2. 必要とされるだけ可用性が高くなるように設定する

    3. SLOにはシステムが実現する最も重要な側面を設定する必要がある


    View Slide

  29. SLO Roadmap

    STEP 0 SLO を理解する


    STEP 1 ビジネス分析をして CUJ を知る


    STEP 2 SLI を定義する


    STEP 3 SLO を設計する


    View Slide

  30. STEP 1 & 2 Summary

    ● Essence 3 を知るためにシステムを分析する

    ○ UC や要望、サービスの挙動や特性を理解する


    ● サービスが必要十分に機能するための指標を定義する

    ○ システム構成図などでシステムのI/Fや特性を理解する


    View Slide

  31. SLO Roadmap

    STEP 0 SLO を理解する


    STEP 1 ビジネス分析をして CUJ を知る


    STEP 2 SLI を定義する


    STEP 3 SLO を設計する


    View Slide

  32. Design to SLO

    ● CUJ:

    ○ 買い物客として、店で販売されている商品の一覧を見たい

    ● SLI の種類:

    ○ 可用性

    ● SLI の仕様:

    ○ ProductCatalogService へのリクエストに対する全てのレスポンスのうち、HTTP レスポンスコードが 2xx, 3xx, 4xx を返
    すもの(= 良いレスポンス)の割当。ただし 429 を除く。

    ● SLI の実装:

    ○ Web ログから HTTP レスポンスコードを特定する。

    Google Cloud で実践する SRE の「CUJ と SLI と SLO 」から引用 


    View Slide

  33. 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 」から引用 


    View Slide

  34. 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 」から引用 

    どう定義するの?

    View Slide

  35. Essence 2: 必要とされるだけ可用性が高くなるように設定する

    Page Speed SLO Period Error Rate
    7 sec avg / week 0 %
    可用性が守られていれば
    問題修復における機会費
    用をロスしなくなる
    現実的かつ適切な値を置く

    View Slide

  36. Principle

    1. 「現実的な」値であること


    2. 「適切な」値であること


    3. 期間を設けること


    View Slide

  37. Principle

    1. 「現実的な」値であること

    a. 実測値をベースにする(直ぐに完璧にする必要はなし)


    2. 「適切な」値であること

    a. 今が適切もしくはユーザー期待値の限界であると仮定する


    3. 期間を設けること

    a. ユーザーアクションを集計したい期間もしくは

    結果から改善できる期間を利用する

    1からスタートするときの
    個人的なおすすめ方法

    View Slide

  38. Principle Example

    1. 「現実的な」値であること

    a. 実測値をベースにする(直ぐに完璧にする必要はなし)


    2. 「適切な」値であること

    a. 今が適切もしくはユーザー期待値の限界であると仮定する


    3. 期間を設けること

    a. ユーザーアクションを集計したい期間もしくは

    結果から改善できる期間を利用する

    商品ページに対する可用性の定義は
    なかったので今が上限と仮定する
    売上をベースにユーザーの行動を振り返
    るので 1ヶ月 を軸にする
    access log を見ると、
    先月は 99.0% 達成していた

    View Slide

  39. 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 」から引用 


    View Slide

  40. Part1 Summary

    ● SLO はサービスの「今」が健全かどうかを示す


    ● SLO に理想を詰め込まず、現実的なものにする


    ● SLO を設定するために、きちんとサービスを理解する


    View Slide

  41. Table Of Contents

    ● 第1部 SLO を設計する

    ○ SLO を設定するまでのあれこれ


    ● 第2部 SLO を設定する

    ○ どうやって実現するのか



    View Slide

  42. Part2

    SLO by Google Cloud
    Monitoring


    View Slide

  43. SLO Setting Roadmap

    STEP 1 Google Cloud Monitoring で設定する


    STEP 2 Alert を設定する


    STEP 3 Terraform で管理する


    View Slide

  44. SLO Setting Roadmap

    STEP 1 Google Cloud Monitoring で設定する


    STEP 2 Alert を設定する


    STEP 3 Terraform で管理する


    View Slide

  45. Services Overview


    View Slide

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

    View Slide

  47. Create SLO - Define SLI details

    前述の設計に沿って設定

    View Slide

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

    View Slide

  49. Sample 


    View Slide

  50. Part 2 Summary

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


    View Slide

  51. In our case

    ● SLO の設計

    →Spread Sheet でビジネス分析 ~ SLO 設計までをセットで管理 


    ● SLO の設定

    →Terraform module を利用して一部は共通的なものを利用


    ● Alert の設定

    →Terraform module を利用して共通的なものを利用


    View Slide

  52. Summary

    ● SLO を設定することが目的にならないようにする


    ● SLO を設定するだけだと陳腐化する


    ● 定期的な見直しが必要


    View Slide

  53. 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


    View Slide

  54. Thanks


    View Slide