## 概要 [[Sal Furino]](Customer Reliability Engineer)が SREcon23 EMEA(2023-10-11、ダブリン)で発表した、組織への SLO 導入に関する実践的ガイドである。3 冊の SRE 書籍(SRE Book、SRE Workbook、Implementing Service Level Objectives)が「SRE は正しい方向」を示しながら「どう達成するか」を読者に委ねていることへの応答として、SLO 導入に迷う組織への具体的アドバイス 9 つを 3 カテゴリで整理した。架空の顧客「Fortress Bank」(金融/カードプロセッサ)と「Streams 'R' Us」(ストリーミング動画)を一貫した事例として用いる。 ## 主要メッセージ **カテゴリ 1: システムを理解する(Understanding the Systems)** - **① Measure Meaningful Things**: CPU 使用率や Disk IO を計測するのではなく、カスタマージャーニーとインタラクション(ユーザーに意味のあること)に光を当てる(p.8)。 - **② Success Rates > Error Rates**: 悪い挙動の定義は簡単だが限定的(既知の問題しかカバーしない)。成功を定義すれば「それ以外はすべて不確か」となり包括的(p.14)。 - **③ Provide Raw Data for SLOs**: ダウンサンプリング(avg/percentile/sum)は避け、シンプルなクエリで高フィデリティ情報を SLO に提供する(p.16)。 **カテゴリ 2: システムへの期待値を理解する(Understanding Expectations of Systems Behavior)** - **④ Look Back to Look Forward**: 「全サービスが 99.999% 以上」とは言わない。過去の実績を調べ、達成可能な信頼性目標をベンチマーク化し、最近インシデント後の SLI アクティビティとエラーバジェットを計算する(p.21-25)。 - **⑤ Observability Without Action is Just Storage**: セット & フォーゲットしない。信頼性ターゲットをコード化し、自動アクションを設定し、必要時だけアラートする(p.26)。 - **⑥ Different Time Windows for Different Folks**: 同じ SLI でもステークホルダーによって時間窓を変える。24h/48h → SRE/Ops、14D/2W → Dev チーム、Monthly/Quarterly → アーキテクト/リーダーシップ(p.28-29)。 **カテゴリ 3: 期待値との乖離を認識する(Recognizing when a system doesn't match those expectations)** - **⑦ Enrich Dashboards with Contextual Information**: アノテーション・バッジ・依存関係マッピングでコンテキストを加える(p.32)。 - **⑧ Document Your SLOs**: SLO の存在理由を WWWWHW(What/Where/Who/When/How/Why)で文書化し、SLO 定義をバージョン管理する。[[SLODLC]] を紹介(p.33-35)。 - **⑨ Your Problems Aren't Unique**: サイロで動かず、オープン標準(OpenTelemetry、Open SLO)・フレームワーク(DORA、R9Y.dev、SLODLC)・コミュニティ(LFI、Art of SLOs)を活用する(p.36-37)。 ## 視覚的に重要な図表 **p.8 「Measure Meaningful Things」ビームダイアグラム** ![[_attachments/2023__SREcon23EMEA__9-Things-You-Should-Do-When-Starting-to-Use-SLOs/page-008.png]] 左側(暗部)が「計測すべきでないもの」(CPU 使用率・Disk IO)、右側(光のビーム内)が「ユーザーに重要なもの」(カスタマージャーニー・インタラクション)。SLI 選択の基準を視覚的に示す。 **p.11 「Fortress Bank」サービスアーキテクチャ全体図** ![[_attachments/2023__SREcon23EMEA__9-Things-You-Should-Do-When-Starting-to-Use-SLOs/page-011.png]] Clients → API Interface → Api 2 → Connect API → Direct API ↔ Management API ↔ Management API 2 ↔ External dependency。Management Message Queue(Insights/Advice Messages)・Screening・Management API 3/4 も含む。外部サービス(シアン)と内部サービス(グリーン)で色分け。 **p.18 「Streams 'R' Us」SLI ダッシュボード(アノテーションなし版)** ![[_attachments/2023__SREcon23EMEA__9-Things-You-Should-Do-When-Starting-to-Use-SLOs/page-018.png]] 3 パネル構成:① SLI(client Latency < 3000ms)の時系列、② Reliability Burn Down(残存信頼性、Reliability Objective 点線付き)、③ Error Budget Burn Rate(Burn Rate Objective 点線付き)。ダウンサンプリングなしの高フィデリティデータにより個別スパイクが可視化されている。 **p.27 「Fortress Bank」Level 1 Ack アクションテーブル** ![[_attachments/2023__SREcon23EMEA__9-Things-You-Should-Do-When-Starting-to-Use-SLOs/page-027.png]] 可用性 SLI(Service Connect API への 2XX/3XX/4XX の割合、ロードバランサ計測)に対してレイテンシ閾値別アクションを定義: | Percentile | ms | Label | Action | |---|---|---|---| | 99.9 | 2000 | SLA | Full Outage Crisis Mode | | 99 | 1700 | Something is wrong | Page on Call | | 95 | 1500 | Starting to lag | Service Now Ticket | | 90 | 1000 | Okay | Warn / Send Slack message | | 50 | 100 | lightning | Steady State N/A | **p.34 SLODLC フレームワーク図** ![[_attachments/2023__SREcon23EMEA__9-Things-You-Should-Do-When-Starting-to-Use-SLOs/page-034.png]] INITIATE(Prepare Business Case / Identify Stakeholders / Define Desired Outcomes)→ DISCOVER(Prioritize User Journeys & Expectations / Analyze Dependencies / Observe System Behavior)→ DESIGN(Define Meaningful SLI / Define Achievable SLO / Establish Error Budgets / Define Aspirational SLO)→ IMPLEMENT(Collect SLI / Publish SLO Goals / Enforce Error Budget Policy)→ OPERATE(Respond to Error Budget Events & Alerts / Ensure SLI Data Cleanliness / Adjust SLO Targets / Gain SLO Insights)。上部に「Align with Service & Software Development and Business Life Cycles」「Listen and Engage Users and Stakeholders」の 2 横断レイヤーが走り、下部に「Share Learnings from SLO Journey to Align Practices and Standards」と「Review Periodically」がある。 ## 概念・実体への接続 - [[サービスレベル目標]] / [[SLI-SLO段階的導入]] / [[エラーバジェット]] - [[SLODLC]](SLO Development Lifecycle) - [[DORA]] / OpenTelemetry / Open SLO(p.37 で言及されたオープン標準・フレームワーク) - [[Sal Furino]] ## 口頭説明・補足 ### Streams 'R' Us:隠れた依存関係の発見 口頭説明では、Streams 'R' Us の SLI ダッシュボード改善でダウンサンプリングを除去したところ、「毎日 24 時間おきに 30〜45 分間の大きなレイテンシスパイク」というパターンが可視化されたと詳細に説明した。原因はキャッシュのリフレッシュを毎日同じ時刻に実行していたこと。重要な点として、このキャッシングサービスはそれまで見たいかなる依存関係アーキテクチャ図にも登場していなかった。SLO のレビューを始めてはじめて発見した依存関係である(transcript)。 ### Fortress Bank Level 2 Ack:計測によるアーキテクチャ発見 Level 2 Ack のデータを実際に計装して調べるまで、チームは決済処理が別の外部 API ゲートウェイを経由していることを知らなかった。「ストップウォッチをどこで始めてどこで止めるか」を定義する作業を通じて、アーキテクチャ図に存在しないコンポーネントが発見された(transcript)。 ### SLODLC テンプレートはマークダウン・コードベースと共存管理 口頭説明では SLODLC の実用上の特徴として「すべてのテンプレートがマークダウン形式であり、コードベースやインフラ定義と並べて追跡・バージョン管理できる」と述べた。SLO 定義を変更するたびに「なぜそうしたか」を文書化することも重要だと強調した(transcript)。 ### ダッシュボード名付けの 3 a.m. テスト ダッシュボードのメトリクス名の基準として「夜中の 3 時にページで起こされたときに即座に意味がわからない名前は良い名前ではない」という基準を口頭で提示した(transcript)。 ### バッジの「最終確認日」が重要 バッジ機能で表示すべき情報として「SLO がいつ最後に正確であると確認されたか」を挙げた。他チームからサービスを引き継いだとき、2019 年に設定された SLO がアーキテクチャ変更後も更新されていないケースを例として挙げた(transcript)。 ### 登壇時に求職中 Thank you スライドに "I'm looking for my next opportunity" と口頭で述べ、聴講者への求職活動を明示した。2023 年 10 月時点では特定企業に所属していなかったことの裏付けとなる(transcript)。 ## 限界・不確実点 - 登壇者の所属組織は確認できない。2023-10-11 時点では求職中であったことを本人が口頭で述べた(transcript)。「Customer Reliability Engineer」は役職であり特定企業への所属ではない。 - p.30 の R9Y.dev スクリーンショットはフレームワーク全体像だが、解像度が低く内容の詳細は読めない。 - p.35 の SLODLC Discovery Worksheet スクリーンショットも詳細不鮮明。