YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

「SLO サービスレベル目標」という本が出版されました #slobook

はじめに

こんにちは、Google Cloudのオブザーバビリティ担当者です。このたび私が翻訳ならびに監修として関わった「SLO サービスレベル目標」という本がオライリー・ジャパン社より出版されました。本日より書店ならびに各社オンラインストアでご購入いただけます。

電子書籍版についてはオライリー・ジャパンのサイトよりePub、PDFの各種フォーマットにてご購入いただけます。

www.oreilly.co.jp

SLOがなぜ重要なのか

まず本書の意義について解説する前に、サービスレベル目標(Service Level Objective; SLO)がなぜ重要なのかについて改めてお伝えしたいと思います。

サイトリライアビリティエンジニアリング(SRE)において、その手法の名称にもあるように、「ユーザーの信頼性」というのは、その原理に根ざす重要な考え方です。システム運営に関わる人間および会計のリソースは有限であるため、サービスの品質もどこかで妥協しなければいけません。しかしその妥協がユーザーがシステムに期待する品質*1未満ではユーザーはサービスを利用してくれなくなってしまいます。そのためユーザーの満足度との相関が強い指標(サービスレベル指標)を発見し、その目標値(サービスレベル目標)を決める、というのがサービスレベル目標の考え方です。この目標は内部的なものであり、ユーザーとの契約ではないので、SLAと違い何度でも自由に見直し、より適切な値を探していくことになります*2

これは、システム運用の観点から見たビジネス的に重要な指標にもなり得るもので、SREというものが広く認知される以前から、データ駆動型経営をされている企業では名前こそ違えど、この観点から目標値を決めて運用してきたところもあるでしょう*3。SREではこれらの概念に対してSLI、SLO、さらにエラーバジェットやバーンレートといった名称と定義を与えて、さらにそれを継続的に運用していくという枠組みを作ったことに価値があると思います。一方で、こうした概念がSREとともになければならないかというとそんなことはありません。肝心なのは「自分たちが行っていることがSREかどうか」ではなく「自分たちのサービスがユーザーを満足させているのか」どうかであり、その文脈においてSLOという概念は各ビジネス指標のKPIと同様にいかなるビジネスにおいても考慮されるべきであるはずです。特にサービスの収益がシステムに依存している度合いが強ければ強いほど、このSLOという指標はビジネスにインパクトを与えているはずです。

2020年代において、たいていのビジネスはITシステムに依存していますから、このSLOという概念は会社組織の中で役職問わず理解されるべきものであると、私は考えています。「SLOをもっと使っていきましょう」という話に関しては次の文章でもう少し掘り下げて書きましたので、ご興味あればあわせてご一読ください。

zenn.dev

「SLO サービスレベル目標」はどのような本か

昨日SLO本出版イベントを開催いただきまして、書籍の内容もお話しました。お時間ある方はこちらもご覧ください。

www.youtube.com

本書はAlex Hidalgoが主著者として執筆し、また多くの共著者の寄稿を編集した "Implementing Service Level Objectives" という書籍の日本語訳版です。原著は2020年8月に出版されました。

本書は、同じくオライリー・ジャパンより出版されているSRE関連書籍のシリーズを補完する書籍だと思います。Google SREシリーズや「SREの探求」がSREの各種プラクティスを幅広くカバーしている総論であるのに対して、本書はタイトルにもあるとおり、サービスレベル目標(SLO)の実装と導入のみに焦点を当てて、その概念の説明から実装方法、さらに背景となる統計や確率の基礎知識、SLOに基づく運用を根付かせるための方法論や文化の構築など、SLOに関する各論を掘り下げて解説しています。

またその意味では、やはり私が翻訳に関わった書籍「オブザーバビリティ・エンジニアリング」にも近いですが、こちらはインシデントの解決に関連したオブザーバビリティの技術要件などに多くの焦点があたっている一方で、「SLO サービスレベル目標」はより前段階の開発と運用の判断を決定する部分に焦点を当てています。

