[The SLO Book — Alex Hidalgo](https://www.alex-hidalgo.com/the-slo-book) > サービスレベル目標([[SLO]])の重要性はますます高まっていますが、それをどのように実施するかについての情報は明らかに不足しています。実用的なアドバイスは、チームがすでにインフラ、ツール、文化を備えていることを前提としています。本書では、SLOのエキスパートであるAlex Hidalgoが、SLOの文化を一から構築する方法を説明しています。 > 本書は、SLOをベースとした信頼性アプローチに必要な文化とツールを構築するための入門書および日常的な参考書として最適であり、高度なSLOおよびサービスレベルインジケータ(SLI)技術の詳細な分析を提供します。SLOベースのアプローチを最大限に活用するための数学的モデルと統計的知識を備え、組織のすべての部門の賛同を得て、意味のあるSLIを測定できるシステムを構築する方法を学ぶことができます。 - ユーザーの視点からサービスの信頼性を測定するためのSLIの定義 - 統計的、確率的な分析方法を含む、適切なSLOターゲットの選択 - エラーバジェットを利用して、チーム内での議論を深め、データに基づいた意思決定を行う - SLOベースのアプローチに必要なサポートツールとリソースの構築 - SLOデータを使用して、リーダーシップとユーザーに意味のあるレポートを提示する。 Cheatsheet: [The SLO Book Cheat Sheet - Nobl9](https://nobl9.com/resources/the-slo-book-cheatsheet/) ## Table of Contents ### Part I. SLO development 1. The Reliability Stack 2. How to Think About Reliability 技術業界には、特定の用語やフレーズ、哲学に夢中になり、使いすぎて意味のないマーケティングの専門用語になってしまう癖があります。最近の有名な例としては、DevOpsという用語があります。これは、物事を成し遂げるためのあるアプローチを表現するために作られた造語です。DevOpsはもともと、開発者のリリースサイクルを短縮し、迅速なフィードバックループを提供するための哲学として策定されましたが、今日では、職種として使用されたり、ベンダーツールのカテゴリに割り当てられることが多くなっています。もう1つの例は、サイト信頼性エンジニアリングという言葉、そして、信頼性という言葉そのものです。 信頼性というと、技術の世界では可用性だけを意味することがあまりにも多いのです。アベイラビリティと信頼性は密接に関係していますが、アベイラビリティはすべてを語るものではありません。信頼性、堅牢性、回復力といった言葉は、残念ながら、コンピュータ・サービスを語る際に本来の意味から外れてしまっています。アップタイムやダウンタイムといった一般的な用語は、この問題をさらに複雑にしています。というのは、"Is it up? "という言葉は、必ずしも「バイナリが動いているか」という意味ではないことが多いからだ。 実際のところ、これらのことはどれも新しいことではありません。信頼性エンジニアリングという学問は、新しい発明やアイデアではありません。SLO は技術系に多いアプローチですが、システムの信頼性を考え、測定し、事前に指示するためのシ ステムやモデルを構築することは、非常に長い間、多くの工学分野にわたって存在してきた実践で す。システムの信頼性とは、そのシステムがユーザの要求通りに動作していることを意味し、信頼性工学の原則は、コンピュータシステムにおいても、これを実現する方法を考えるのに役立ちます。 本章では、信頼性工学の概念を紹介し、身近な例を挙げながら、なぜ完璧であることが不可能なのか (あるいは必要でない) について説明します。この理解を深めることで、サービスレベル目標という言葉が、他の多くの技術用語と同じ運命をたどることを防ぐことができればと願っています。 [[信頼性工学]]という学問は、何十年も前から存在しています。これは、複雑なシステムを適切に構築する方法を研究するシステムエンジニアリングのサブセットです(それ自体も数十年前から存在しています)。複雑系という言葉は、コンピュータシステム、特にマイクロサービスベースのアーキテクチャについて議論する際に聞いたことがあるかもしれません。しかし、もしそのような文脈でしか聞いたことがないのであれば、それは技術業界が、より明確な意味と歴史を持つものを部分的に採用したりオーバーロードしたりした、もうひとつの例に過ぎません。複雑なシステムは、あなたが住んでいる建物や道路を走る車から、政治や生態系の環境に至るまで、どこにでもあります。実際、複雑系の解析の大部分はこのような場所で行われてきました。 信頼性工学のほかにも、安全工学、レジリエンス工学、要求工学など、関連する学問分野は数多くあり、聞いたことがあるかもしれません。安全工学、レジリエンス工学、要求工学など、どれも技術界にしかないものです。これらはすべて、現代のコンピューター・システムよりも古くから研究されているものです。 信頼性工学や安全工学のようなものがあるからこそ、私たちは橋を渡り、足元から崩れないと確信できるのですから、このことに感謝すべきなのです。ソフトウェアを扱っている人なら、これらのことを知らないというつもりはありません。 信頼性エンジニアリングとその仲間たちは、研究された学問分野ですが、毎回同じアプローチをする必要はありません。このような分野から学べること、採用できる概念はありますが、「信頼性の高いエンジニア」になるために従うべき具体的な手順は1つではありません。なぜなら、複雑なシステムは単に複雑なだけでなく、一般的にユニークだからです。橋梁であれ、国際宇宙ステーションであれ、コンピュータサービスであれ、信頼できる複雑なシステムをどのように構築するかは、そのシステム自体の詳細によって決まるのです。 SLO ベースの信頼性アプローチで得られるのは、システムの信頼性を高めるための意思決 定に使用するための追加データです。本書で取り上げるコンセプトは、複雑なシステムの信頼性を高め、システムを回復力、堅牢性、安全 性のあるものにするために必要なものだけではありません。SLO は、システムを改善するためのより良いアプローチをとるための議論や意思決定に役立つデータを収集 するための方法です。SLO は、データ駆動型の意思決定を促進し、システム設計者がより効果的に作業できるよう支援する。 結局のところ、信頼性を確保できるかどうかは、システムやサーバーが実際にどのようなもので、何をする必要があるのかに大きく依存します。信頼性を向上させるために実際に行うべき変更は、すべてのシステムで同じであるとは限りませんが、信頼性について正しい方法で考えているかどうかは、おそらく同じです。コンピュータシステムにはさまざまなサービスがありますが、「このサービスは必要なことを行っているか」という観点で信頼性を考えることは、全般的に有効なアプローチです。サービスの信頼性に SLO ベースのアプローチを使用することは、ソフトウェア工学を真の工学分野とするための一歩にすぎません。 サービスの信頼性の高いパフォーマンスは、多くの人々にとって多くのことを意味します。しかし、ユーザーの満足を得ることが目的であれば、優れたサービスパフォーマンスには、ユーザーが必要とすることをサービスが行うことが含まれなければなりません。しかし、ユーザーが必要とすることをすべて把握することは、必ずしも容易ではありません。さらに、ユーザーが必要とすることや期待することは、時間とともに変化し、多くの場合、予測不可能な方法で変化します。 3. Developing Meaningful Service Level Indicators 4. Choosing Good Service Level Objectives 5. How to Use Error Budgets ### Part Ⅱ. SLO Implementation 6. Getting Buy-In 7. Measuring SLIs and SLOs 8. SLO Monitoring and Alerting 9. Probability and Statistics for SLIs and SLOs 10. Architecting for Reliability 11. Data Reliability 12. A Worked Example ### Part Ⅲ. SLO Culture 13. Building an SLO Culture 14. SLO Evolution 15. Discoverable and Understandable SLOs 16. SLO Advocacy 17. Reliability Reporting ### Appendix A. SLO Definition Template ### Appendix B. Proofs for Chapter 9