SRE(Site Reliability Engineering)とは

コンピューターで作業している男性の空撮

執筆者

Camilo Quiroz-Vázquez

IBM Staff Writer

Michael Goodwin

Staff Editor, Automation & ITOps

IBM Think

SRE(Site Reliability Engineering)とは

SRE(Site Reliability Engineering)とは、DevOpsと従来のIT運用を組み合わせたソフトウェア・エンジニアリングの手法です。SREは顧客の問題を解決し、IT運用タスクを自動化し、ソフトウェアの提供を加速させ、ITリスクを最小化することを目的としています。

SREは、DevOpsサイクルにおけるレジリエンス、冗長性、信頼性を支えるとともに、ソフトウェア・プログラムの日々の実装にも関与します。サイト信頼性エンジニアは一般的に「50:50ルール」に従い、時間の半分をエスカレーション対応やインシデント対応などの顧客対応に、もう半分をITオペレーションの自動化に充てます。これらの業務には、本番システムの管理、チェンジ・マネジメントインシデント対応、緊急対応などが含まれます。

SREチームは、ソフトウェア開発者が意図した動作と、実際の運用環境での動作とのギャップを埋める役割を担います。サイト信頼性エンジニアは顧客と直接やり取りを行い、トラブルシューティングを行うとともに、ユーザー体験に関するデータを収集します。そしてこのデータを開発チームへフィードバックし、ソフトウェアの実際の性能や必要な更新についての洞察を提供します。

SREは、障害の発生は避けられないという前提に立っています。彼らの役割は、根本原因分析などのプロセスを通じて即時の問題の原因を特定し、さらに監視やログデータを活用して将来的な障害の予兆を見つけることです。そして、それらの問題に対応するためのオートメーションを構築し、システムにレジリエンスと冗長性を組み込んでいきます。

大規模なソフトウェア・システムに対するこの自動化された監視により、システム管理者がIT運用作業を手動で実行する必要が減少します。手動作業を排除することで、ITチームは時間を節約し、運用業務をより正確に実行できるようになり、アプリケーションのパフォーマンス維持に専念することが可能になります。

SREはどのように機能するのか

サイト信頼性エンジニアは、ソフトウェア開発とIT運用の両方に関する経験を必要とする技術職です。これらの職務を理解することで、SREチームはソフトウェア開発ライフサイクルを支援するという役割を果たすことができます。SREは、プロセスを一貫して自動化することでレジリエンスを実現するという戦略に基づいています。

従来、SREの実践は、ITオペレーションやシステム管理タスクの実行に重点が置かれていました。これらのタスクには、ログの分析、パフォーマンス・チューニング、パッチの適用、本番環境のテスト、インシデント管理、ポストモーテムの実施などが含まれます。これらの作業は当初すべて手動で行われていたため、時間がかかり、人的ミスが発生しやすいものでした。SREのモダナイゼーションでは、これらの手動タスクを自動化することが重視されています。

監視とロギングは、SREにおいて重要な役割を果たします。SREチームは監視ツールを使用して、ソフトウェアシステム内で何が起きているかをリアルタイムで把握します。監視により、発生している技術的な問題を即座に修正できるだけでなく、将来的な問題を予測し、発生前に対処することも可能になります。

ログは、システムがどのように機能しているかの洞察を得るためのアーカイブとして機能し、システムの可観測性の向上にも役立てることができます。ロギングは、SREチームが予期しないエラーの原因となった一連のイベントを把握するためのロードマップを提供します。エンジニアはこれにより、エラーの修復を自動化し、再発を防止することができます。監視とロギングの両方は、エンジニアが障害の発生箇所を特定し、それらの問題を自動化によってプログラム的に解決できるようにすることで、手動で修正する必要をなくします。

SREチームはまた、カオス・エンジニアリングと呼ばれるプロセスを通じて、システムの欠陥を探します。カオス・エンジニアリングとは、サイト信頼性エンジニアが本番環境およびプレ本番環境であえて障害を引き起こす戦略です。その目的は、本番環境での障害がソフトウェア・システムに与える影響を理解し、将来の障害を軽減するためのより強力な対策を策定することにあります。