SREを導入しようとしている、あるいはSREの導入を始めたが実践に苦労しているという人々と会話すると、やはり最も難しいと言われるのが、SLIの発見とSLOの設定です。そこから更にエラーバジェットを管理して、エラーバジェットのバーンレートを元にしたアラートで運用を行うレベルまでできているという組織はまだまだ多くありません。この理由の一つとしては、SLOという概念が難しい、ということではなく、その仕組みは単純だけれども、実際に機能させようとすると巷に手引きが少なく、各々が手探りで行っている部分が多いからだと思います。先の節でも書いたように、SLOはそれ単独でも十分に存在しうる重要な概念であるにも関わらず、です。また他にも改善を継続的に行うことに慣れるまでに時間がかかるということもあるかもしれません。

そんな中、私が本書が出版されたという知らせを目にしたとき、「Go言語による並行処理」を初めて読んだとき以上に興奮しました。本書の目次と内容を大まかに読んで、その興奮は本書は絶対に日本語でも出版されるべき書籍であるという確信へと変わりました。SREの実践において、最も重要だと思われるSLOに基づく運用を行うための手引きとして、これほどまとまっている資料は2023年現在、本書以外ありません。SRE本を読んだり、多くの企業がSREを導入しているという情報を耳にして、SREに興味を持ってSLOの導入を始めようと思っている方々、またSLOの導入から次の一歩を踏み出したいと思っている方々には必携の一冊であると思います。本書はSRE本を読んだことがなくても通して読めるようにできていますので、SREのプラクティスのすべてを実践するわけでなくても、非常に有益な内容となっています。また、先にも述べたようにSLO自体はSREとは離れて、単独で実践しうるものです。変化の早い時代において、ビジネス指標の1つとしてSLOを活用するためにも、有意義な一冊となっています。

本書は3部構成となっています。第1部はSLOの開発です。SLI、SLO、エラーバジェットといった概念を一から説明しています。初めてこれらの概念に触れる方は必ず第1部の章は通して読んでください。もしSRE本等でとこれらの概念をすでに理解している人であれば読み飛ばせるかもしれませんが、そのような場合でも念の為第1部は通して読まれることをお勧めします。特にSLOやエラーバジェットの計算に関する具体例を見ることで、自分の理解が合っているかを確認しながら振り返りができます。

第2部はSLOの実装です。第2部は第1部の理論を実際に導入する上で必要なプロセスに触れています。SLOを導入することへの各部署からの同意の獲得、SLOを支えるデータベースの仕組み、アラートの設計方法、SLIやSLOの計算のための数学的基礎知識、SLIとして使える指標、具体例を通したSLO設計の流れの確認、など、より実践的な内容が数多く紹介されています。特に9章は数学や統計の基礎知識を前提としていて、一瞥しただけで拒否反応が出てしまう人もいるかもしれませんが、安心してください。9章でも説明されているように、すべてがわからなくてもまったく問題ありません。個人的にはこの章は付録Bと同様に付録にしても良かったのではないかと思います。しかし、SLOの定義を厳密に行なおうと思えば、より細かな定義ができる、ということだけでも感じていただけたらと思います。

第3部はSLOに基づいた運用手法が実際に回り始めた後、それを維持し持続するために必要な内容が多く紹介されています。ここに書かれている内容は第1部と第2部を読み、実践を進めていく中でより理解が深まることでしょう。現在すでにSLOに基づいた運用を行っている方々には、非常に親しみのある内容になっていると思います。社内でより広くSLOを普及させるためのヒントになるような情報が多くあります。

関連書籍との関係性について

「SRE サイトリライアビリティエンジニアリング」と「サイトリライアビリティワークブック」

SREに関心を寄せる多くの方々がお持ちであろう書籍が上記の2冊です。前者は網羅的である反面、個々のSREのプラクティスに関する説明は個別のケースの説明にとどまるようなものであったように思われます。後者は書籍名が「ワークブック」とあるように、演習形式で代表的なプラクティスを少し掘り下げるもので、実際にSLOに関しては第2章〜第5章で解説されていますが、様々な場面でSLOを設定するための詳細、というよりは、SLOを活用するための一連の流れを体験するための入門という趣が強いです。

その観点で、「SLO サービスレベル目標」はSLOを中心として、理論的な側面、実践的な側面、文化的な側面など、SLOの導入と運用に関連するあらゆるトピックを網羅的に扱っています。実際に主著者であるAlexは、上記2冊のSLO関連の章の著者でもあり、「SLO サービスレベル目標」はそのテーマを掘り下げるために別途執筆されたものでした。

「オブザーバビリティ・エンジニアリング」

