COLUMN コラム

SREとは? 今注目されている、SREの基本的な考えかたやポイントを解説

SREとは

SREは、サイト信頼性エンジニアリング(SiteReliabilityEngineering)の略称です。
2003年頃にGoogleにおいて開発された、サービスの信頼性を高めるための手法やプラクティスを体系化した概念です。

従来のIT運用と異なり、SREはサービスの開発チームと密接に連携し、

  • サービスを構成する各種コンポーネントやシステム全体の監視
  • アプリケーションの修正・機能改善のリリース
  • 問題発生時の迅速な対応、障害防止

などを行います。

また、自動化や可観測性の確保など、サービスの信頼性を向上させるための技術的な手法にも取り組んでいます。

SREは、サイトの信頼性を向上させ、システムの可用性やパフォーマンス、セキュリティを確保することを目的としています。また、サービスを運用する上での責任として、ユーザーにとって使いやすく、高品質なサービスを提供することが求められます。
近年、多くの企業で採用されるようになっており、日本でも注目を浴びています。

旧来のIT運用との比較

旧来のIT運用は

  • システムトラブルの発生は「0」を目指す
  • インフラ・アプリケーションの障害は、SEによる判断と手作業を前提とした復旧時手順
  • 運用中のシステムへのリリースは、開発または保守と呼ばれる担当がおこなう
    (手順書やテスト仕様書を作成し、それをもとに手動でテスト/リリースする)
  • リリースと運用は完全に分離している

といった組織体制・運営で成り立っていましたが、SREの考え方は、

  • システムトラブルはおきるものとし、どこまでエラーを許容するかを決める
  • 運用、リリース、システム復旧は常に自動化の視点で考え、サービスの停止を最小化する
  • SREは、システムの改善やサービス向上のためのエンジニアリングに50%の稼働を使う

という考えに基づいています。
ビジネスの変化にこたえつつ、安定稼働を実現するための概念といってもよいでしょう。

SREが注目される背景

では、いまSREがなぜ注目を集めているのでしょうか。

SREが注目されている理由として、以下のような背景が考えられます。

クラウドの普及

クラウドサービスの普及により、多くの企業が自社のアプリケーションやサービスを インターネット上に展開するようになりました。
これまで、一定の信頼性をハードウェアなどでコントロールできたオンプレ環境と異なり、クラウド上のサービスの信頼性を高めることが求められるようになりました。

デジタルトランスフォーメーション(DX)

多くの企業がデジタルトランスフォーメーションを進め、オンラインサービスによるデータの活用やサービス提供を開始しています。
オンライン上で提供されるサービスの安定性を確保することが重要となっています。

ソフトウェアの複雑性の増加

現代のアプリケーションは、複雑で多岐にわたる機能を持ち、多くの依存関係があります。
このため、障害が発生した場合に原因を特定し、修正することが困難になっています(自製で構築した、すべてを把握できるシステムでは考えられなかったことです)。
SREは、システム全体の視点から問題を解決するための手法を提供し、信頼性の高いサービスを実現することができます。

ユーザーの期待の高まり

今日、ユーザーは、高速かつ安定したサービスを求めています。
障害や遅延が発生した場合には、ユーザーがサービスから離れる可能性が高くなります。
これによっても、サービスの信頼性の向上が求められるようになっています。

SREのポイント

SREの考え方には、以下のような重要かポイントがあります。
本コラムでは、「SREとDevOpsとの違い」について説明します。

  • SREとDevOpsとの違い
    DevOpsはプラクティス/ガイド
    SREはそれらプラクティスを実装するための考え方、役割
  • リスク受容
  • トイルの撲滅
  • モニタリング、アラート
  • 自動化
  • エラーバジェット
  • SLO(サービスレベル目標)
  • 非難なきポストモーテム

SREとDevOpsとの違い

SREとDevOpsが比較され、その違いについて議論されることがあります。
SREとDevOpsは、ともにソフトウェアの開発と運用のプロセスに焦点を当てていますが、それぞれに独自のアプローチ、およびや重点領域があります。

SREは、サイトの信頼性と安定性を維持することに重点を置いています。
SREチームは、サービスの障害を予防するために自動化されたテスト、デプロイ、モニタリング、障害復旧などのプロセスを設計・実装します。SREチームは、ソフトウェア開発チームと密接に協力し、サイトの信頼性を維持しながら、より多くの機能や改善をリリースできるようにします。

一方、DevOpsは、開発チームと運用チームが協力し、ソフトウェアの開発からデプロイ、運用、改善に至るまでのプロセス全体を改善することに焦点を当てています。
DevOpsの目的は、ソフトウェアのリリースサイクルを迅速化し、品質を向上させることです。
開発者と運用者が密接に協力し、自動化されたテスト、デプロイ、モニタリング、障害復旧などのプロセスを共有します。

要約すると、SREはサイトの信頼性に、DevOpsは開発と運用のプロセスにそれぞれ焦点を当てていると言えます。ただし、両者の目的は同じであり、ソフトウェアをより信頼性の高いものにすることです。

また、SREの主張する視点では「DevOpsはプラクティス/ガイド的であり、SREはそれらプラクティスを実装するための考え方、役割である」という側面もあります。

まとめ

本コラムでは、SREの基本的な考え方や、SREが誕生した背景、考え方のポイントを紹介しました。

サービスの信頼性は顧客の満足度に影響を与えます。
SREは、サイトの信頼性を向上させ、ビジネスの成長につなげるための重要な役割を担うと私は思います。
今後も様々なエンジニアリングの考え方が生まれてくるでしょうが、この数年はSREという考え方、およびそのスキルをもったエンジニア/エンジニアリングは需要の高いものになるでしょう。

関連するナレッジ・コラム

DX認定企業におけるデジタル広報の実態

IT組織の変革をサポート!ITIL4が提唱する成熟度モデルとは

ServiceDesk Plusのカスタマイズ機能の紹介 カスタム関数編