SRE(サイト信頼性エンジニアリング)とは?基本的な知識や実施ステップなどを分かりやすく解説!

SRE(サイト信頼性エンジニアリング)とは?基本的な知識や実施ステップなどを分かりやすく解説!

SRE技術ブログ

SRE(サイト信頼性エンジニアリング)とは?基本的な知識や実施ステップなどを分かりやすく解説!

SRE ( Site Reliability Engineering )という言葉をご存知でしょうか? Google が提唱しているシステム管理およびサービス運用のアプローチであり、企業が SRE を実践することで、様々なメリットを享受できます。

本記事では、 SRE の基本的な知識やメリットなどに加えて、具体的な実施ステップを 5 段階に分けてわかりやすく解説します。 SRE について理解を深めたい方は、ぜひ最後までご覧ください。

まずは、 SRE の基本的な内容についてご説明します。記事の前提知識として、確実に理解しておきましょう。

概要

SRE は「 Site Reliability Engineering 」の略であり、 Google が提唱しているシステム管理・サービス運用に対するアプローチ手法を意味する言葉です。 システムにおける「信頼性」を重要機能の一つとして位置付けている点が SRE の大きな特徴となっています。

また、 SRE では、

  • SLI ( Service Level Indicator :サービスレベル指標)
  • SLO ( Service Level Objective :サービスレベル目標)

という 2 つの指標が使われることが一般的です。

SLI はサービス品質を測るために用いられる指標であり、サーバーの稼働率などが代表例として挙げられます。一方、 SLO は SLI で計測される値の目標値を意味しており、仮に SLI がサーバー稼働率であれば、 SLO は「サーバーの月間稼働率 99.9% 」のように表現されます。

SRE では、これらの指標をもとにしてシステムの信頼性を判断します。世界の最先端を走る Google が提唱している考え方ということもあり、多くの企業がシステム開発の現場で SRE を採用しています。

目的(考え方が生まれた背景)

SRE の主な目的としては、

  • システムの信頼性向上
  • ダウンタイムの最小化
  • スケーラビリティの確保

などが該当します。

従来のシステム開発においては、開発担当者と運用担当者が別々に稼働していることが一般的でした。しかし、開発担当者は新機能の追加を優先したい一方で、運用担当者はシステムの安定稼働を優先するなど、両者の考え方の違いによって、担当者間で衝突が発生することも珍しくありませんでした。

そして、このような課題を解決するために生み出されたのが SRE という考え方です。 SRE は開発担当者と運用担当者の密な連携が前提となっており、開発・運用のバランスを適切にコントロールすることで、担当者間の衝突をなくし、システム運用の改善に繋げます。

近年、企業が保有するデータ量は爆発的に増加しており、その種類も多様化しています。このような状況下においては、システムの信頼性は益々重要な指標の一つとなっているため、企業がシステムの開発・運用について検討する際には、 SRE が有効な考え方の一つになると言えるでしょう。

DevOps との違い

SRE と混同しやすい言葉として「 DevOps 」が挙げられます。 DevOps は「開発( Development )」と「運用( Operations )」を組み合わせた言葉であり、開発担当者と運用担当者が協力し、開発作業を円滑化させるための開発手法を意味しています。

開発担当者と運用担当者が連携する点は、 SRE と DevOps の両者に共通していますが、 SRE は DevOps を実践するための具体的なアプローチであると定義されています。そのため、両者は明確に異なるものであり、 DevOps という概念を実現するための手段が SRE だとご理解ください。

企業が SRE を実践することで、どのような恩恵を受けられるのでしょうか?
本章では、 SRE の代表的なメリットについて解説します。

業務の効率化

SRE を実践することで、開発担当者と運用担当者が連携し、同じベクトルで仕事できるようになります。
これにより、各部署が共通認識を持ってプロジェクトを進められるようになるため、業務の効率化に直結します。このように、自社の生産性向上を実現できる点は、 SRE の大きなメリットの一つだと言えるでしょう。

パフォーマンスの向上

SRE では、開発担当者と運用担当者のそれぞれの思いや現場の状況を加味しながら、両者にとって最適なシステム開発を検討します。従来のシステム開発では、一方の都合だけを考慮してシステムを構築することも珍しくなく、開発と運用が片手落ちになってしまうケースもありましたが、 SRE であれば両者の意見を尊重しつつ、パフォーマンスの高いシステム開発を実現できます。

安定的な運用管理の実現

SRE においては、システムの信頼性が重要な要素であり、どのような状況下でもシステムが安定稼働できるような環境の構築を目指します。このように、システムの開発だけではなく、開発後の運用までを視野に入れて考えるため、 SRE はシステムの安定的な運用管理にも繋がります。自社のビジネス成長や事業継続を実現するうえでも、 SRE は有効な手段の一つであると言えるでしょう。

自社で SRE を実践する際には、具体的なアクションを起こす前に意識すべきことがあります。
本章では、 SRE に取り組む前に考えるべき内容について、代表的なものを 3 つご説明します。

SRE 導入のメリットに関する期待値コントロールを行う

