はじめに
私は株式会社GENEROSITYのエンジニアです。
私自身SREについての知識はほぼゼロの状態です。
書籍「SREをはじめよう」を読み終え、学んだことをアウトプットのため記事にします。
本記事でまとめた内容は私の理解に基づくため、解釈における相違や内容の誤りが生じる可能性がありますのでご容赦ください。
こんな人に読んでほしい
- SREになりたい
- SREになりたて
- システム運用をしている
- システムの信頼性を確保・向上させたい
「SREをはじめよう」はどんな本?
「個人がSREになるため」また「組織がSREを導入し、発展させるため」の指針をまとめた書籍です。
本書は以下の3部構成となっています。
- Ⅰ部:SRE入門
- Ⅱ部:個人がSREをはじめるには
- Ⅲ部:組織がSREをはじめるには
SREとは
「サイトリライアビリティエンジニア」と呼ばれる職種、あるいは「サイトリライアビリティエンジニアリング」という技能、活動のことです。
著者のDavidさんはSREとは以下であると述べています。
サイトリライアビリティエンジニアリングは、組織がシステム、サービス、製品において適切なレベルの信頼性を持続的に達成できるよう支援することを目的とした工学分野である。
学び
本書に記載の内容をもとに、得られた学びを私なりの理解でまとめます。
SREをきちんと理解するためには「信頼性」「適切」「持続的」の単語を理解する
信頼性
どれだけ高級な(優れた機能を持ち、大金を費やした)システムでも、顧客がそのシステムを使いたい時に動いていなければ損失を被る可能性がある。
適切
存先が100%信頼できるものではない可能性があるため、SREはシステムにおける適切な信頼性レベルを決定し、伝達し、それに向けて努力することを支援する。
体的には、サービスレベル指標(SLI) / サービスレベル目標(SLO)のようなプラクティスを行う。
持続的
運用を成功させるためには、持続可能である必要がある。
SREの心構え
顧客重視の姿勢であれ
顧客が何をどのように受け止めるか、システムが顧客にどのように答えているのか を考える。
信頼性はコンポーネントの観点ではなく、顧客の観点から計測される。
信頼性とは共同作業である
信頼とはシステムに関わる同僚や顧客など様々な人たちとの間に成り立つ。
失敗から学ぶ
エラーは常にシステムの中に存在するものである。
信頼性を向上するためにはシステムを理解する必要があり、システムがどのような時に失敗するのかについて理解するためには、エラーを「表面化」する必要がある。
SREの文化
信頼性を確保するためのSREの活動を文化として定着させ、これをモデル化することで組織(SREチームの外枠)を正しい方向(目標とする場所)へ導くことができる。
SREとして※トイル を排除するなどの活動をする→SREの活動を組織が幸せになるために必要な活動であると認識する→SREチーム以外のメンバーもSREの活動をするようになる→組織全体が正しい方向へ進み始める。
私は「SREを起点として組織全員がSRE活動を行う文化の定着が必要である」と理解しました。
トイルとは
価値を生まないが運用において避けられない、繰り返し行われる手作業や、手間のかかるメンテナンス業務を指す
SREになるために
コーディングの知識
以下の理由からコーディングの知識が必要となる。
(1)システムがどのように作られていて、それがどのような場合に故障する可能性があるかを理解するため
(2)システムの信頼性向上のため、コードレベルの変更を提案したり実行したりするため
システムの基礎知識
より良いシステムを構築するために、基本的なシステムとその仕組み(OS、ネットワーク、プロトコルなど)を理解する。
SREをどこから始めるか
信頼性を抱える組織がSREを開始するために、Dickersonの信頼性の階層構造が明確なマップとなる。
これは階層の一番下(1)から始めて、下の階層が強固になった時点で上(2~6)の階層に進むというもの。
各階層の概要を以下に示します。
階層 | 概要 | 内容 |
---|---|---|
1 | 監視/オブザーバビリティ | 状況が良くなっているのか、それとも悪くなっているのかを監視する |
2 | インシデントレスポンス | 障害がどのように発生するのか、それをどのように対処するのかを明確化する |
3 | インシデント後のレビュー | 失敗から学び、次に活かす |
4 | テスト/リリース | 問題が本番環境へ到達する前に、その問題の発見を自動化する |
5 | キャパシティ/スケール | 変化や障害に適応するため事前に備える |
6 | 開発/UX | 信頼性の高いシステムをつくるために検討する |
Dickersonの信頼性の階層構造のみでは十分でない
これがSREのすべてであるように見えるが、信頼性を構築するために必要な活動を独自の視点で見つけ、実施することが大切
SREを組織に組み込む
まずは実験的にSREの実践(SLI/SLOの定義、計測、またインシデント後のレビューなど)を試してみること。
SREを組織に統合するための適切なモデル(どのような規模で、どのような関わり方をするか)を見つける。また、それは良い結果が出るまで試行を繰り返す必要がある。
フィードバックループを構築し、改善活動を繰り返す。
フィードバックループとは
システムやプロセスの出力を再び入力として戻し、結果を改善・調整する循環プロセス
さいごに
「SREをはじめよう」はSREとは何か、から個人〜組織へSREを普及するための考え方と知識を学ぶことができます。
今回私は「SREとは信頼性の改善・維持活動のきっかけを作り、活動を通して組織全体で同じ方向へ進むために改善を繰り返すことが重要である」と理解しました。
今後より多くのことを学んでまた読み返したいと思います。
本記事に記載した以外にもたくさんの学びがあると思いますので、ぜひ皆さんも読んでみてください。
ここまで読んでくださりありがとうございました!