お問い合わせはこちら

SREとは?チームの役割やシステム運用・開発でSREエンジニアがやることを解説

公開
SREの解説

サイトやシステムを中長期的に運用していく企業でREチームを導入する企業が増えています。今回の記事では、注目を集めているSREとは何か?SREを企業に導入することでどのようなメリットが得られるのかを解説します。

また、SREチームを導入する流れについても解説します。サイトやシステムを運用する企業はぜひご覧ください。

SREとは

SREは、Site Reliability Engineering(サイト・リアイアビリティ・エンジニアリング)の略で、直訳すると「サイト信頼性エンジニアリング」となります。GoogleのエンジニアリングチームのBen Treynor氏が提唱した概念で、「信頼性が高い本番環境システムを実行すること」とGoogleは定義しています。

本番環境で稼働しているシステムを、自動化やツールの導入を通じて効率的な監視や運用を実現し、サービスの高可用性を確保する手法をSREと呼びます。

SREの目的

SREの目的は、「サイトやシステムの信頼性を向上」させることです。開発担当者や運用担当者が連携することで、サービスやシステムのダウンタイムを最小限に抑え、さらにシステム改善や新機能の追加を継続的に実施することを目的としています。

従来は、開発・設計構築を行うエンジニアと、運用を行うエンジニアの連携がとれておらず衝突が起きていました。原因は、機能の追加や、1日でも早いサービスのリリースを優先するあまり、運用時のサービスの安定稼働が二の次となっていたことです。

しかし、運用後のトラブル早期改善、安全稼働、ダウンタイムを最小限に抑えることの重要性が再認識されはじめ、SREの概念が登場しました。

SREチームの役割

SREエンジニアは、システムやアプリの開発と運用の両方の実務経験やスキルが求められる業種です。企業やプロジェクトのシステム・アプリ開発では、SREエンジニアが数人のチームを組んでチーム単位で参画します。

SREチームの主な役割は以下の4点です。

  1. 新機能の開発・運用のサポート
  2. 運用業務の環境整備
  3. システムの自動化
  4. 問題発生時の対応

新機能を追加する際は、運用面も考慮し変更を加えてもサービスの稼働に問題がないかを確認します。その変更箇所をドキュメントに記載する業務も担っています。

また、本番の運用環境に問題がないか常にチェックし、問題があれば改善を行います。

DevOpsとの違い

DevOpsとは開発(Development)と運用(Operations)を組み合わせた言葉です。SREとDevOpsは、どちらも開発フェーズと運用フェーズの連携を行うという共通点があり、混同するケースも多いですが目的が異なります。

  • SREの目的:開発者と運用者が連携し、サイトやシステムの信頼性(安定稼働)を目指す
  • DevOpsの目的:開発者と運用者が連携し、リリースサイクルを短縮すること

SREを提唱したGoogleは、SREとDevOpsの関係性について「DevOpsの概念を実現する方法がSREである」としています。

QAとの違い

QAとはSREに内包されており、SREを行うための一つの方法です。
QA(Quality Assurance)は「品質保証」を意味します。

システム構築におけるQAは、構築したもの(サーバーやネットワークなどのパフォーマンス)が一定の基準を満たしているかを事前に確認することです。

QAのエンジニアは、以下のような流れで作業を行います。

  1. 設計書や仕様書通りに、動作するか確認しテストを実行
  2. 不具合があれば不具合箇所を分析
  3. 開発側にフィードバック
  4. 修正された箇所を中心に再度テストを実行
  5. 開発プロセスに問題がないか確認

上記のように、QAは主に開発工程のテストを行うことが目的です。

SREを実施した実例

■株式会社メルカリ
個人間のやり取りが多いアプリを運営しているため、アプリのダウンタイムを押さえる目的でSREを導入しています。メルペイは、金融サービスのため利用者も多く、個人情報の保護やアプリの信頼性が求められていました。

新機能の追加や求められる機能の開発に追われ、中長期的な運用に十分な対策ができていないことから、課題を解決するための新たなSREチームを立ち上げています。

■株式会社エウレカ
株式会社エウレカは、マッチングアプリ「pairs」を運営しています。2016年にSREチームを発足しました。

環境のサーバーレス化、サーバーの負荷軽減対応、通信の監視・モニタリング、障害対応、障害対応フローの構築、テンプレの作成などインフラの具体的な課題を分析し対応してたのです。

しかし、SREチームが「何でも屋」状態となり、業務が集中しすぎる課題が発生しました。SRE導入時には導入の目的を明確にする必要があります。