さらに、SREはキャパシティー・プランニングにも注力します。これは、重要なビジネス機能を運用・拡張し、新しいアプリケーションや機能を開発するために必要なリソースを決定するプロセスです。加えて、SREチームは、アップデートの提供状況や新機能の導入状況を評価するためのメトリクスも設定します。

ビジネス街をバックにスマホを持つ手

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

SREのメトリクス

サイト信頼性エンジニアは、サービス提供の一貫性やソフトウェア・システムの信頼性を追跡するために、さまざまなメトリクスを活用します。

  • サービス・レベル契約(SLA)
  • エラー・バジェット
  • サービス・レベル目標(SLO)
  • サービス・レベル・インジケーター(SLI)

サービス・レベル契約(SLA)

SLAは、サービス提供者と顧客の間で締結される契約であり、提供するサービスの内容や条件を定めたものです。SLAでは、パフォーマンスの基準、パフォーマンスを測定するための合意済みの指標、そしてサービスの提供に失敗した場合の影響について明記されます。SLAで一般的に定められるサービス内容としては、アップタイム、つまりサービスが利用可能である時間の長さが挙げられます。

エラー・バジェット

エラー・バジェットは、SREチームが企業のソフトウェア開発とイノベーションのペースとサービスの信頼性を自動的に調整するために使用するツールです。エラー・バジェットは、サービス・レベル契約(SLA)に沿った許容可能なエラーのリスク水準を定めるものです。

たとえば「99.999%のアップタイム目標」、いわゆる「ファイブナイン(five-nines)可用性」は、一般的なSLAの目標値としてよく用いられます。つまり、特定の月において契約上の義務を違反せず許容されるダウンタイムの合計時間は約4分23秒になります。開発チームが新機能や改善をシステムに導入したい場合、そのシステムがエラー・バジェットを超過していないことが条件となります。

エラー・バジェットは、開発チームとオペレーション・チームがサービスの安定性とパフォーマンスを向上させるのに役立ちます。また、新機能やアプリケーションのデプロイに関してデータに基づいた意思決定を可能にし、許容可能な範囲でリスクを取ることでイノベーションを最大化する手助けにもなります。

サービス・レベル目標(SLO)

SREチームは、サービスレベル目標(SLO)の設定にも関与します。SLOは、特定のサービスに対して合意された一定期間内のパフォーマンス目標です。SLOはサービスに期待される状態を定義し、利害関係者が特定のサービスの健全性を管理し、SLAを達成するうえで役立ちます。

サービス・レベル・インジケーター(SLI)

SLOは、サービスレベル指標(SLI)によって測定されます。SLIは、パーセンテージ、平均値、またはレートとして示される定量的な測定値です。これには、アップタイム、レイテンシー、スループット、エラー率など、サービスの実際の測定値が含まれます。

IBM DevOps

DevOpsとは

Andrea Crawfordが、DevOpsとは何か、DevOpsの価値、そしてDevOpsのプラクティスとツールがアイデア考案から本番環境までのソフトウェア・デリバリー・パイプライン全体でアプリケーションを動かすのにどのように役立つかについて説明します。IBMのエキスパートが指導するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資の優先順位付けに必要な知識を得られるように設計されています。

SREとDevOps

DevOpsは、ソフトウェア開発チームとITオペレーション・チームの作業を組み合わせて自動化することで、高品質のアプリケーションとサービスの提供を加速するソフトウェア開発アプローチです。DevOpsは、ソフトウェア開発ライフサイクル(SDLC)の自動化を支援し、開発チームとオペレーション・チームにより多くの責任を共有させるとともに、関係するすべての利害関係者がSDLCに意見を反映できるようにします。

SREとDevOpsは、ソフトウェア・エンジニアリングにおける相補的な戦略であり、サイロを取り払い、より効率的で信頼性の高いソフトウェアの提供につながります。