こちらは今年1月末に出版されたばかりの書籍ですが、こちらは書籍のタイトル通り「オブザーバビリティ」を自システム内に備えるための書籍です。本書の第12章と第13章においてSLOとの関連性を解説していますが、これはオブザーバビリティからの観点での解説です。こちらがオブザーバビリティをシステムに備えるための実装に関する解説を行っているのに対して、「SLO サービスレベル目標」ではシステムが計装すべきテレメトリーシグナルの決定に影響を与えるSLOの設定や、その可視化やそれに基づいたアラート設定に関する解説をしています。

また「SLO サービスレベル目標」が、どちらかと言うとユーザーの信頼性を維持するための施策(すなわち、インシデントが起きる前の施策)に重点を置いているのに対して、「オブザーバビリティ・エンジニアリング」では、インシデントも含めて、必要なときにシステム内部の必要なテレメトリーデータを分析できることを主眼としています。

したがって「オブザーバビリティ・エンジニアリング」と「SLO サービスレベル目標」はかなり相互補完的な書籍であると考えています。

「入門 監視」

「入門 監視」の原著 "Practical Monitoring" は2017年11月に発行された書籍です。本書は、まだSREがそこまで広く普及していなかった時期に、従来のシステム監視の視点から見た、現代的な監視に関して著した良書だと思います。本書では直接はSLOという言葉を使って解説はしていませんが、関連する話題はたくさん出てきています。

先にも述べましたが、SLOというのはSREを実践している人だけのものではありません。「入門 監視」では「ビジネスKPI」というビジネス側の目標値を監視する話がありますが、現代のサービスにおいてはシステム側のKPIもビジネスに十分影響を及ぼしていると思います。両者でしっかりと目標値を持った監視ができれば、より充実したシステム運用ができると思います。その観点で、本書と「SLO サービスレベル目標」を読むと、従来のシステム監視を行っているシステムにおいてもSLOが十分に有用であることが理解いただけると思います。

「入門 監視」の発刊当初の私の書評に関してはこちらにあります。 ymotongpoo.hatenablog.com

謝辞

本書のまえがきでも触れましたが、あらためて編集者の編集者のオライリージャパンの髙恵子さんに感謝いたします。そもそも本書の翻訳の企画は私から髙さんへの持ち込みで、当初は別企画が走ろうとしていたところを無理を言ってこちらに変えさせていただきました。また今回は当初は監訳のみという予定だったのですが、翻訳の品質に納得が行かなかったことやプロセスに問題があると感じ、私からはかなり要望を出す結果となりましたが、できる限りのことをしていただきました。諸々とストレートに意見したりと、髙さんには苦労をおかけしたことも多々ありました。また思わぬ予定変更でスケジュールがずれたりとトラブルもあり、結果2021年2月から始まった企画が、2年半近くかかりましたが、その分思い出深い企画となりました。*4 またpyspaの方々を始めとするオンラインコミュニティの皆様には、翻訳修正に苦労する中、多くの励ましをいただきました。一人でも黙々と作業を行う中でも、チャットであってもねぎらいの言葉をかけてもらえるだけで慰めとなりました。みなさま本当にありがとうございました。

おわりに

本書にも書かれている通り、本書の内容は1つのモデルでしかありません。本書を読めばすべてが解決する銀の弾丸ではありませんが、なにもない場所から始めるよりも遥かに優れた出発点になることは間違いないでしょう。本書のいたるところで繰り返し述べているように、本書を元に、組織内で多くの議論を交わしながら、SLOの導入を行う企業が少しでも増えることを願っています。

また本書に関するイベントを7/25にForkwellさんに開催いただきます。オンライン開催ですので、お時間あればご参加ください。

forkwell.connpass.com

*1:ここはさらに注意して考える必要があって、ユーザーの期待値にも幅があり、中には非常に厳しい要求をする人もいます。自分たちのビジネスがユーザーに価値を提供するために必要な品質、と考えるほうが良いかもしれません。

*2:もちろんSLOを公開しても構いません。実際にどの程度のサービスレベルを提供しようと考えているかの透明性を高めることになります。

*3:SREの語源にもなったような信頼性工学、あるいは安全工学に関連する領域では、たとえば工場における生産効率等に関する多くの指標が提示されています。

*4:この紆余曲折に関しては、要望があればどこかに記録を残そうと思います。