Googleが提唱するSREとは?運用コストを削減できる理由2つ

Googleが提唱するSREとは?運用コストを削減できる理由2つのアイキャッチイメージ

SREとは?エンジニアの新たな働き方について


SREとは「Site Reliability Engineering」の頭文字を取った言葉で、「サイト信頼性エンジニアリング」と訳されています。

SREに関わるエンジニアは、サイトの信頼性を向上させるために自動化・障害対応・パフォーマンス管理・可用性担保等を行い、収益やブランドを支える役割を担います。

従来は開発者が開発したシステムを運用者へ引き渡し、運用者は改善すべきことがあれば手順書を改訂・追加していく手法が取られていました。

SREとDevOpsとの違いとは


SREとDevOpsの違いとは、SREとは発生する課題や障害に対処し解決していく方法が明確でエンジニアの役割としても定義されています。

DevOpsとはそういった点が定かではなく文化や方針を示す概念です。
ですが、どちらも開発担当と運用担当が協力してより良いものをユーザーに提供するのが目標という点では同じです。

この目標を達成するためにSREチームを作り上げることが大事です。

定義上の違い

定義上の違いとは、SREを提唱したGoogleによるとSREは役割でDevOpsは思想であると定義されています。

どちらも目指す目標のために各部署が協力するという点は同じですが、その手法と考え方に違いがあります。

SREとは役割なのでソフトウェアを使った方法によって繋がり解決しようとします。

それに対してDevOpsとは思想であるために感覚的なもので繋がり解決しようとします。

DevOpsとは感覚的なものであるがゆえに広まり繋がりやすく、そうやって繋がったそれを明確な形として機能するようにしていくのがSREといえます。

役割や職種としての違いは?

役割や職種としての違いとは何か?

定義のところで役割と思想と書いた通り、実際のところはSREとDevOpsエンジニアの2つに役割や職種としての違いはありません。

どちらか片方をこなしてきた経験や能力があるならもう片方も問題なくこなせるでしょう。

SREが持つ役割3つ


SREが持つ役割とは、大きく分けて3つの役割が存在します。

・仕様変更の内容を把握・管理すること
・サービスとしての可用性を保つこと
・システムやサービスのパフォーマンスを向上させること

以上の3つについてご紹介していきます。

1:仕様変更の内容を把握・管理すること

SREは仕様の変更内容を把握・管理することで不具合が起きたときに対処する役割があります。

仕様の変更内容を把握していなければ、何故、仕様変更を行ったことで不具合が起きたのかという理由がわからず対処できないからです。

2:サービスとしての可用性を保つこと

SREはサービスとしての可用性を保つ役割があります。サービスの可用性が保たれていなければお客様からの信頼を損ねてしまいます。万が一の場合に備えて予備のシステムを構築するなどの対応が必要になります。

3:システムやサービスのパフォーマンスを向上させること

SREにはシステムやサービスのパフォーマンスを向上させる役割があります。パフォーマンスを向上させるために運用しているシステムやサービスについて把握し、必要なもの不必要なものを洗い出しブラッシュアップする必要があります。

SREによって運用コストを削減できる理由2つ


SREによって運用コストを削減できる理由2つとは、SREを適用することによって運用コストの削減を行うこともできます。

従来であれば運用者は改善すべきことがあれば手順書を改訂・追加していましたが、この方法は膨大になっていく手順書をもとに運用することになるため運用コストが高くなっていくという問題がありました。

しかし、それをSREは以下の2つの要素によって解決しています。

開発者が運用に積極的に関与できる

開発者が積極的に関与することができるとは、開発者が積極的に関与することで問題点の洗い出しと改善を行うことができます。

これによって手順書が改訂と追加で膨れ上がっていくことを抑え、運用コストが増えていくのを抑えます。

システムの安定稼働と積極的な機能改善

システムの安定稼働と積極的な機能改善とは、問題が発生しても開発者が直接関わっているので問題の洗い出しとその解決にかかる手間と時間が減らせます。

結果としてシステムの安定した稼働を得られるだけでなく、機能も向上していきます。

SREの業務内容4つ


SREの業務内容4つとは、SREの業務内容は大小様々でとても多岐にわたります。

そのすべてを細かく説明するのは難しいので、業務内容の中でも主なものを4つ、その業務内容とともに以下に書いていきます。

1:開発者の精神的な負担を減らす

開発者の精神的な負担を減らすとは、開発速度を上げるために、開発者の精神的な負担を減らすことも大事です。

例えば開発しリリースしたサービスが機能しない場合などは、開発者にとって精神的な重圧が凄まじいものになるのは容易に想像できます。

それを軽減するためにSREはサービスそのものが止まってしまわないような仕組みや、バグの洗い出しなどを行うことで開発者の精神的な負担を減らします。

2:開発チームが自律できるツールや仕組みの提供

開発チームが自律できるツールや仕組みの提供とは、SREは開発と運用を繋ぐ存在ですが、開発側がSRE側に依存してしまうようになると、どちらも機能不全に陥りかねません。

そうならないようにSERは開発側が自立できるようなツールや仕組みを作り提供する必要があります。

3:安定した運用体制の調整

安定した運用体制の調整とは、どんなサービスやシステムでも問題はどこかに潜んでいるものです。

その潜んでいた問題が表に出てきたときにSREはサービスやシステムが完全に停止せず、問題なく運用できる環境を構築しておく必要があります。

