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) 手作業である必要がないものを自動化 リリース数・手作業/自動の割合

空白になっているところを埋めていくと、うまく出来ているところ、まだまだ改善すべきところがみえてくるはず。そこにビジネス観点・長期運用観点を持ってして優先度を定めると、自然とやるべきことが決まってくるのではないでしょうか。