Topics Devops サイト信頼性エンジニアとは?

サイト信頼性エンジニアとは?


サイト信頼性エンジニア(SRE)は、組織のWebサイトやアプリケーションの背後にあるテクノロジーに関する幅広い知識を持っています。それだけでなく、顧客のビジネスニーズや要件も理解しています。

サイト信頼性エンジニア

サイト信頼性エンジニア(SRE)とは、コンピュータサイエンスとソフトウェアエンジニアリングのコア原則を適用しながらスケーラブルかつ分散型で信頼性の高いコンピューティングシステムを設計および開発する人物です。Googleによる造語であるこの職業は、複雑な運用上の問題に自動化されたソリューションを提供する大規模なソフトウェアシステムの開発を目的とし、運用をソフトウェアの問題のように扱います。

サイト信頼性エンジニアは日常的なワークフローを改善してシステムの効率性と信頼性を向上させるため、コンピュータサイエンスとソフトウェアエンジニアリングの側面をオペレーションに組み込む一連の開発プラクティスを実行します。基本的に、SREは企業のソフトウェア システムとサービスの提供、保護、発展を担当します。

ここではサイト信頼性エンジニアの日々の業務DevOpsチームや企業に与える価値、主な責任について、さらにサイトの信頼性を測定する方法やSREとDevOpsエンジニアの違いについても説明します。記事の最後ではキャリアの選択肢としてのサイト信頼性エンジニアについて説明します。

サイト信頼性エンジニアの役割とは?

SREはさまざまな作業を処理し、システム管理タスクやソフトウェアの構築を担います。通常業務には複数のプロジェクトの管理、インフラの設定、エンジニアミーティングへの出席などがあります。

一般的なシステム管理者としての作業には、信頼性とパフォーマンスの維持、問題やエラーの修正、タスクの自動化、インシデントへの対応、オンコールでの作業などが含まれます。

開発タスクにおいて、SREはサイト信頼性チームや機能横断型の環境で、ソフトウェアエンジニアが使用するインフラストラクチャベースのプロセスまたは方法論の構築にかなりの時間を費やします。たとえば、パフォーマンスとサービスの遅延を24時間体制でモニタリングするためのプロセス開発などがあります。

開発では、SREはプロダクトマネージャーやそのチームと緊密に連携し、製品のビジョンが非機能的なシステム要件、つまりパフォーマンス、レイテンシー、可用性、セキュリティと互換性があることを確認します。また、ビルドプロセスのステージングの段階でエンジニアリングチームと協力し、最適なデリバリー効率を確保します。

サイト信頼性エンジニアが組織にもたらすもの

厳格なソフトウェアエンジニアリングの考え方をシステム管理に適用することで、SREはソフトウェア開発と運用の架け橋になります。SREは、重要な分野およびプロジェクト固有の知識を生成して文書化し、アクセス可能であることを保証します。作業ガイドラインのルールに忠実に従い、現場での作業や冗長性を排除します。一貫した製品の成長を推進することと、顧客のための信頼性を維持することの間でバランスを取るのが最高のSREです。

運用にソフトウェアエンジニアリングの原則を厳密に適用することで、SREは組織の製品のソフトウェアの信頼性を大幅に向上させることができます。

SREの職責とは?

SREには信頼性を維持する責任があります。これは自動化と合理化、効率的なエラー応答の簡素化、大規模なヒューマンエラーの削減を意味します。SREは問題の解決、内部ツールの設定、システムのベンチマークの設定やテストに多くの時間を費やしています。また、日々の製品の運用のために堅牢なエンジニアリングパイプラインを開発およびモニタリングします。SREは開発チームと密接に協力しながらソフトウェアエンジニアリングの考え方を適用して運用上の課題に対処し、システムの信頼性を向上させます。

