5分でわかる「Google提唱のSREって結局こういうコト」
Webサイトのシステム運用や、サービス開発に伴うプログラムや各種機能改善などに携わったことがある方なら、「SRE」という言葉を耳にしたことがあるでしょう。
Site Reliability Engineeringは、Googleが提唱したサイト運用における考え方で、2015年から大企業のサイトを管理するエンジニアを中心に浸透していきました。
SREは、具体的なマニュアルや手法そのものではなく、PDCAサイクルのような概念と機能を言語化しているので、さまざまな解釈がなされています。
なかには、「SREとはどんな人?」などと、新たな職種のように伝えている記事もあり、「何となくイメージはあるんだけど、どうすればいいかわからない」と思っている人も多いのではないでしょうか。
SREがベースに置いているのは、「サービスレベル目標をもって、達成に向かうこと」「システム障害などのトラブルをネガティブに捉えず可視化し、履歴を残して改善を進めること」「本番環境におけるさまざまなトラブルを管理できる体制があること」。
めざす姿は、「サービスの価値・機能の向上」「信頼性の向上」「自動化などによる効率化・省力化」を並行して実現することです。
リライアビリティ、すなわちシステム運用体制における「信頼性」を担保するためには、ヒト・モノ・カネをコントロールできる組織と、運用に関する明確な手順やマニュアルがなければなりません。
新サービス・新機能のリリースやセットアップのプロセスが明文化され、トラブルが生じた際の対応方法について、共有・検証できてなければなりません。
2019年1月にGoogleが日本語訳を配信した「SREチームの評価に役立つレベル別チェックリスト」によると、ここまでが初級チームがクリアすべき条件です。
さらに上をめざすためには、SREチームが自らの実績や導入効果を計測・評価し、サービスレベルの目標をアップデートしていくことが求められます。
一般的には、機能が増えてシステムの規模が大きくなれば、運用は複雑化して手間がかかるようになり、トラブルが発生するリスクは高まります。
中級レベルのチームは、システムを統合的に管理し、自動化・省力化を行いながら、トラブル対応のプロセス整備や定期的なテストなどを実施できる体制を構築しなければなりません。
簡単にいえば、「初級チームよりもマネジメントのクオリティが高まっている状態」をめざすことになります。
運用の効率が高まり、トラブルに対して迅速・的確に対応できるようになったチームは、「ビジネスへの貢献度UP」「多様なサービスを束ねて改善する手法の確立」「定期的かつ汎用性の高い業務や、トラブル対応のためのテスト等のさらなる自動化推進」を実現させる必要があります。
開発チームとの目標共有と連携や、信頼性担保と効率化を見据えた長期的なロードマップの設計は必須条件です。
Googleのレベルチェックリストを見ていると、「信頼性が高いエンジニアリング」を構築するためには、風通しのいい組織風土やフラットな業務評価、人間の都合に左右されない意志決定システムが重要です。
今の体制を見渡したとき、自分たちはどのレベルにいて、何が足りないと感じますか?最初の1歩は、現状と課題を適切に把握し、サービスレベル目標を明確にすることです。