問題を解決するための迅速なパッチの作成と適用や、それが無理であれば問題なく運用できていたときの状態に巻き戻すなどといった手段があります。

4:Opsサイドの要望とDevサイドの要望との両立

Opsサイドの要望とDevサイドの要望との両立とは、Opsサイドは「システムの安定」を望み、Devサイドは「プロダクトの高速リリース」を望みます。

ですが、システムが安定していてもリリースが遅ければ意味はありませんし、逆にリリースが早くてもシステムが安定していなければ意味がありません。

SREとはそうならないように2つのサイドの要望を両立させることが仕事です。

SERに必要とされる能力5つ


SERに必要とされる能力5つとは、多くの人と関わり、様々な問題を解決していくSERには必要とされる能力が5つ存在します。

それらを駆使してSERは問題を解決していくわけですが、ここではその5つについて書いていきます。

1:コミュニケーションスキル

コミュニケーションスキルとは、チームを組んで活動することと開発チームなどとのやりとりが多くなるSREではコミュニケーションスキルは重要です。

自分が伝えたいことを伝えるためにも、そして相手が望むことが何なのかを理解するためにもコミュニケーションスキルは必須となります。

2:インフラに関する技術

インフラに関する技術とは、SREはシステムの基盤に関する業務が中心となるため、「TCP/IP」「HTTP」といったネットワークプロトコルについての知識やパフォーマンス改善・ミドルウェアの機能知識などが必要になります。

3:各種クラウドサービスに関する知識

各種クラウドサービスに関する知識とは、近年はクラウドサービスを利用する企業も増えているため、各種クラウドサービスについての知識も必須となっています。

クラウドサービスにはソフトウェアを提供する「SaaS」、アプリケーションを稼働させる開発環境をネットワークに通じて提供する「PaaS」、インフラ機能をネットワークに通じて提供する「HaaS」などがあります。

4:アプリケーションに関する技術

アプリケーションに関する技術とは、アプリケーションの開発と運用に使う「Java」「PHP」「Python」「Ruby」といったプログラミング言語のことです。

SREはこれらのプログラミング言語を使って問題などを潰していきます。

5:セキュリティに関する知識

セキュリティに関する知識とは、サービスやシステムはネットワークに繋がっていることもあり様々なセキュリティリスクを抱えています。

それらが問題に繋がることも多々あるのでどんなセキュリティリスクを抱えているのかを把握しておくのもSREの業務の一つになります。

日本企業でも広まるSRE導入事例4選


SREの導入は日本企業の間でも広がりつつあります。

ここからはSREを導入した日本企業の中から、株式会社メルカリ、dely株式会社、freee株式会社、サイボウズ株式会社の以上の4社をピックアップして、その事例を見ていきます。

1:株式会社メルカリのSRE導入事例

株式会社メルカリのSRE導入事例をご紹介します。

2015年5月時点では5人のメンバーがSREチームに所属していたそうです。
主な業務としては以下のようなものが挙げられます。

・APIサーバ、ミドルウェアの可用性の維持・向上
・APIサーバ、ミドルウェアのパフォーマンスの向上
・ログ収集・分析基盤の構築、運用
・サーバプロビジョニング・デプロイの整備
・セキュリティの担保
・開発環境などの整備
SREチームとアプリケーションエンジニアが行った様々な取り組みによって、メルカリのAPIサーバの平均レスポンスタイムは大幅な改善を実現しているとのことです。

2:dely株式会社のSRE導入事例

dely株式会社のSRE導入事例とはをご紹介します。

delyでは2017年1月にSREチームを発足しました。
このチームは以下の3つを重要項目として挙げています。

ユーザーの方々が「当たり前にサービスを使える状態」をしっかり構築する
事業判断に使うモニタリング指標をきちんと取得し、その正しさを保証する
エンジニア全体の生産性向上(開発フローの一部自動化等)

以上を念頭に置いて、Webサイトのパフォーマンス向上やサービスの信頼性を高めるための業務を日々こなしているようです。

3:freee株式会社のSRE導入事例

freee株式会社のSRE導入事例をご紹介します。

会計や人事などの重要なデータを取り扱うfreeeでは下記のように語っています。

「お客様のセンシティブな情報を預かっていることもあり、堅牢なインフラを作り、それを維持・強化しなければ、あっという間に信用を失ってしまいます。ホームページ上でセキュリティ対策について積極的に公開して安心して使ってもらえるように心がけています」

そのためにSREはセキュリティを高めつつ稼働率を維持するよう取り組んでいます。

4:サイボウズ株式会社のSRE導入事例

サイボウズ株式会社のSRE導入事例をご紹介します。

サイボウズでは2016年9月にSREチームを発足しました。

それ以前では、下記のような問題が発生していました。

「開発したシステムの運用コストが甚大な事例が複数あった」
「オペレーションチームのソフトウェア開発スキルが向上しない」
「Toil が爆発しているのに減らせない」などの問題がありました。」

それらの問題が見過ごせない状況となったため、チームを再統合して、SREチームとして立ち上げ、問題を解決していこうとなったようです。

SREという働き方とはどのようなものなのかを理解しよう


サイトの安定と改善をし続けるSREの仕事には上限がありません。
まだ、SREという言葉自体認知度があまりないかもしれませんが、人材募集等は今後増えるかもしれませんので、こういった仕事も検討してみてはいかがでしょうか。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。