一般的に、SREはシステムのパフォーマンス、可用性、信頼性、効率性、変更管理、モニタリング、緊急時の対応に責任を持ちます。SREのその他の主要タスクの例は次のとおりです。

  • サービスレベルインジケータ(SLI)のモニタリングとサービスレベル目標(SLO)の設定。SREはエラーを最小限に抑えながら、適切なリソース使用率を通じて効率的なパフォーマンスのための適切なSLIを促進します。また、高可用性といった内部目標をレビューするためのSLOも設定します。

  • リスク評価とエラー予算:SREにはシステムの信頼性目標を確立する責任があり、その後の製品リリースでは測定されたリスクを負うこともあります。

  • 出力のモニタリング:チケット、ロギング、アラート(必要な人間の行動の異なるレベルを示す)は、SREにとって重要なタスクです。

  • 需要予測とキャパシティの計画:プロジェクトには、将来の需要、停止、緊急事態を計画するための慎重な評価が必要です。SREは、製品の責任者と連携してこうしたタスクを実行します。

  • コラボレーション: SREは多くの多様なチームと協力し、ベストプラクティスを普及し、部門をまたぐ製品開発を改善するための決定事項を確認する必要があります。

  • レトロスペクティブの作成:レトロスペクティブレポートはチームがインシデントから学び、再発を防ぐのに役立ちます。

サイトの信頼性の測定方法

サイトの信頼性は通常、3つの側面から測定されます。

まずシステムレベルの使用状況、速度低下、停止、エラー、トラフィック、その他の要因を測定するためにSLIが使用されます。SLIはユーザーエクスペリエンスに直接結びついており、数字が望ましくない場合は顧客満足度に影響します。

第二に、製品やサービスの信頼性の目標レベルを定義するSLOがあります。たとえば、最後の15分間に95%のパーセンタイルで500ミリ秒未満の要求レイテンシを必要とするSLIがある場合、99%のSLOには99%のSLIが必要となります。 これはサイトの信頼性チームと内部ステークホルダー(デベロッパーとプロダクトマネージャーを含む)が合意しなければならない内部目標です。

最後に、サービスレベル契約(SLA)があります。これは会社と顧客間の暗黙的または明示的なビジネスレベルの合意であり、組織がSLAを満たさない場合の結果を記すものです。そのほか、SLAを損なうことなく保守や改善などのサービスを提供するために、SREが取るリスクを測定するエラー予算も含めることができます。

サイト信頼性エンジニアとDevOpsエンジニアの違い

この2つの役割の違いは、サイト信頼性エンジニアがシステムの可用性と信頼性の向上に重点を置いているのに対し、DevOpsエンジニアは開発とデプロイのスピードと自動化に取り組むことにあります。

SREはコードの信頼性を調査し、エラーを修正するためのソリューションを革新しながら、ソフトウェアを効率的に記述およびデプロイすることが期待されています。 DevOpsエンジニアは製品ライフサイクル全体にわたってプロセスとモニタリングを自動化することを目指していますが、SREは冗長性を評価し、成長を加速することでリスクを最小限に抑えます。

サイト信頼性エンジニアになるには

SREになるには、Python、Ruby、Javaなどの1つ以上のプログラミング言語の数年の経験と知識が必要です。また、シェルスクリプト、GitLabを使用したGitのようなバージョン管理システム、継続的なテストとデリバリーパイプライン(CI/CD)の自動化にも精通している必要があります。

さらに、SREにはSQLやNoSQLデータベースの知識も求められます。DockerやKubernetesなどのコンテナ化の経験も高く評価されます。

まとめ

サイト信頼性エンジニアリングは、スケーラブルで分散型かつ信頼性の高いコンピューティングシステムの設計と開発に関するものです。エンジニアの仕事は、システム管理タスクの実行やソフトウェアの構築です。 ソフトウェアエンジニアリングの考え方をシステム管理にもたらし、ソフトウェア開発とオペレーションの架け橋になります

サイト信頼性エンジニアは、多様でやりがいのある高収入のキャリアです。

実際に体感してみませんか?

統合されたDevSecOpsプラットフォームによってチームで実現できることをご確認ください。