SRE の内容と重要な理由
多くの場合、最初から始めることが最適です。 まず "サイト リライアビリティ エンジニアリングとは" という基本的な問題から始めましょう。 この問題の周辺にはいくつかの答えがあります。たとえば、この用語を作った人物 (Google の Ben Treynor Sloss) のよく引用される言葉などがありますが、私たちが提供できる最も実用的な答えは次のとおりです。
サイト信頼性エンジニアリングとは、組織がシステム、サービス、および製品に対して適切なレベルの信頼性を持続的に達成できるようにすることを目的としたエンジニアリング分野です。
今後、この概念に他の定義を持ち込むかもしれませんが、まずはここから始めましょう。 この定義には、明らかにする必要がある 3 つの重要な部分があり、"なぜ重要なのか" という問いにそのまま導かれます 。
[信頼性]
核となる部分 (そして "SRE" という名前にも含まれているもの) は信頼性という言葉です。 定義には、"適切なレベルのパフォーマンス"、"適切なレベルの効率性"、"適切なレベルの安定性"、さらには "適切なレベルの収入を達成する" という言葉は含まれていません。 "適切なレベルの信頼性" という言葉があります。 なぜですか?
簡単なデモを見てみましょう。 スクリーンショットを次に示します。 これは何を示していると思いますか。 考えが浮かぶか諦めるまで次に進まないでください。 注: 図の詳細がわかりづらくても問題ありません。ご利用のブラウザーで適切に表示されます。
この図は、PHP アプリでエラーが発生したときにどのようになるかを示すスクリーンショットです (他のデバッグのサポートは追加されていません)。 Java アプリでもこれと似た例があります。
このような例を紹介しているのはなぜでしょうか? それぞれ、業務に膨大な時間、エネルギー、リソースが費やされる可能性があるアプリケーションを表しています。 ただし、アプリケーションが実行されていない場合 (顧客がアクセスする必要があるときに機能していない場合)、つまり信頼できない場合、だれの得にも (とりわけビジネスの得には) なりません。 実際、信頼性の欠如は、ビジネスに (評判、経済、契約、士気などの) 実害を及ぼす可能性があります。
この重要性こそが、SRE が、基本的な特性 (おそらくサービス、システム、または製品の基本的な特性) として信頼性を中心に据えている理由です。 信頼性には多くのことが含まれる可能性があります (後述します)。ただし、次は定義の 2 番目の重要な部分について説明します。
適切なレベルの信頼性
初めて定義を読んだときはよくわからなかったかもしれませんが、もう 1 つの重要な言葉を強調してみましょう。
サイト信頼性エンジニアリングとは、組織がシステム、サービス、および製品で "適切な" レベルの信頼性を持続的に達成するために役立つ専用のエンジニアリング手法です。
この言葉が重要な理由は何でしょうか?
SRE の世界で得られる重要な見解は、100% の信頼が必要なシステムやサービスはほとんど存在しないということです。 航空機、医療機器などの生死の状況は、注目すべき例外です。
実際、望ましいとされる状況でさえわずかです。 高い信頼性を求めるほど、高い信頼性を達成するために必要な労力とリソースが (それに従ってコストも) 急増します。 言い方を変えると、必要としていない信頼性を求めることは時間とお金の無駄です。 システム、サービス、製品に適切なレベルの信頼性を達成することを考えます。
レベルは、ビジネス ニーズに合致し、実用的である必要があります。 たとえば、信頼性が 100% ではない (90% の時間は稼働している) ネットワーク経由で、顧客が接続する場合があります。 サービスの信頼性 95% を保証するために労力とお金を費やすことは、当然ながら時間とお金の無駄です。 システム、サービス、製品に適切なレベルの信頼性を達成することを考えます。
SRE はこの実用主義をもう一歩進めます。 望ましいレベルの信頼性があると考えられるようになったところで、そのレベルに到達したりそれを上回ったりした場合、何かすべきことはあるでしょうか。 同様に、達成しなかった場合はどうでしょうか? これらの質問へは、このモジュールの後半で回答します。
持続的に達成する
次に進む前に特に取り上げる必要がある定義の最後の言葉は、"持続的に" です。 "持続的に" とは、人の役割を指します。 持続可能な運用プラクティスを作成することが重要です。 人が、信頼性の高いシステム、サービス、および製品を構築します。 業務が持続可能であることを保証するために何もしないとしたら、 毎晩午前 3:00 に担当者をページャーで起こしたり、家族と過ごす時間を与えなかったりしたら、 担当者が自分自身のために時間を使う機会がないとしたら、 信頼性の高いシステムの構築は決してありえません。 SRE では、担当者が仕事に最善を尽くすためには、長期にわたって持続可能である運用方法を実装することが重要であると考えられています。