SREエンジニアとは

SRE(サイト信頼性エンジニアリング)を担うエンジニアのことを、サイト信頼性エンジニアと呼びます。ここからは、SREエンジニアについて詳しく解説します。

必要なスキル

開発から運用まで横断して担当するため、SREエンジニアには以下のようなスキルを必要とします。

  • Webサービスの開発・運用スキル
  • クラウドサーバーの構築・運用スキル
  • ネットワーク・データベースに関する知識
  • セキュリティに関する知識

Webサイトは、サイト運用の知識だけでなく、データベース上のデータにアクセスしたり、情報を反映させたりするため、データベースに関する知識も求められます。

サイトのインフラ基盤部分となる、サーバやネットワーク、セキュリティ、大量のデータを扱うためクラウドサーバーに関するスキルも求められます。

必要な資格

SREチームに参加するメンバーには、以下の資格を持ったエンジニアが望ましいとされます。SREに特化した資格はまだありません。そのため、SREエンジニアを採用する際は、下記の表の資格や知識を複数持っているエンジニアがふさわしいと言えるでしょう。

資格内容
EXIN DevOps ProfessionalDevOpsの専門性を証明するための資格
Cisco Certified DevNet Associateネットワーク機器を提供するCisco社が運営する資格
AWS認定クラウドサービス「AWS」に関する資格
試験 AZ-400:
Designing and Implementing
Microsoft DevOps Solutions
クラウドサービス「Azure」に関する資格 どちらも中級者レベル
Professional Cloud Architectクラウドサービス「Google cloud」に関する資格
Linux技術者認定試験LinuxOSに関するサーバーの構築から運用管理に必要なスキルを証明できる資格

インフラエンジニアとの違い

SREエンジニアとインフラエンジニアの違いは大きく分けて3点あります。

SREエンジニアインフラエンジニア
アプローチ法開発、運用の連携を行うインフラシステムの要件定義、
設計、開発、構築、運用、保守までを行う  
業務範囲サイトの信頼性を高めるためのサービス全て
インフラとSREの業務範囲で最も異なる点は、
SREがアプリケーションのプログラムや開発にも責任を持つこと  
インフラ
(サーバー、ネットワーク、データベース)のみ
スキルセットITインフラのスキルに加えて
アプリ開発を行うスキル
ITインフラに関するスキル
(サーバー、OSやミドルウェアなどのソフトウェア、
ネットワーク、データベース、セキュリティ)  

クラウドエンジニアとの違い

クラウドエンジニアは、AWS、Azure、Google cloudなどのクラウドサービスを利用して、インフラ構築、アプリケーション開発、システム構築を行うエンジニアを指します。

クラウドサービスは、インフラエンジニアの一種です。しかし、AWSやAzureのサービスにアプリ開発を行うサービスもあるため、クラウドエンジニアはクラウドで行うIT全般の幅広い知識が必要と言われています。

一方で、SREはクラウドに限らずオンプレミス環境のサイトやシステムも担当する範囲です。

インフラエンジニアと同様に、クラウドエンジニアもクラウドサービスやシステムの要件定義や背系・構築を行います。SREエンジニアは、主に開発・運用の工程を担当しています。

【領域別】SREチームがやること

SREチームは、サイト信頼性エンジニアリングを行うチームのため、運用面の業務が注目されることが多いですが、開発面も業務範囲です。

ここからは、SREチームの具体的な業務内容を、開発領域と運用領域それぞれを紹介していきます。

システムの開発領域

SREチームは、システムの開発領域において以下のような業務を行います。

主な業務内容
  • サーバー構築
  • 適切なOS・ミドルウェアのインストール
  • ネットワーク構築
  • セキュリティソフトウェアの導入
  • データベース構築
  • 開発工程の自動化

ITインフラの構築に加えて、アプリケーションやサイトの開発、開発工程の自動化も担当します。

システムの運用領域

SREチームは、運用領域において以下のような業務を行います。

主な業務内容
  • サーバーやネットワークなどインフラ運用
  • 負荷分散装置の導入
  • バグやエラー発生時の対応
  • 運用環境の改善

本番環境で運用しているサイトやシステムの障害対策や、サイトの信頼性を高めるため負荷分散やバックアップ対策を行います。

SREチームの作り方・導入方法

ここからは、企業やプロジェクトにSREチームを参画させるときのチーム作りの方法、また導入する流れを解説します。
SREチームを作る手順は以下の5ステップです。

  1. SREエンジニアを採用する
  2. 組織に合ったSREを定義する
  3. 計測や監視ツールを導入する
  4. SREの指標を設定する
  5. 結果を計測して改善に取り組む