SRE に取り組む際には、 SRE を導入することで得られるメリットについて、事前に関係者の期待値コントロールを行う必要があります。そのためには、関係者に対して説明会を行い、 SRE 導入でどのような恩恵を得られるのか、どのような課題を解決できるのかなど、 SRE 導入後のイメージを具体化することが大切です。これにより、 SRE 実践時に周囲からの協力を得られるようになり、プロジェクトを円滑に進めることが可能になります。

Google 社の SRE との差分を意識する

前述した通り、 SRE は元々 Google 社によって生み出された考え方です。しかし、自社で SRE に取り組む場合、 Google の SRE をすべて鵜呑みにするのではなく、自社の状況やシステム開発のフェーズなどに合わせて、 SRE のあるべき姿を常に検討し、継続的に改善を行うことが大切です。このように、 Google 社の SRE との差分を意識し、固定観念にとらわれずにプロジェクトを進めてください。

必要なスキルセット・環境が揃っているかを確認する

SRE では、 SLI や SLO などの指標を用いてシステムの信頼性を計測します。そのため、システムの開発・運用に関する知見や各種作業を効率化するための IT ツールなど、一定のスキルセットや業務環境が整っていることが求められます。仮に、これらの要素が揃っていない場合は、調整が可能かどうかを慎重に検討し、事前準備ができてから具体的なアクションに移すことをおすすめします。

効率的な SRE を実現するためには、適切な手順でアクションを進めていく必要があります。
本章では、 SRE の実施ステップを 5 つにわけて分かりやすく解説しますので、ぜひ自社で実践する際の参考にしてください。

Step.1 目的の明確化

まずは、目的を明確化することが SRE 実現に向けた第一歩です。自社の現状課題を整理し、目指すべき理想の姿を具体的にイメージして、 SRE によって何を実現したいのかを明確にしてください。目的が不明瞭な場合、プロジェクトの方向性が途中でブレてしまい、 SRE を効率的に進めることは難しいため、時間をかけて慎重に検討することが大切です。

Step.2 SRE チームの結成

目的を明確化したら、次は SRE を推進するためのプロジェクトチームを結成します。自社の SRE を実現するために、どのようなスキルを持った人材が何名必要なのか、事前にシミュレーションを行い、最適なチーム編成を検討してください。なお、 SRE チームが通常業務と並行稼働する場合、日々の仕事に忙殺されてプロジェクトが進まない可能性があるため、 SRE が軌道に乗るまでは SRE だけを担当する専門チームとして運用することをおすすめします。

関連記事:効率的な SRE を実現!成果を出すための SRE のチーム構築方法とは?

Step.3 IT ツールの導入

SRE を効率的に進めるためには、 IT ツールの導入が有効な選択肢になります。

以下、 SRE に役立つ IT ツール一覧を表にまとめます。

ツール名ツールの種類概要
テラフォーム( Teraform )構成管理ツールシステムインフラをコードで管理・構築できる。
クーベネティス( Kubernetes )コンテナオーケストレーションツールコンテナの運用管理および自動化を実現できる。
ドッカー( Docker )コンテナオーケストレーションツールコンテナの仮想化により、アプリケーションを開発・実行するための環境を構築できる。
データドック( Datadog )監視・分析ツールシステムにおける異常・エラーを検知できる。
ページャーデューティー( PagerDuty )インシデント管理ツールシステムにおけるインシデントの発生状況・対応状況をリアルタイムに可視化できる。
セントリー( Sentry )エラートラッキングツールアプリケーション単位で異常・エラーを検知できる。
エラスティック スタック( Elastic Stack )ログ管理ツール複数ソースからログデータを取得し、リアルタイムに検索・分析・可視化できる。

などが挙げられます。

これらのツールを活用することで、インフラ管理やアプリケーションの開発環境の構築、システムエラーの早期発見など、システム開発における様々なプロセスを効率化できます。 IT ツールの導入は一定のコストを伴いますが、必要経費として捉えて前向きに導入を検討することが大切です。

関連記事

テラフォーム( Terraform )とは?特徴やメリット、活用する際のポイントを一挙に解説!

Step.4 SLI ・ SLO の決定

IT ツールを導入した後は、 SRE を実践する際の指標となる SLI と SLO を決定します。自社の課題や目指すべきゴールを踏まえて、どのような指標をもとに SRE を進めていくのかを検討してください。この時、 SLO に対する進捗状況を見える化することで、プロジェクトを定点観測できるようになり、常に現在地を確認しながらプロジェクトを進めることが可能になります。

Step.5 課題発見と改善アクションの実行

SLI ・ SLO を決定し、 SRE を実践するための準備が整ったら、チーム内で役割分担を行い、プロジェクトを推進してください。そして、 SRE の実践を通して発見した自社課題をもとに、具体的な改善アクションを検討・実行します。

また、一連のプロセスが終わった後は、経営層や自社社員に向けて、 SRE の実施結果をフィードバックすることも大切です。これにより、 SRE の効果やメリットを具体的に理解してもらうことができ、次の SRE を円滑に進めるための業務環境の構築や社内文化の醸成に繋がります。

