サイト信頼性エンジニアリング(SRE)は、インフラおよび運用上の問題にソフトウェア エンジニアリング プラクティスを適用することで、非常に拡張性が高く信頼性の高いソフトウェア システムを作成するためのエンジニアリング分野です。プロのサイト信頼性エンジニアは、開発チームと運用チームのバランスを取るソリューションを生み出すことができます。この役割の道を開いたのはGoogleです;詳細については、 Google eブック『Site Reliability Engineering』を参照してください。
サイト信頼性エンジニア(SRE)は開発(Dev)と運用(Ops)の間にいる存在ですが、必ずしもDevOpsそのものとは重なりません。SREの概念は2003年頃から存在しており、その意味ではDevOpsよりも古いと言えます。SREという用語は、Googleのサイト信頼性チームを立ち上げたBen Treynor氏によって広められました。Treynor氏によると、SREは「ソフトウェア エンジニアがいわゆるオペレーションを命じられたときの業務」です。
DevOpsとSREのいずれの分野も、アプリケーションのライフサイクル全体を通じて、開発(Dev)と運用(Ops)がお互いのプロセスを把握できるように支えることで、リリースサイクルを強化することを目的としています。また、自動化と監視を推奨し、開発者が変更に向けて作業を開始してから、運用環境に導入されるまでの時間を短縮します。SREとDevOpsは、コードや製品自体の品質を損なうことなく、この結果を実現することを目指します。
SREとDevOpsは、異なりつつも同程度に価値のある2つの切り口で考えます:
DevOpsは何をすべきかを考えます。
SREはどのようにすべきかを考えます。
サイト信頼性エンジニアは、サービスレベル指標(SLI)とサービスレベル目標(SLO)を測定する一方、DevOpsチームは失敗率と成功率を継続的に測定します。SREは、DevOpsが柱として掲げる次のインフラ改善項目について、責任を共有しています。
SREは企業のサイロ化の状況について議論することはありませんが、周囲にその問題について議論するよう促します。企業横断的にツールとテクニックを使用して、すべての従業員に当事者意識を与えることで、この議論は実現します。
SREは、エラーや障害が多すぎないように注意する必要があります。そのため、SLIスコアとSLOスコアで構成される数式を使用します。SLIスコアは、要求ごとの障害数をカウントするために、要求のレイテンシ、1秒あたりの要求のスループット、または1回の要求あたりのエラー数を計算します。SLOスコアは、しきい値と割合から導き出され、一定期間にわたるSLIの成功を表します。
SREは変化をもたらすために仕事をしていますが、その変化はゆっくりと系統だった方法で行われます。企業はスピードを重視するため、頻繁に製品アップデートをリリースするよう要求します。そこで、DevOpsとSREは迅速に対応しつつも、安定して制御されたペースを維持しなければなりません。
手作業を取り除くことで、開発者や運用担当者に価値を提供する範囲内で、自動化を進めます。
SREチームは、すべてが正しい方向に進んでいることを確認する必要があります。そのため、様々なシナリオにアラートを設定したり、ピアのコードレビューを推進したり、ユニットテストを使用したりします。
サイト信頼性エンジニアリング(SRE)とDevOpsは、相当程度重複する2つのトレンド分野です。これらの分野が目指すのは、成功または失敗を測定する方法と、すべてのアプリケーションで継続的な信頼性を得る方法を理解することです。信頼性はインフラだけの問題ではありません。アプリケーションの品質からパフォーマンスやセキュリティまで、あらゆる段階に関わります。SREは、ソースコードから導入までのすべてのプロセスに対応しています。これが、開発から運用までの真の橋渡しであるという評判を得ている所以です。