それぞれのステップをわかりやすく解説します。

SREエンジニアを採用する

まずは、SREエンジニアを採用するステップです。SREエンジニアに必要なスキルや資格を保有したエンジニアを募集します。

SREはチームで行動していくため、連携がとれるようなチーム作りが望ましいでしょう。そのため、運用と構築の両方の経験を持った人材が望ましいです。

採用が難しい場合は、バランスを見ながら運用経験は浅くても開発スキルに長けた人材を採用するなどを検討しましょう。

組織に合ったSREを定義する

次のステップが、組織にあったSREのあり方を定義することです。組織に適したSREチームを確立するには、課題やコスト、導入のメリットを明確にし、社内で理解を得ることが重要です。

SREに業務が集中し、「何でも屋」にならないよう工夫が必要です。具体的には以下について整理します。

  • 課題や現状のコスト
  • 潜在的な影響
  • 信頼性の向上に対する効果
  • 費用対効果

これらを詳細に整理したうえで、SREを定義することが導入を成功させる鍵です。SREを定義することで、組織全体が効果的な運用と信頼性向上に向けてアクションを起こせるようになります。

③計測や監視ツールを導入する

次のステップでSREに必要な計測ツール・監視ツールを導入します。SREの計測・監視ツールの一例を紹介します。

DataDogサーバー監視ツール
JP1統合システム運用管理ソフトウェア
Zabbixオープンソースの監視ツール
AnsibleITインフラストラクチャの管理と構成を効率化
SMAXインシデント対応と管理

②で決めた定義を元に、どのツールを導入するべきか検討しましょう。

④SREの指標を設定する

続いて、SREの指標を設定します。SREの信頼性を示す指標として、以下の2つがあります。

指標意味
SLI
(サービスレベル指標)
信頼性目標が守られているかを
評価するための測定値
・リクエストのレイテンシ
・エラー率
・システムスループット
・可用性
SLO
(サービスレベル目標)
SLIに期間と目標値を設けたもの・1週間のエラー率1%以下
・1ヶ月の可用性99.99%

また、SREの指標を設定する場合において、以下のポイントを意識しましょう。

  • 無意味な値ではなく有意義な値を設定すること
  • 達成可能で無理がないこと
  • 正確な測定が可能な数値にすること
  • 理解しやすい値を設定すること

これらはSRE導入における重要なファクターです。

⑤結果を計測して改善に取り組む

最後のステップでは、結果を計測して振り返りを行います。さらに、それによって浮き彫りとなった課題に対して改善を行います。課題の抽出から改善を行うことは、その後継続的に実施することが重要です。

方法として、SREツールの導入前と導入後それぞれの値を同じ環境で測定します。例えば、あらかじめAsanaやTrelloといった「工数管理ツール」と、LookerやTableauのような「BIツール※」を連携させておくことで、SRE導入前と導入後の工数削減率を簡単に把握できます。

BIツールとは、企業が保有するあらゆるデータを分析・見える化することで、経営や事業に役立てるソフトウェアです。分析では、特に「組織構造の理解」や「現状の定義」に関して時間をかけることが重要です。

SREの導入にふさわしい場を考察してビジネスケースへ落とし込めば、SREの導入効果を最大化できるのです。また、SREの導入には、経営層をはじめ、社内のメンバーからの理解を得る必要があります。

導入フェーズではスモールケースから始めて実績を積んでいくことで、その後徐々に大きな事業へと広げられ、社内の理解を得ることができるでしょう。

まとめ

SREは、Site Reliability Engineeringの略で、「サイト信頼性エンジニアリング」という意味があります。本番環境で稼働しているシステムを、自動化などにより効率的な監視・運用を実現してサービスの高可用性を確保する手法です。

SREの目的は、サイトやシステムの信頼性を向上させることです。開発や運用の担当者がそれぞれ連携することで、システムのダウンタイムを抑え、改善や新機能の追加を継続的に実施することが目的です。またSREエンジニアは、システムやアプリ開発だけでなく、監視や運用の実務経験が求められる職種です。複数人のチーム単位で企業やプロジェクトのシステム開発などに参画します。

「新機能の開発・運用のサポート」「システムの自動化」などが主な役割で、本番の運用環境に問題がないかをチェックし、問題があれば改善を行います。この記事をきっかけに、SREの導入を検討されてみてはいかがでしょうか。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。