SREは、DevOpsサイクルにおけるレジリエンス、冗長性、信頼性を支えるとともに、ソフトウェア・プログラムの日々の実装にも関与します。サイト信頼性エンジニアは一般的に「50:50ルール」に従い、時間の半分をエスカレーション対応やインシデント対応などの顧客対応に、もう半分をITオペレーションの自動化に充てます。これらの業務には、本番システムの管理、チェンジ・マネジメント、インシデント対応、緊急対応などが含まれます。
SREチームは、ソフトウェア開発者が意図した動作と、実際の運用環境での動作とのギャップを埋める役割を担います。サイト信頼性エンジニアは顧客と直接やり取りを行い、トラブルシューティングを行うとともに、ユーザー体験に関するデータを収集します。そしてこのデータを開発チームへフィードバックし、ソフトウェアの実際の性能や必要な更新についての洞察を提供します。
SREは、障害の発生は避けられないという前提に立っています。彼らの役割は、根本原因分析などのプロセスを通じて即時の問題の原因を特定し、さらに監視やログデータを活用して将来的な障害の予兆を見つけることです。そして、それらの問題に対応するためのオートメーションを構築し、システムにレジリエンスと冗長性を組み込んでいきます。
大規模なソフトウェア・システムに対するこの自動化された監視により、システム管理者がIT運用作業を手動で実行する必要が減少します。手動作業を排除することで、ITチームは時間を節約し、運用業務をより正確に実行できるようになり、アプリケーションのパフォーマンス維持に専念することが可能になります。
サイト信頼性エンジニアは、ソフトウェア開発とIT運用の両方に関する経験を必要とする技術職です。これらの職務を理解することで、SREチームはソフトウェア開発ライフサイクルを支援するという役割を果たすことができます。SREは、プロセスを一貫して自動化することでレジリエンスを実現するという戦略に基づいています。
従来、SREの実践は、ITオペレーションやシステム管理タスクの実行に重点が置かれていました。これらのタスクには、ログの分析、パフォーマンス・チューニング、パッチの適用、本番環境のテスト、インシデント管理、ポストモーテムの実施などが含まれます。これらの作業は当初すべて手動で行われていたため、時間がかかり、人的ミスが発生しやすいものでした。SREのモダナイゼーションでは、これらの手動タスクを自動化することが重視されています。
監視とロギングは、SREにおいて重要な役割を果たします。SREチームは監視ツールを使用して、ソフトウェアシステム内で何が起きているかをリアルタイムで把握します。監視により、発生している技術的な問題を即座に修正できるだけでなく、将来的な問題を予測し、発生前に対処することも可能になります。
ログは、システムがどのように機能しているかの洞察を得るためのアーカイブとして機能し、システムの可観測性の向上にも役立てることができます。ロギングは、SREチームが予期しないエラーの原因となった一連のイベントを把握するためのロードマップを提供します。エンジニアはこれにより、エラーの修復を自動化し、再発を防止することができます。監視とロギングの両方は、エンジニアが障害の発生箇所を特定し、それらの問題を自動化によってプログラム的に解決できるようにすることで、手動で修正する必要をなくします。
SREチームはまた、カオス・エンジニアリングと呼ばれるプロセスを通じて、システムの欠陥を探します。カオス・エンジニアリングとは、サイト信頼性エンジニアが本番環境およびプレ本番環境であえて障害を引き起こす戦略です。その目的は、本番環境での障害がソフトウェア・システムに与える影響を理解し、将来の障害を軽減するためのより強力な対策を策定することにあります。
さらに、SREはキャパシティー・プランニングにも注力します。これは、重要なビジネス機能を運用・拡張し、新しいアプリケーションや機能を開発するために必要なリソースを決定するプロセスです。加えて、SREチームは、アップデートの提供状況や新機能の導入状況を評価するためのメトリクスも設定します。
サイト信頼性エンジニアは、サービス提供の一貫性やソフトウェア・システムの信頼性を追跡するために、さまざまなメトリクスを活用します。
SLAは、サービス提供者と顧客の間で締結される契約であり、提供するサービスの内容や条件を定めたものです。SLAでは、パフォーマンスの基準、パフォーマンスを測定するための合意済みの指標、そしてサービスの提供に失敗した場合の影響について明記されます。SLAで一般的に定められるサービス内容としては、アップタイム、つまりサービスが利用可能である時間の長さが挙げられます。
エラー・バジェットは、SREチームが企業のソフトウェア開発とイノベーションのペースとサービスの信頼性を自動的に調整するために使用するツールです。エラー・バジェットは、サービス・レベル契約(SLA)に沿った許容可能なエラーのリスク水準を定めるものです。
たとえば「99.999%のアップタイム目標」、いわゆる「ファイブナイン(five-nines)可用性」は、一般的なSLAの目標値としてよく用いられます。つまり、特定の月において契約上の義務を違反せず許容されるダウンタイムの合計時間は約4分23秒になります。開発チームが新機能や改善をシステムに導入したい場合、そのシステムがエラー・バジェットを超過していないことが条件となります。
エラー・バジェットは、開発チームとオペレーション・チームがサービスの安定性とパフォーマンスを向上させるのに役立ちます。また、新機能やアプリケーションのデプロイに関してデータに基づいた意思決定を可能にし、許容可能な範囲でリスクを取ることでイノベーションを最大化する手助けにもなります。
SREチームは、サービスレベル目標(SLO)の設定にも関与します。SLOは、特定のサービスに対して合意された一定期間内のパフォーマンス目標です。SLOはサービスに期待される状態を定義し、利害関係者が特定のサービスの健全性を管理し、SLAを達成するうえで役立ちます。
DevOpsは、ソフトウェア開発チームとITオペレーション・チームの作業を組み合わせて自動化することで、高品質のアプリケーションとサービスの提供を加速するソフトウェア開発アプローチです。DevOpsは、ソフトウェア開発ライフサイクル(SDLC)の自動化を支援し、開発チームとオペレーション・チームにより多くの責任を共有させるとともに、関係するすべての利害関係者がSDLCに意見を反映できるようにします。
SREとDevOpsは、ソフトウェア・エンジニアリングにおける相補的な戦略であり、サイロを取り払い、より効率的で信頼性の高いソフトウェアの提供につながります。
DevOpsチームが「このソフトウェアは何をすべきか?」という問いに取り組む一方で、SREチームは「このソフトウェアをどのようにデプロイし、保守すれば、必要なときに正しく動作するか?」という問いに取り組みます。SREチームは、ソフトウェア・パフォーマンス・データに関する現実世界のデータをDevOpsチームに提供し、実用的なデータをソフトウェア開発の理論的な世界にもたらします。
SREと同様に、DevOpsもアプリケーションや変更を迅速に提供する必要性と、本番環境を破壊しないようにする必要性のバランスを取ることで、企業の俊敏性を高めます。SREとDevOpsはどちらも、許容可能なエラー・リスクを定めることで、このバランスの実現を目指します。DevOpsチームは更新や新機能のデプロイに重点を置き、SREの実践は、スケーリングに対応しながらシステムの信頼性を守ることに取り組みます。
DevOpsとSREのチームは、やり取りの方法を効率化し、継続的なフィードバックループを確立します。このループは次のように機能します。SREチームがエラーの根本原因を特定すると、その結果をDevOpsチームに送信し、DevOpsチームは次のソフトウェア・バージョン向けに更新を開発します。その間、SREは問題を解決するための自動化を構築し、監視およびログ・データを追跡して、問題が解消されたことを確認します。
SREは、DevOpsの成功を支えるだけでなく、組織に以下のようなメリットをもたらします。
組織が従来のITやオンプレミスのデータセンターからハイブリッドクラウドへ移行する際、運用データの量が増加することがよくあります。SREは、このデータを活用してシステム管理、運用、インシデント対応を自動化し、IT環境がより複雑になる中で、エンタープライズの信頼性を向上させるうえで重要な役割を果たします。
クラウドネイティブな開発アプローチ、具体的にはアプリケーションをマイクロサービスとして構築し、コンテナに展開すると、アプリケーションの開発、展開、拡張が簡素化されます。ただし、クラウドネイティブな開発は、管理、IT運用、管理を複雑にするように、ますます分散していく環境を作り出します。
SREチームは、クラウドネイティブなアプローチによって実現される迅速なイノベーションを支えながら、DevOpsチームにさらなるオペレーション負荷をかけることなく、システムの信頼性を向上させることができます。
AIとオートメーションの力を活用することで、問題がアプリケーション・スタック全体でプロアクティブに解決します。
単純なタスクの自動化だけではなく、注目度が高く、顧客と接し、収益を生み出すプロセスを、組み込み型の導入とスケーリングで処理しましょう。
ITオペレーション用AIを活用して、優れた業績を実現するための洞察を得られる方法をご紹介します。