サイト信頼性エンジニアリングとは何ですか?
サイト信頼性エンジニアリング(SRE)は、ソフトウェアツールを使用して、システム管理やアプリケーション監視などのITインフラストラクチャタスクを自動化する方法です。組織はSREを使用して、開発チームからの頻繁な更新の中でソフトウェアアプリケーションの信頼性を維持します。ソフトウェアを使用して大規模システムを管理する方が、数百台のマシンを手動で管理するよりも持続可能であるため、SREは特にスケーラブルなソフトウェアシステムの信頼性を向上させます。
サイト信頼性エンジニアリングが重要なのはなぜですか?
サイトの信頼性は、エンドユーザーに利用可能な状態となった後にアプリケーションが提供するサービスの安定性と質を表します。技術的な問題が検出されなかった場合、ソフトウェアメンテナンスがソフトウェアの信頼性に影響を及ぼすことがあります。例えば、デベロッパーが新しい変更を加えると、意図せずに既存のアプリケーションに影響を及ぼし、特定のユースケースでクラッシュを引き起こす可能性があります。
サイト信頼性エンジニアリング (SRE) プラクティスのいくつかのメリットを次に示します。
チーム間の
SRE は、開発チームと運用チームの間のコラボレーションを改善します。デベロッパーは、新機能をリリースしたり、重大なバグを修正したりするために、アプリケーションに対して迅速に変更を加えなければならないことがよくあります。一方、運用チームはシームレスなサービスが提供されるようにする必要があります。したがって、運用チームは SRE プラクティスを使用してすべての更新を綿密にモニタリングし、変更によって発生する問題に速やかに対応します。
カスタマーエクスペリエンスの強化
組織は、ソフトウェアエラーがカスタマーエクスペリエンスに影響を及ぼさないようにするために、SRE モデルを使用します。例えば、ソフトウェアチームは、SRE ツールを使用してソフトウェア開発ライフサイクルを自動化します。これによってエラーが少なくなり、チームはバグ修正よりも新機能の開発を優先することができます。
運用計画の改善
SRE チームは、ソフトウェアが故障する現実的な可能性があることを認識しています。したがって、チームは、ダウンタイムがビジネスおよびエンドユーザーに及ぼす影響を最小限に抑えるために、適切なインシデント対応を計画します。また、ダウンタイムのコストをより的確に見積もり、そのようなインシデントが事業運営にもたらす影響を理解することもできます。
サイト信頼性エンジニアリングの主要な原則はどのようなものですか?
サイト信頼性エンジニアリング (SRE) のいくつかの主要な原則を次に示します。
アプリケーションのモニタリング
SRE チームは、エラーがソフトウェアデプロイプロセスの一環であることを認識しています。完璧なソリューションを追求する代わりに、サービスレベルアグリーメント (SLA)、サービスレベル指標 (SLI)、およびサービスレベル目標 (SLO) の観点からソフトウェアパフォーマンスをモニタリングします。本番稼働環境にアプリケーションをデプロイした後、パフォーマンスメトリクスを観測およびモニタリングします。
段階的な変更の実装
SRE のプラクティスでは、システムの信頼性を維持するために、頻繁ではありながら小規模な変更のリリースが奨励されています。SRE オートメーションツールは、一貫性がありながら反復可能なプロセスを使用して次を実行します。
- 変更を理由とするリスクを軽減します
- システムパフォーマンスを測定するフィードバックループを提供します
- 変更の実装の速度と効率を高めます
信頼性向上のためのオートメーション
SRE では、デリバリーパイプラインのあらゆるステップに信頼性の原則を組み込んだポリシーとプロセスを使用します。問題を自動的に解決するいくつかの戦略を次に示します。
- 問題を早期に検出するためのサービスレベル目標に基づく品質ゲートを開発する
- サービスレベル指標を使用して構築テストを自動化する
- ソフトウェア開発の初期段階で、システムが高い回復力を備えるようにするアーキテクチャ上の意思決定を行う
サイト信頼性エンジニアリングにおけるオブザーバビリティとは何ですか?
オブザーバビリティは、ソフトウェアがエンドユーザー向けにゴーライブになるときに、ソフトウェアチームが不確実性に備えるためのプロセスです。サイト信頼性エンジニアリング (SRE) チームは、ツールを使用してソフトウェアの異常な動作を検出し、さらに重要なことに、デベロッパーが問題の原因を理解するのに役立つ情報を収集します。オブザーバビリティには、SRE ツールを使用して次の情報を収集することが含まれます。
メトリクス
メトリクスは、アプリケーションのパフォーマンスまたはシステムの状態を反映する定量化可能な値です。SRE チームはメトリクスを使用して、ソフトウェアがリソースを過剰に消費していないか、異常な動作をしていないかを判断します。
ログ
SRE ソフトウェアは、特定のイベントに対応して、ログと呼ばれるタイムスタンプ付きの詳細な情報を生成します。ソフトウェアエンジニアは、特定の問題につながる一連のイベントを理解するためにログを使用します。
トレース
トレースは、分散システム内の特定の関数のコードパスの観察結果です。例えば、注文カートのチェックアウトには次が含まれる場合があります。
- データベースで価格を照合する
- ペイメントゲートウェイを使用して認証する
- ベンダーに発注する
トレースは、ID、名前、および時間で構成されます。これらは、ソフトウェアデベロッパーがレイテンシーの問題を検出し、ソフトウェアのパフォーマンスを改善するのに役立ちます。
サイト信頼性エンジニアリングにおけるモニタリングとは何ですか?
モニタリングは、アプリケーションで事前定義されたメトリクスを観測するプロセスです。デベロッパーは、アプリケーションの状態を判断する上で重要なパラメータを決定し、それらをモニタリングツールで設定します。サイト信頼性エンジニアリング (SRE) チームは、システムパフォーマンスを反映する重要な情報を収集し、グラフで視覚化します。
SRE では、ソフトウェアチームがこれらのメトリクスをモニタリングして、システムの信頼性に関するインサイトを取得します。
レイテンシー
レイテンシーは、アプリケーションがリクエストに応答するまでの遅延を表します。例えば、ウェブサイトでフォームを送信すると、確認のためのウェブページがユーザーに表示されるまでに 3 秒かかります。
トラフィック
トラフィックは、サービスに同時にアクセスするユーザーの数を測定します。これは、すべてのユーザーに満足のいくサービスレベルを維持するために、ソフトウェアチームがコンピューティングリソースを適切に予算化するのに役立ちます。
エラー
エラーとは、アプリケーションが想定どおりに実行または配信しない状態をいいます。例えば、ウェブページのロードに失敗したり、トランザクションが完全に実行されなかったりした場合、SRE チームはソフトウェアツールを使用して、アプリケーションのエラーを自動的に追跡して対応します。
飽和
飽和は、アプリケーションのリアルタイムの容量を示します。通常、飽和レベルが高くなると、パフォーマンスは低下します。サイト信頼性エンジニアは、飽和レベルをモニタリングし、特定のしきい値を下回っているようにします。
サイト信頼性エンジニアリングの主要なメトリクスにはどのようなものがありますか?
サイト信頼性エンジニアリング (SRE) チームは、次のメトリクスを使用して、サービス提供の質と信頼性を測定します。
サービスレベル目標
サービスレベル目標 (SLO) は、次のような他のメトリクスに照らして、合理的なコストでソフトウェアが達成できることを確信できる、具体的で定量化可能な目標をいいます。
- 稼働時間、またはシステムが運用されている時間
- システムスループット
- システム出力
- ダウンロード速度、またはアプリケーションがロードする速度
SLO は、ソフトウェアを通じた顧客への提供を約束します。例えば、会社のフードデリバリーアプリケーションについて、99.95% の稼働時間の SLO を設定したとします。
サービスレベル指標
サービスレベル指標 (SLI) は、SLO が定義するメトリクスの実際の測定値です。実際の状況では、SLO と一致する値、または異なる値を取得することがあります。例えば、アプリケーションの稼働時間が 99.92% であり、これは約束された SLO よりも低いです。
サービスレベルアグリーメント
サービスレベルアグリーメント (SLA) は、1 つ以上の SLO が満たされない場合に生じる結果を記載した法的文書です。例えば、SLA は、テクニカルチームが報告を受けてから 24 時間以内に顧客の問題を解決すると規定しています。チームが指定された期間内に問題を解決できなかった場合、お客様に返金する義務がある場合があります。
エラーバジェット
エラーバジェットは、SLO に対する非準拠の許容度です。例えば、SLO で 99.95% のアップタイムは、許容されるダウンタイムが 0.05% であることを意味します。ソフトウェアのダウンタイムがエラーバジェットを超える場合、ソフトウェアチームはアプリケーションを安定させるためにすべてのリソースを投入し、注意を払います。
サイト信頼性エンジニアリングはどのように機能しますか?
サイト信頼性エンジニアリング (SRE) では、サイト信頼性エンジニアがソフトウェアチームに参加します。SRE チームは、SRE の主要なメトリクスを設定し、システムのリスク許容度によって決定されるエラーバジェットを作成します。エラーの数が少ない場合、開発チームは新機能をリリースできます。ただし、エラーが許容されるエラーバジェットを超えると、チームは新しい変更を保留にし、既存の問題を解決します。
例えば、サイト信頼性エンジニアがサービスを使用してパフォーマンスメトリクスをモニタリングし、異常なアプリケーション動作を検出します。アプリケーションに問題がある場合、SRE チームはソフトウェアエンジニアリングチームにレポートを提出します。デベロッパーは報告されたケースを修正し、更新されたアプリケーションを公開します。
DevOps
DevOps は、開発チームと運用チームの従来の境界を打ち破るソフトウェア文化です。DevOps により、デベロッパーや運用エンジニアはサイロで作業しなくなりました。代わりに、ソフトウェアツールを使用してコラボレーションを改善し、ソフトウェアの更新リリースの急速なペースに対応しています。
DevOps と比較した SRE
SRE は DevOps の実用的な実装です。DevOps は、開発期間がますます短縮される中で、ソフトウェアの品質を維持するために実行しなければならないことの哲学的基盤を提供します。サイト信頼性エンジニアリングは、DevOps をどのように成功させればよいのかという問いに対する答えを提供します。SRE は、DevOps チームがスピードと安定性の適切なバランスを取ることができるようにします。
サイト信頼性エンジニアの責任はどのようになっていますか?
サイト信頼性エンジニアは、オートメーションツールを使用して本番稼働環境におけるソフトウェアの信頼性をモニタリングおよび観測する IT のエキスパートです。また、ソフトウェアの問題を発見し、それを修正するためのコードを記述する経験も有しています。これらのエンジニアは通常、優れたコーディングスキルを持つ元システム管理者または運用エンジニアです。サイトの信頼性に関するいくつかの責任を次に示します。
運用担当
サイト信頼性エンジニアは、多ければ勤務時間の半分を運用業務に費やしています。これには、次のようないくつかのタスクが含まれます。
- 緊急インシデント対応
- 変更管理
- IT インフラストラクチャ管理
エンジニアは、SRE ツールを使用して、複数の運用タスクを自動化し、チームの効率を高めます。
システムサポート
サイト信頼性エンジニアは、開発チームと緊密に連携して、新機能を生み出し、本番稼働システムを安定させます。これらのエンジニアは、ソフトウェアチーム全体のために SRE プロセスを作成し、エスカレーションの問題をサポートできるよう備えています。さらに重要なことに、サイト信頼性チームはカスタマーサポートに文書化された手順を提供し、苦情に効果的に対応するのをサポートします。
プロセスの改善
サイト信頼性エンジニアは、インシデント後のレビューを行うことで、ソフトウェア開発のライフサイクルを改善します。SRE チームは、すべてのソフトウェアの問題とそれぞれの解決策を共有ナレッジベースに文書化します。これは、ソフトウェアチームが将来同様の問題に効率的に対応するのに役立ちます。
一般的なサイト信頼性エンジニアリングツールにはどのようなものがありますか?
サイト信頼性エンジニアリング (SRE) チームは、モニタリング、観測、インシデント対応を容易にするために、さまざまな種類のツールを使用します。
コンテナオーケストレーター
ソフトウェアデベロッパーは、コンテナオーケストレーターを使用して、さまざまなプラットフォームでコンテナ化されたアプリケーションを実行します。コンテナ化されたアプリケーションは、コンテナと呼ばれる単一のパッケージ内にコードファイルと関連リソースを格納します。例えば、ソフトウェアエンジニアは、Amazon Elastic Kubernetes Service (Amazon EKS) を使用してクラウドアプリケーションを実行およびスケールします。
オンコール管理ツール
オンコール管理ツールは、報告されたソフトウェアの問題に対応するサポート担当者を SRE チームが計画、手配、および管理できるようにするソフトウェアです。SRE チームはソフトウェアを使用して、サポートチームがソフトウェアの問題に関していつでも適時にアラートを受信できるようにします。
インシデント対応ツール
インシデント対応ツールは、検出されたソフトウェアの問題に関する明確なエスカレーション経路を確保します。SRE チームはインシデント対応ツールを使用して、報告されたケースの重大度を分類し、速やかに対処します。これらのツールは、同様の問題が再発するのを防ぐために、インシデント後の分析レポートも提供できます。
設定管理ツール
設定管理ツールは、ソフトウェアワークフローを自動化するソフトウェアです。SRE チームはこれらのツールを使用して、反復的なタスクを排除し、生産性を高めます。例えば、サイト信頼性エンジニアは AWS OpsWorks を使用して、AWS 環境でサーバーを自動的に設定および管理します。
AWS はサイトの信頼性エンジニアリングをどのようにサポートできますか?
AWS Management and Governance サービスは、ソフトウェアチームが、システムの信頼性を損なうことなく、分散アプリケーションを構築、スケール、デプロイするために必要なツールを提供します。サイト信頼性エンジニアリング (SRE) チームは、さまざまな AWS Management and Governance サービスを使用して、AWS とオンプレミスのコンピューティングリソースを監視および管理します。
- AWS Service Catalog を使用することで、SRE チームは IT サービスをカタログ化、管理、および迅速にデプロイできます
- AWS Systems Manager は、サイト信頼性エンジニアがソフトウェアコンピューティングリソースに関する運用上のインサイトを得るための一元管理ハブを提供します
- AWS Proton は、コンテナ化されたサーバーレスアプリケーションをデプロイするための自動管理ツールです
今すぐ AWS アカウントを作成して、AWS でサイト信頼性エンジニアリングを開始しましょう。