## 定義 信頼性スタック(Reliability Stack)とは、[[Alex Hidalgo]] が『SLO サービスレベル目標』で提示する、信頼性を SLI(サービスレベル指標)・SLO(サービスレベル目標)・エラーバジェットの三層で段階的に扱うモデルである。最下層の SLI はユーザー視点の計測値を提供し、中間層の SLO はその計測値が満たすべき目標比率を定め、最上層のエラーバジェットは SLO 未達の許容量を意思決定(リリース続行か信頼性改善への集中か)に変換する。各層は直下の層から情報を受け取る積み上げ構造を取る。SLA(サービスレベル合意)は SLO と並行して同じ SLI から情報を受け取るが、目標ではなく契約上の帰結(補償等)を伴う点で SLO と区別される (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]])。 三層構造の下敷きには、著者が「常に真実」と位置づける 3 点がある: (1) 適切な信頼性はサービスにとって最重要の運用要件である、(2) 信頼性はユーザーからどう見えるかで決まる(プロバイダ視点の計測ではない)、(3) 完璧な信頼性は存在せず、完璧に近づくほどコストが非線形に増大する。信頼性スタックはこの 3 つの真実を実務に落とし込むための枠組みとして導入される (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]])。 ## 横断的知見 - **信頼性スタックの三層は単一サービスだけでなく、依存関係を持つマルチコンポーネントサービス全体のユーザージャーニーにも同型に適用できる**: 1 章は信頼性スタックを SLI→SLO→エラーバジェットの積み上げ構造として定義したが、12 章は架空の小売企業を例に、少数の代表的なユーザージャーニー(製品検索・チェックアウト等)を計測すれば、その背後にある多数のマイクロサービス・DB・キャッシュの健全性をまとめて把握できることを示した。個々のコンポーネントが自身の信頼性スタックを持ちながら、上位のユーザージャーニー SLO へ集約されるという多層構造が、1 章の三層モデルの具体的な拡張として読める (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]], [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 12 適切に機能した例]])。 - **SLI の定義(1 章)と設計方法論(3 章)は別々の作業単位として書き分けられている**: 1 章は SLI を「ユーザー視点の計測値」として定義し信頼性スタックの最下層に位置づけるにとどまるが、3 章はその定義を出発点に、単純なリクエスト/レスポンスサービスでは 6 つの質問への還元、複雑なサービスではジャンクション選択という具体的な設計手順を示す。信頼性スタックの最下層(SLI)は、単に「ある」だけでなく「どう作るか」の方法論を持ち、これは [[意味のあるSLI設計]] として独立に集約する (Source: [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]], [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 3 意味のあるサービスレベル指標の開発]])。 - **"resilience via engineering" は信頼性スタックの積層メタファーを「下層ほど緩くてよい」方向へ具体化する**: McGhee(SLOconf 2021)は、下層(machines that fail all the time)の上に信頼性の高い上位サービスを構築できることを "resilience via engineering" と呼び、これを scalable reliability(逆ピラミッド、aggregate availability が目標)という設計思想の核心に据えた。1 章の信頼性スタック(SLI→SLO→エラーバジェット)は単一サービス内の積層を扱うが、McGhee の逆ピラミッドは複数サービス間の信頼性の積層(下位ほど低い可用性でよい)を扱っており、両者は「積層」という同じメタファーを異なるスケール(単一サービス内 / サービス間)に適用している (Source: [[@2021__SLOconf__SLO Math]], [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]])。 - **同じ著者(Steve McGhee)が、"resilience via engineering" の対比を講演の1年後に書籍でも独立に再提示している**: 『SREエンタープライズロードマップ』第2章(共著者 McGhee)は、強固な基盤にすべてのコンポーネントを積み上げるユニオンモデル(コンポーネントベースの信頼性)と、故障を想定したアーキテクチャにより一部分の稼働のみを前提とする交差モデル(確率的信頼性)を「信頼性のピラミッド」(図2-2)として対比する。これは SLOconf 2021 で McGhee が示した component-level reliability と scalable reliability(逆ピラミッド)の対比と同一の枠組みであり、講演(2021)が先行し書籍(2022)がそれを再利用している。両ソースの力点は異なり、講演側は SLO 合成の実務的な計算式(intersection/union availability)へ接続するのに対し、書籍側はこの対比を「なぜ今 SRE が必要か」というクラウドコンピューティングによる産業史的な転換(ウェアハウススケールコンピューティング、CapEx→OpEx モデルへの移行)の説明に位置づける。同じピラミッドの比喩が、講演では「どう計算するか」、書籍では「なぜ必要になったか」という異なる問いに答えている (Source: [[@2022__OReillyJapan__SREエンタープライズロードマップ - Chapter 2 なぜ信頼性のためにSREというアプローチをとるのか?]], [[@2021__SLOconf__SLO Math]])。 ## 未解決の問い - ~~信頼性スタックの三層構造は単一サービスを前提としているが、依存関係を持つマイクロサービス群では、各サービスの信頼性スタックをどう合成すべきか([[サービスレベル目標]] の「SLO Algebra は未解決」という知見と同型の問い)。~~ → **部分的解決**: McGhee(SLOconf 2021)の intersection availability(SLO^depth)・union availability(1-(1-SLO)^redundancy)が、依存が独立という前提の下で合成式を与える。ただし「各サービスが独自の SLI/SLO/エラーバジェットを持つ信頼性スタックそのもの」をどう合成するか(エラーバジェットの消費が上位スタックへどう伝播するか)は、可用性の数値合成とは別の問いとして残る(Source: [[@2021__SLOconf__SLO Math]])。 - SLA を持つサービスでは、SLO のエラーバジェットと SLA のエラーバジェットは独立に管理されるのか、それとも一方の消費が他方に波及するのか。 - 信頼性スタックという三層モデルは、SRE Book・SRE Workbook の SLI/SLO/SLA 定義(既存 [[サービスレベル目標]] concept が集約)と用語上は重なるが、「スタック」という積層メタファーを明示的に導入した点は本書固有である。このメタファーが後続章(4 章・5 章・14 章)でどう発展するかは今後の章 ingest で確認する。 - 『SREエンタープライズロードマップ』第2章の「ユニオンモデル/交差モデル」という用語と、SLOconf 2021 の「component-level reliability/scalable reliability」という用語は同じ概念を指すと考えられるが、どちらが先に定着した呼称か、他の SRE 文献での使用実態はどうかは未確認。 ## 関連 - ソース: [[@2021__SLOconf__SLO Math]] / [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]] / [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 12 適切に機能した例]] / [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 3 意味のあるサービスレベル指標の開発]] / [[@2022__OReillyJapan__SREエンタープライズロードマップ - Chapter 2 なぜ信頼性のためにSREというアプローチをとるのか?]] - 実体: [[Alex Hidalgo]] / [[Steve McGhee]] - 概念: [[サービスレベル目標]](SLI/SLO/SLA の一般的定義) / [[エラーバジェット]](エラーバジェットの運用論) / [[意味のあるSLI設計]](SLI 開発の方法論) / [[成長の3つの地平線]](同章が扱う投資計画モデル) - 関連 MOC: [[structures/SRE - MOC]] ## 出典 - [[@2021__SLOconf__SLO Math]]("resilience via engineering"、component-level reliability と scalable reliability の対比) - [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 1 信頼性スタック]](信頼性スタックの三層構造の初出、SLI/SLO/SLA の関係、エラーバジェットのイベントベース/時間ベース算出) - [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 12 適切に機能した例]](マルチコンポーネントサービスにおけるユーザージャーニー起点の SLI/SLO 設計の具体例) - [[@2023__OReillyJapan__SLO サービスレベル目標 - Chapter 3 意味のあるサービスレベル指標の開発]](SLI 定義を出発点とした質問駆動の設計方法論) - [[@2022__OReillyJapan__SREエンタープライズロードマップ - Chapter 2 なぜ信頼性のためにSREというアプローチをとるのか?]](ユニオンモデル/交差モデルの対比、信頼性のピラミッド図2-2)