SREの基礎知識
はじめにSREの基礎知識を身につけましょう。全く聞いた事のない人や、聞いたことはあるけれどしっかり意味を理解していない人でもわかりやすく解説していきます。
SREとは
そもそもSREとは何のことなのでしょう。SREは、GoogleのBen Treynor Slossによって提唱された運用の形で、『Site Reliability Engineer(ing)』 の略です。Googleが提唱したエンジニアの役割のことを指します。
SREはシステムの信頼性に焦点を置き、その性質を向上させるため、設計と運用の改善方法を見つけるのが役割です。システムが十分な信頼性を得たなら、運用業務として機能の自動化や新プロダクトの構築を行い、全体的な効率化を図ります。
SREの基本概念
Google SRE ディレクターのトッド・アンダーウッド(Todd Underwood)氏は、「SREの基本概念は、運用作業の多くを自動化する権限と能力を持つエンジニアが、運用の責任を負う」という運用組織の新しい在り方にある」と提言しています。
SREは、この概念に従い、従来のエンジニアのようにシステムの『運用』だけを行ってはいません。サービスの可用性やシステムのパフォーマンス、さらには構築したプロダクトの管理も行う、非常に高度なスキルを持つ人材です。
SREとDevOpsについて理解しよう
SREの持つ役割が分かったところで、ここからは、SREとDevOpsの関係性について解説します。両者の関係性を明確にしておくことで、より効果的なシステム運用ができるようになるでしょう。
DevOpsとは
DevOps(デブオプス)とは、『Development』と『Operations』の頭文字を取った用語で、開発チームと運用チームの協力関係を表しています。
2チームが互いを尊重・信頼しあうDevOpsを行うことで、製品のビジネス価値とユーザーの利便性を高めることを目指します。
DevOpsの手法
DevOpsは、5段階の手法を用いて行います。
- 開発チームと運用チーム間でコラボレーションを行う『Reduce organizational silos』
- エラーが発生するのを前提として設計や運用を計画する『Accept failure as norma』
- 変更を小規模にして効率化する『Implement gradual change』
- ツールと自動化で仕事を効率化し、人的なミスを減らす『Leverage tooling and automation』
- 全てを測定し、計測する『Measure everything』
この手法は、具体的な行動理念というよりも、システム開発にあたる際の思想・方針ととらえてもよいでしょう。
これらの手法を用いてDevOpsを行うことで、ビジネスの価値をよりスピーディーに高めることができ、エンドユーザーに届け続けることが可能になります。
DevOpsとSREの関係性
では、DevOpsとSREの間にはどのような関係性があるのでしょうか。
Googleは「DevOpsは『思想』であり、SREは『役割』である」と提唱しています。SREはDevOpsという『思想』に基づいて権限を開発チームにも与え、運用チームとの間の壁をなくします。
端的に言えば『ソフトウェアエンジニアのSREが運用管理を行うことで、開発チームと運用チームの協力関係であるDevOpsを実現させられる』という関わり方なのです。
Google推奨の評価チェックリスト
Googleが推奨しているSRE チームの評価に役立つレベル別チェック リストを紹介します。最初から上級者にはなれませんから、段階を経てプロフェッショナルへと昇っていきましょう。
初級の評価
初級者チームは、発足したばかりの SREチームに当てはまります。始めて間もない場合は、運用に不安があったり役割を理解できなかったりと問題が多いものです。チームがシステム運用の負荷の一部を担っているか、完全ではなくとも運用手順書を準備しているか、SRE がプロジェクトの仕事を立案、実施しているかなどが評価対象となります。
中級の評価
経験豊富なチームには、中級の評価チェックリストを用いて積極的なサービスの効率的な管理を行っているかを判断します。初級レベルよりも高いスキルが求められます。
リーダーがSREプロジェクトメンバーの実績と効果を定期的に評価しているか、SREチームが開発チームと共同で年次ロードマップのような長期計画を作っているか、システムを作成して定期的なテストを用意しているかなどがチェック項目になります。
上級の評価
中級レベルをすべて把握しつつ、さらにスキルの高いチームが上級チームとなります。
SREチーム内の複数名のメンバーが、運用や障害対策というシステムエンジニア的枠組みを越え、ビジネスに対して側面に大きなプラスの影響を与えていることが前提条件となります。
上級レベルのSREチームは、複数または全社で行うなど、広い範囲に影響を及ぼします。ビジネスにとっても重要な立場を持つことになるのです。まとめ
SREは、単なるシステムエンジニアではありません。DevOpsの思想を実現するために、運用以外の面からもシステム開発を考えることができる大きな影響力を持つ高度なエンジニアです。
SREとして活躍できるようには、エンジニアとして日々スキルを磨いていくだけでなく、ツールの使い方やプロジェクトの運用についても学ぶことが必要になります。