SRE を成功へ導くためには、意識すべき点がいくつか存在します。本章では、 SRE を成功させるためのポイントを 3 つご紹介します。

SRE の実践自体が目的化しないように注意する

SRE はそれ自体が目的ではなく、何かを達成するための手段に過ぎません。そのため、 SRE の実践が目的化しないように注意することが大切です。 SRE の目的を明確化し、具体的な SLI ・ SLO を事前に設計していれば、プロジェクトチーム全員が共通認識を持って同じゴールを目指せるため、この観点からも SLI ・ SLO の検討は慎重に行う必要があります。

開発担当者と運用担当者が密な連携を行う

SRE においては、開発担当者と運用担当者の密な連携が成功の鍵を握っていると言っても過言ではありません。両者がお互いの意見を尊重する意識を持ち、開発・運用の両面から最適なシステム構成を検討してください。コミュニケーションを活性化させるためには、週一回の SRE 定例会を設けるなど、定期的に意見交換を行う場を設けると良いでしょう。

継続的に PDCA サイクルを回す

SRE は一過性の取り組みではなく、何度も繰り返し行うことで精度が高まります。そのため、一度実践しただけで満足せずに、継続的に PDCA サイクルを回すことが重要なポイントになります。この時、過去に実施した SRE の結果を次回に活かせるよう、気付きや反省点をチーム全員で共有できるような仕組みを検討してください。

最後に、 SRE の実践事例を 3 つご紹介します。自社で実践する際の参考になると思いますので、ぜひ内容をご覧ください。

株式会社 エウレカ

マッチングアプリの「 pairs 」を運営するエウレカ社では、運用品質の改善を目的として 2016 年に SRE プロジェクトを開始しました。同社はインフラ部署と技術基盤部署を融合させて SRE チームを構成しており、自社アプリの品質をより高めるためのアクションを検討・実行しています。

例えば、

  • 99.95 % の可用性の実現
  • セキュリティリスクの撲滅
  • 少数人員による運用体制の確立

など、様々な SLI ・ SLO を定義し、日々プロジェクトを推進しています。また、定期的に SRE の内容を見直しており、自社の状況やビジネス環境に合わせて、 SRE チームのあるべき姿を模索し続けていることも、エウレカの SRE から学ぶべき点の一つだと言えるでしょう。

株式会社 メルカリ

フリマアプリの「メルカリ」を提供しているメルカリ社では、ダウンタイムの削減を目的として 2015年 に SRE プロジェクトを発足しました。具体的には、アプリの信頼性向上を実現するための API サーバー・ミドルウェアの可用性向上やセキュリティの担保、開発環境の整備などに取り組みました。

また、 2018 年からはメルカリのマイクロサービス化やメルペイのリリースなどが重なったこともあり、当初のチーム構成ではフォローできない領域が生まれてきました。そこで、メルカリとメルペイを横断的に網羅するプロジェクトチームを再度編成し、会社全体としての管理体制の整備や各サービスの信頼性向上を実現しています。

株式会社 ヌーラボ

Backlog や Cacoo などの IT ツールを提供しているヌーラボ社では、 2015 年から SRE プロジェクトを開始しています。同社の SRE の特徴として、サービスを開発する部署とは独立した形で SRE チームが存在している点が挙げられます。

そして、開発チームと SRE チームが分かれて存在することで、開発作業の進捗が見えづらくなることを考慮し、現状課題やプロジェクト慎重を相互共有するための定期的な会議を設定することにしました。これにより、関係者全員が共通認識のもとで SRE を推進することが可能になり、結果として円滑な新サービスの追加やマイクロサービス化を実現しています。

本記事では、 SRE の基本的な知識やメリットなどに加えて、具体的な実施ステップを 5 段階に分けてわかりやすく解説しました。

企業が SRE を実践することで、業務効率化やパフォーマンス向上など、様々なメリットを享受できます。この記事を読み返して、具体的な実施ステップや成功させるためのポイントなどを理解しておきましょう。

当社はこれまでの多くのクラウド開発を支援してきた知見を活かし、クラウドを活用した内製化に取り組まれるお客様を全力でサポートします。以下のような課題をお持ちの方は、ぜひお気軽にご相談ください。

  • SRE を実現したい
  • 開発で生成 AI を活用したい
  • 生成 AI を活用したサービス開発をしたいが知見がない
  • クラウド活用を推進するための開発体制作りが進まない
  • 既存資産をどのようにクラウド移行するか検討する知見が不足している
  • 内製化するためのクラウド開発スキルを持った人材が不足している
  • コスト削減の実現方法に悩んでいる

貴社の状況に合わせて、体制づくり支援や開発計画支援、クラウド開発スキルアップ支援など、様々な支援メニューを提供しています。無料相談も可能なため、まずは問い合わせフォームからお気軽にご連絡いただければと思います。

本記事を参考にして、 SRE 実践に向けた第一歩を踏み出してみてはいかがでしょうか?