Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Chapter 2. Implementing SLOs (2)
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
coffee
January 08, 2025
4
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Chapter 2. Implementing SLOs (2)
coffee
January 08, 2025
More Decks by coffee
See All by coffee
Chapter 3. SLO Engineering Case Studies
tai25011601
0
5
Chapter 2. Implementing SLOs
tai25011601
0
12
SRW - Chapter 4. Monitoring
tai25011601
0
8
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
529
40k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
The SEO Collaboration Effect
kristinabergwall1
1
590
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
340
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Agile that works and the tools we love
rasmusluckow
331
22k
Embracing the Ebb and Flow
colly
88
5.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
780
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Prompt Engineering for Job Search
mfonobong
0
520
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Transcript
SLOとエラーバジェットの基本 信頼性とビジネス成功への第一歩 1
SLO(サービスレベル目標)とは何か? 簡単な定義と重要性 SLO: サービスの信頼性に関する目標値。 例: 「99.9%のリクエスト成功率」 ユーザーの期待とサービス提供の現実を橋渡しする指標。 重要性: ユーザー満足度を向上させる。 システムの安定性を定量化。
チーム間の共通理解を形成。 2
SRE(Site Reliability Engineering)における役割 なぜSREにおいてSLOが重要か? SREのコアとなる概念の1つ。 信頼性向上プロジェクトの優先順位を決定するための指標。 機能開発と運用のバランスを取る。 例: 新しい機能を迅速にリリースする一方で、ユーザーに提供する安定性を確保。 3
なぜSLOが必要か? 信頼性と機能開発のバランス 信頼性が高すぎる場合: 開発コストの増加。 新機能のリリースが遅れる。 信頼性が低すぎる場合: ユーザー離脱。 サービスの評判低下。 4
ビジネスへの影響 コスト: 信頼性向上に投資しすぎると運用コストが増加。 過小投資はインシデント対応費用を増加させる。 顧客満足度: ユーザーが求める品質を提供することでロイヤルティを向上。 例: ECサイトの「購入完了」プロセスの信頼性が低いと、売上に影響。 5
今回のゴール プレゼンテーションの目的 聴衆が得られる価値: SLOの基本を理解し、自分のプロダクトに適用する手法を学ぶ。 SLOの運用と改善プロセスの実践例を知る。 対象者 開発者、SRE、プロダクトマネージャー、運用チーム。 6
次のステップの明確化 ゴール後の行動 チーム内での議論: SLOの必要性を共有し、導入計画を立てる。 測定開始: 適切なSLI/SLOを設定し、運用プロセスを構築。 7
SLOとエラーバジェットの基本 信頼性とビジネス成功への第一歩 8
2. 基本概念の解説 SLOとエラーバジェットの基本 SLO(サービスレベル目標) 定義: サービスの信頼性に関する具体的な目標値。 例: 「99.9%のリクエスト成功率」 9
100%を目指さない理由: i. 実現不可能性: ハードウェア故障やネットワーク障害は避けられない。 ii. コスト増: 高信頼性を目指すほどコストが急増。 例: 冗長構成や24/7の監視体制。 iii.
改善余地の喪失: 新機能リリースやシステム変更が停滞。 10
エラーバジェット 定義: SLOを基に計算される、許容される失敗の割合。 例: 「SLOが99.9%なら、0.1%がエラーバジェット」 11
利用方法: i. 機能リリースの管理: エラーバジェットを消費する範囲内で新機能を展開。 例: サービスの追加リリースで、許容される障害の範囲を確認。 ii. 信頼性改善: エラーバジェット超過時は改善を優先。 例:
頻発する障害にリソースを集中。 12
SLI(サービスレベル指標) 定義 SLI(Service Level Indicator): サービス品質を定量化する指標。 基本形式: 「良好なイベント数 ÷ 総イベント数」
13
具体例 1. HTTP成功率: 成功したHTTPリクエスト数 ÷ 総HTTPリクエスト数。 例: 成功リクエスト数: 9,900件。 総リクエスト数:
10,000件。 成功率: 99%。 14
2. レイテンシ: 設定閾値(例: 100ms)以下のリクエスト割合。 例: 100ms以下: 85件。 総リクエスト数: 100件。 割合:
85%。 3. データの新鮮さ: 最新データを利用したリクエスト割合。 例: 最新データ: 95件。 総リクエスト数: 100件。 割合: 95%。 15
利点 直感的な理解: 0%〜100%の範囲で評価可能。 一貫性: SLOの測定やアラート設定が容易。 ユーザー体験の改善: 測定データに基づき、具体的な改善を計画可能。 16
SLOの導入ステップ 効果的な信頼性管理のための準備と手順 17
3. SLOの導入ステップ 導入の前提条件 1. 関係者間の合意: SLOがプロダクトの目標やユーザー期待に合致している。 開発チーム、運用チーム、マネージャーの全員が目標を承認。 2. エラーバジェットのポリシー活用の約束: SLO未達成時に対応を優先することに全員が合意。
エラーバジェットを超過した場合、新機能リリースを一時停止。 18
3. 現実的な目標設定: 通常の運用で達成可能なSLO。 例: 現在99.8%の成功率であれば、目標を99.9%に設定。 19
設定手順 1. 対象アプリケーションの選定: 信頼性が重要なアプリケーションから開始。 例: ユーザー数が多いサービス、売上に直結するシステム。 2. ユーザーの明確化: SLOがどのユーザーの期待に応えるべきかを定義。 例:
一般ユーザー、プレミアムユーザー。 20
3. ユーザーインタラクションの分析: ユーザーがサービスとどのように関わるかを特定。 例: ECサイト: 商品検索、購入完了。 動画配信: コンテンツ再生、バッファリングなしの視聴。 4. 高レベルのアーキテクチャ図作成:
システム全体の主要なコンポーネントと依存関係を図示。 目的: 信頼性に影響を与える要因を明確化。 例: Webアプリケーション → データベース → 外部API。 21
3. SLOの導入ステップ(まとめ) 成功のポイント 現実的な目標: 達成可能な範囲から始め、改善を繰り返す。 関係者の合意形成: 初期段階で全チームが目標にコミットする。 継続的な見直し: 初期設定を元に運用し、データに基づいて調整。 22
次のステップ 最初のSLI/SLOを選定し、データ収集を開始。 チームで進捗を定期的にレビュー。 23
SLIの選定と実装 サービス品質を定量化するための手法と例 24
4. SLIの選定と実装 SLI仕様の作成 定義例: 「100ms未満で読み込まれたリクエストの割合」 目的: ユーザー体験を定量化し、サービス品質を評価する指標。 重要性: SLIは、SLOを測定可能にする基盤。 25
SLIの実装例 ログの活用 方法: サーバーログから成功/失敗やレスポンス時間を収集。 利点: 実装が簡単でコストが低い。 課題: ネットワーク到達性やクライアントの問題を捉えられない。 26
クライアントサイドの計測 方法: ブラウザやアプリケーションからのデータ収集。 利点: ユーザー体験を直接測定可能。 課題: 実装にコストと時間がかかる。 27
ブラックボックスモニタリング 方法: 外部プローブによる可用性やパフォーマンスの確認。 利点: ネットワーク全体の問題を検出。 課題: 内部システムの詳細を捉えにくい。 28
SLIの種類と適用例 リクエスト駆動型 特徴: ユーザーリクエストに応答するシステム。 例: i. HTTP成功率: 成功したHTTPリクエスト数 ÷ 総リクエスト数。
ii. レイテンシ: 設定閾値(例: 100ms)以内のリクエスト割合。 29
パイプライン型 特徴: データ処理や変換を行うシステム。 例: i. 新鮮さ: 更新されたデータが使用された割合。 ii. カバレッジ: 処理対象データのうち、正しく処理されたデータの割合。
30
ストレージ型 特徴: データを保存し、必要に応じて提供するシステム。 例: i. 耐久性: 書き込まれたデータが正しく保持されている割合。 ii. 可用性: データへのリクエストに応答できた割合。
31
SLI実装のポイント 成功の秘訣 シンプルに始める: 初期段階では実装しやすいSLIから開始。 ユーザー視点を重視: ユーザー体験を直接反映する指標を優先。 継続的改善: 運用データに基づき、SLIを調整・改良。 32
運用と改善 SLOとエラーバジェットを活用した継続的な信頼性管理 33
5. 運用と改善 SLOとエラーバジェットの活用 信頼性向上と機能開発のバランス 目的: ユーザー満足度を維持しつつ、機能開発を推進。 方法: SLOが達成されている間は、新機能リリースを優先。 SLO未達成時は、信頼性改善にリソースを集中。 34
エラーバジェットポリシーの実行 主なアクション: i. リリース停止: エラーバジェットが枯渇した場合、新機能リリースを一時停止。 ii. リソース集中: 信頼性向上プロジェクトを優先。 例: 過負荷の解消や障害の根本原因分析。
35
活用例 1. インシデント対応の優先順位化: エラーバジェットの消費量を基に、インシデントの重要度を評価。 例: 小規模なエラーは許容。 エラーバジェットを超過する障害には即時対応。 2. リリース判断: 信頼性に影響を与えない範囲で新機能を展開。
例: 機能A: 0.01%のエラーバジェット消費。 機能B: 0.1%の消費 → リリース延期。 36
継続的な改善 過去のインシデント分析 目的: SLO未達成の原因を特定。 方法: i. インシデントレポートを収集。 ii. エラーバジェット消費率を確認。 iii.
改善策を文書化。 37
ユーザー体験を考慮した目標設定 目的: ユーザー満足度を最大化。 方法: 定期的なアンケートやフィードバックを収集。 現在のパフォーマンスとユーザー期待を比較。 38
SLOやSLIの調整と見直し 1. 現実的な目標への調整: 現在の達成率を考慮し、無理のない目標値を設定。 2. SLIの見直し: 新しい指標や測定方法を導入。 例: ユーザー体験を直接反映するクライアントサイド計測の追加。 3.
定期レビュー: 目標と実績を比較し、必要に応じて改善計画を立案。 39
運用と改善のまとめ ポイント エラーバジェットの有効活用: 信頼性と機能開発のバランスを保つ。 データに基づく調整: インシデントやユーザー体験のデータを活用。 次のステップ チームでの継続的なSLOレビュー。 改善施策の定期的な評価と実行。 40
実例と応用 具体的な事例と高度な応用例 41
6. 実例と応用 簡単な事例: API成功率のSLO設定 SLO設定例 目標: API成功率を99.9%以上に維持。 SLI例: HTTPリクエスト成功率 =
成功リクエスト数 ÷ 総リクエスト数。 エラーバジェット例: 許容される失敗: 0.1%。 総リクエスト数が1,000,000の場合 → 許容エラー数 = 1,000件/月。 42
運用例 成功シナリオ: 月間成功率: 99.95% → エラーバジェット内で新機能リリース可能。 問題シナリオ: 月間成功率: 99.7% →
リリース停止、改善に集中。 43
可用性とレイテンシに基づくエラーバジェットの使用 可用性のSLO 目標: 可用性: 99.9%以上。 SLI例: 稼働時間 ÷ 総時間。 エラーバジェット例:
月間ダウンタイム許容範囲: 約43分。 44
レイテンシのSLO 目標: 95%のリクエストが100ms以下。 SLI例: レイテンシ100ms未満のリクエスト数 ÷ 総リクエスト数。 エラーバジェット例: 許容される遅延リクエスト数: 5%。
45
高度なトピック ユーザージャーニーを考慮したSLO設計 目的: ユーザーの行動パターンに基づいたSLOを設計。 例: ECサイト: a. 商品検索 → カート追加
→ 購入完了。 b. 各ステップの成功率を個別に設定。 活用ポイント ジャーニー全体の成功率を評価。 各ステップに対する信頼性を均等化。 46
依存関係のモデル化 目的: サービス間の依存関係を考慮したSLO設計。 例: メインサービス → 外部API。 外部APIの可用性: 99.9%。 メインサービスの可用性:
外部APIを含め99.5%を目指す。 活用ポイント 依存先のサービス信頼性に応じた調整。 キャッシュやフォールバック戦略を活用。 47
リクエストの重要度分類 目的: すべてのリクエストを同等に扱わない。 クラス分類 1. 高優先度リクエスト: 例: 決済、認証。 目標: 可用性99.99%。
2. 低優先度リクエスト: 例: 通知、広告。 目標: 可用性99.9%。 48
活用ポイント 優先度ごとに異なるSLOを設定。 高優先度リクエストにリソースを集中。 49
実例と応用のまとめ ポイント 具体的な目標設定: シンプルなAPI成功率から始める。 高度な戦略: ユーザージャーニー、依存関係、リクエスト分類を考慮。 次のステップ チームで適用可能なSLOを選定。 高度なトピックを段階的に導入し、運用改善を目指す。 50
結論と次のステップ SLOの価値と未来に向けた具体的な行動 51
7. 結論と次のステップ 結論 1. SLOは信頼性とビジネス目標を両立させるツール: ユーザー体験を数値化し、具体的な目標を設定。 機能開発と信頼性向上のバランスを実現。 2. エラーバジェットは意思決定を支援する重要なリソース: 信頼性が損なわれた際のリソース配分をガイド。
リリースタイミングや優先順位の判断基準として活用。 3. 継続的改善が鍵: 初期設定を基にデータを収集。 適切な調整と改善を繰り返す。 52
次のステップ 1. チーム内でSLO設定を議論する 目的: サービスの信頼性に対する共通認識を形成。 アクション: サービスにとって重要なSLIを選定。 達成可能かつユーザー期待に合致したSLOを設定。 53
2. 具体的なアプリケーションで小規模から試行する 目的: 実運用の中でSLOの効果を確認。 アクション: 重要な1つのアプリケーションを選択。 可用性やレイテンシに関する基本的なSLOを設定。 モニタリング体制を整備。 54
3. モニタリングとフィードバックループを構築 目的: SLO運用の精度を向上。 アクション: i. データ収集: 可用性、レイテンシ、成功率などのSLIを監視。 ii. フィードバックの共有:
チーム内で定期的なレビューを実施。 iii. 改善策の実行: SLO未達成の原因を特定し、適切な対策を実施。 55
ポイント SLOとエラーバジェット: 信頼性向上の具体的な指標と意思決定の支援ツール。 小規模からの試行: 初期段階ではシンプルなSLO設定から開始。 継続的な改善: 運用データを活用し、ユーザー期待に応える。 今後のアクション チームで議論し、SLO導入を計画。 最初のプロジェクトで成功事例を作成。
継続的な見直しと改善を実施。 56