DevOpsチームが「このソフトウェアは何をすべきか?」という問いに取り組む一方で、SREチームは「このソフトウェアをどのようにデプロイし、保守すれば、必要なときに正しく動作するか?」という問いに取り組みます。SREチームは、ソフトウェア・パフォーマンス・データに関する現実世界のデータをDevOpsチームに提供し、実用的なデータをソフトウェア開発の理論的な世界にもたらします。

SREと同様に、DevOpsもアプリケーションや変更を迅速に提供する必要性と、本番環境を破壊しないようにする必要性のバランスを取ることで、企業の俊敏性を高めます。SREとDevOpsはどちらも、許容可能なエラー・リスクを定めることで、このバランスの実現を目指します。DevOpsチームは更新や新機能のデプロイに重点を置き、SREの実践は、スケーリングに対応しながらシステムの信頼性を守ることに取り組みます。

DevOpsとSREのチームは、やり取りの方法を効率化し、継続的なフィードバックループを確立します。このループは次のように機能します。SREチームがエラーの根本原因を特定すると、その結果をDevOpsチームに送信し、DevOpsチームは次のソフトウェア・バージョン向けに更新を開発します。その間、SREは問題を解決するための自動化を構築し、監視およびログ・データを追跡して、問題が解消されたことを確認します。

SREのメリット

SREは、DevOpsの成功を支えるだけでなく、組織に以下のようなメリットをもたらします。

  • すべての組織内サービスにわたってメトリクス、ログ、トレースを追跡することでサービスの健全性をより可視化し、根本原因分析の能力を強化する。

  • 顧客との日々のやり取りや、ユーザー・データをDevOpsチームと共有する協働によって、ソフトウェア・システムの信頼性を向上させる。

  • 手作業の負担を取り除き、エラーを削減し、より正確に問題を解決する自動化によって、ソフトウェア・システムをスケーリングする。

  • SLA違反のコストを開発チームおよびオペレーション・チームに理解させ、また、システムの信頼性が本番環境、営業、マーケティング、カスタマー・サービス、その他の業務機能に与える影響を経営層が定量的に把握できるようにすることで、ダウンタイムや障害のコストを数値化する。

  • インシデントへの対応を最適化するには、効率的なオンコール・プロセスを構築し、アラート・ワークフローを簡略化することが重要。

  • ネットワークの最新の運用センターを構築するには、IT運用に関する深い理解と機械学習、自動化を組み合わせて、問題に対処する担当者に直接アラートを送信する。

SRE、クラウド、クラウドネイティブ開発

組織が従来のITやオンプレミスのデータセンターからハイブリッドクラウド移行する際、運用データの量が増加することがよくあります。SREは、このデータを活用してシステム管理、運用、インシデント対応を自動化し、IT環境がより複雑になる中で、エンタープライズの信頼性を向上させるうえで重要な役割を果たします。

クラウドネイティブな開発アプローチ、具体的にはアプリケーションをマイクロサービスとして構築し、コンテナに展開すると、アプリケーションの開発、展開、拡張が簡素化されます。ただし、クラウドネイティブな開発は、管理、IT運用、管理を複雑にするように、ますます分散していく環境を作り出します。

SREチームは、クラウドネイティブなアプローチによって実現される迅速なイノベーションを支えながら、DevOpsチームにさらなるオペレーション負荷をかけることなく、システムの信頼性を向上させることができます。

関連ソリューション
IBM Instana Observability

AIとオートメーションの力を活用することで、問題がアプリケーション・スタック全体でプロアクティブに解決します。

IBM Instana Observabilityの詳細はこちら
オートメーション・コンサルティング・サービス

単純なタスクの自動化だけではなく、注目度が高く、顧客と接し、収益を生み出すプロセスを、組み込み型の導入とスケーリングで処理しましょう。

オートメーション・コンサルティング・サービスの詳細はこちら
AIOpsソリューション

ITオペレーション用AIを活用して、優れた業績を実現するための洞察を得られる方法をご紹介します。

AIOpsソリューションの詳細はこちら
次のステップ

ITオペレーション用AIを活用して、優れた業績を実現するための洞察を得られる方法をご紹介します。

Instana Observabilityはこちら Instanaを試す