Site Reliability Engineeringとは何か?より具体的に考えてみる
結論から先にまとめると、安心安全なシステム開発・時代の変化に沿った運用ができるエンジニアリングが、つまりはSREだということ。この点、要素分解して、もっと現場に落とし込む方法について書いていきます。
SRE本でベンジャミン・トレナー・ソロスが伝えてること
SRE本の中では、SREって深いコンピュータサイエンスの知識が必要だし、ソフトウェアエンジニアリングの経験も必要だから、すんごい求められるものが多くかつ重要なんです、といった話を延々としているのだが、要するにSREってなにか?というところでいうと、可用性・レイテンシ・パフォーマンス・効率・変化への対応・監視・緊急対応・キャパシティコントロールに責任を持ち、対応していうことだということがわかる。すごく観点が多いし、実に教科書的な回答のような印象をぼくは受けました。
基本情報処理技術者試験にも載っているRASISを軸にするとわかりやすいかも
RASIS(ラシス)という用語があります。これは基本情報技術者試験でも出てくる基本的な用語です。これはなにかといいますと、
用語(英語) | 用語(日本語) | 意味 | 主な指標となるもの |
---|---|---|---|
Reliability | 信頼性 | システムが正常に動作していること | MTBF |
Availability | 可用性 | 必要に応じて、いつでもシステムを利用できること | 稼働率 |
Serviceability | 保守性 | 障害の早期発見・迅速な復旧ができること | MTTR |
Integrity | 保全性 | 誤作動がなく、システムが壊れにくいこと | 障害発生数 |
Security | 安全性 | 不正アクセスなどでシステムが壊されないこと・データの漏洩がないこと | 発生件数 |
を指します。
これに勝手な解釈を交えて自分なりのまとめ方をすると、SREとはRASISに運用という観点が追加されたものではないかと思います。
では運用の観点とはなにかと申しますと、DevOpsともよく言われる、運用フロー効率化のことです。なので、RASISに一つ、Operation(運用)という観点を付け加えるとよいのではないか、そう思いました。ROASISとかになるのかな...?(小声)
SREを現場に落とし込む
SREでぐぐると、各企業がSREをどんなふうに解釈して、どんな取り組みをしているのか、なんとなくざっくりわかります。わりと広義の意味では共通の部分が多いが、具体的な話でいうとバラバラだったりして、一体どういうことやねん?となりがちです。そこでこんな表をつくってみました。これで現場に落とせるはず。
観点 | ゴール | 自社の課題 | 打ち手 | 指標 |
---|---|---|---|---|
Reliability | システムが正常に動作していること | MTBF | ||
Availability | 必要に応じて、いつでもシステムを利用できること | 稼働率 | ||
Serviceability | 障害の早期発見・迅速な復旧ができること | MTTR | ||
Integrity | 誤作動がなく、システムが壊れにくいこと | 障害発生数 | ||
Security | 不正アクセスなどでシステムが壊されないこと・データの漏洩がないこと | 漏洩件数 | ||
Operation | (1) 頻度が高く、ストレスのないリリースができること (2) 手作業である必要がないものを自動化 | リリース数・手作業/自動の割合 |
空白になっているところを埋めていくと、うまく出来ているところ、まだまだ改善すべきところがみえてくるはず。そこにビジネス観点・長期運用観点を持ってして優先度を定めると、自然とやるべきことが決まってくるのではないでしょうか。