2023年1月13日

SRM

サービスレベル目標(SLO)管理の概要

この記事では、サービスレベル目標(SLO)管理と、サービスレベル目標の使用がサイトの信頼性管理の重要な要素であることを説明します。

harness_srm.png

サイト信頼性エンジニアリング(SRE)チームの主な責任の1つは、アプリケーションの信頼性を確保すること、またはアプリケーションが利用可能でエンドユーザーが期待通りに使えていることを確認することです。アプリケーションの信頼性を測定する1つの方法は、サービスレベル目標(SLO)を使うことです。

 

ソフトウェアデリバリーの世界では、新しいソフトウェア機能を迅速にデリバリーすることと、顧客が必要なときに信頼して利用できるアプリケーションサービスを提供することとの間で、終わりのない葛藤が続いています。SLO管理は、ソフトウェアの速度と信頼性のニーズのバランスを取ることを目的としています。この記事では、サービスレベル目標(SLO)管理と、サービスレベル目標の使用がサイトの信頼性管理の重要な要素であることを説明します。

harness_srm_1.pngサービスレベルの用語

SLO管理には、知っておくことが大事な、独自の用語と頭字語があります。

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

サービスレベル目標(SLO)は、組織が顧客またはユーザーへの提供を目指すサービスの目標レベルです。効果的なSLOは、組織が高レベルのサービスを顧客に提供し、ビジネス目標を達成していることを保証します。具体的には、アプリケーションサービスの信頼性に関連する組織内の目標です。内部SLOは、組織外に伝達されることはなく、法的拘束力もありません。

SLO管理

SLO管理とは、サービスの目標レベルの設定と維持、実際のシステムパフォーマンスの監視と測定が含まれ、目標レベルを確実に満たすことです。また管理には、稼働時間、応答時間、エラー率、その他パフォーマンスメトリックの目標設定などが含まれます。次に、SREチームはこれらの指標を監視、分析して、発生する可能性のある問題を特定して対処します。

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

サービスレベルインジケーター(SLI)は、サービスの正常性に関する洞察を教えてくれます。これは、特定のサービス レベル指標が満たされているかどうかを示すために使われるコアメトリックです。

サービスレベルアグリーメント(SLA)

サービスレベルアグリーメント(SLA)は、サービスが約束通りの目標達成できなかった場合の影響を説明する、ビジネスチームと法務チームによってお客様に伝える法的な合意です。例えばシステムの可用性について、アップタイムが約束されたレベルを下回った場合、サービスプロバイダーは料金をお支払いいただいているお客様に対し、罰金、または違約金を支払うことになります。

エラーバジェット

エラーバジェットはツールであり、SREと開発チームが協力して、信頼性の目標を確実に達成することでリリース速度を制御するのに役立ちます。エラーバジェットとは、お客様に影響が及ぶ前にサービスの特定の期間にわたって蓄積できるSLO違反の許容範囲なのです。システムを頻繁に変更する場合、失敗は避けられません。従って、プロセスの一部として失敗を正常化することで、チームはイノベーションとSLA違反リスクのバランスを取ることができます。

SLAターゲットとSLOターゲットの関係

SLAとSLOの間に直接的な関係がある必要はありませんが、ほとんどの場合、関係があります。多くの信頼性チームは、迅速かつ簡単な出発点として、既存のSLAに基づいてSLOを設定しています。例えば、サービスのSLAが99.9%の可用性である場合、同じサービスの適切なSLOは99.95%になる可能性があります。SLOは、チームによるSLA違反を先立って厳密に防ぐ必要があるため、SLOはSLAよりも制限的です。

サービスレベル目標とサービスレベルインジケーターを定義、管理する方法

SLIの設定

信頼性の目標では、ビジネスニーズの考慮が必要です。SLIメトリックは、監視または可観測性ソリューションによって提供されます。SLIは、必ずしも全ての個々のサービスではなく、コアアプリケーション、もしくは特定のサービスのカスタマーエクスペリエンスを反映する必要があります。メトリックが多すぎると、チームの集中力が妨げられるだけです。

 

一般的なSLIにはレイテンシー、可用性、スループット、エラー率という4つのゴールデンシグナルが含まれます。そして上記のうち、それぞれの実装方法を検討する必要があるのです。例えば、レイテンシー(応答時間とも呼ばれます)は、アプリケーションを流れる全てのトランザクション、または最も重要なトランザクションのサブセット(ログイン、支払いの送信、カートへの追加など)について測定できます。

 

お客様のエクスペリエンスを意味のあるものにする指標を選択し、そのメトリックのしきい値も定義する必要があります。

SLOの設定

SLOの定義は、信頼性チームが推進する共同プロセスです。SLOは意思決定の主要な原動力として機能するため、速度と信頼性の適切なバランスを見つられます。SLOに違反すると、新機能のリリース前にサービスを安定させるため、最終的にエンジニアリングに圧力をかけるアクティビティーがスタートするかもしれません。

 

各SLIには、関連付けられたSLOがあります(SLOごとに複数のSLIを持つ可能性があります)。定義するSLOは、SLIの設定時に定義したしきい値に準拠する必要があるリクエストの割合です。

サービスレベル目標の計算

計算されたSL=定義されたしきい値を満たすリクエストの数/リクエストの総数×100

例:

2454件のログインリクエストが1分間に100ミリ秒未満で完了

その1分間で合計2522のログイン要求

計算されたSLO=2454/2522*100

計算されたSLO=その1分間の97.3%

エラーバジェットの設定

エラーバジェットは、定義された期間にわたって分単位で測定されます。例えば、SLOが99.5%に設定されている場合、関連する1週間当たりのエラーバジェット(失敗の余地)は50分です。エラーバジェットが使い果たされたら、チームは新機能のデプロイを中止し、サービスの品質と信頼性に集中する必要があります。

 

一般的にエラーバジェットとは、システムの信頼性を高め、可能な限りユーザーが使用できるようにするのと同時に、必要な変更や改善に柔軟に対処できる便利なツールです。

通知とアラート:よくある間違い

環境で信頼性の問題が発生している場合は、それを把握しておきたいでしょう。「何について警告したいか」を慎重に検討する必要があります。アラートが多すぎたり少なすぎたりすると、チームが重要な信頼性の問題を見逃す可能性があります。

 

一番大切なことは、信頼性目標が達成されない場合、カスタマーエクスペリエンスの低さを示すことです。1分間の違反が月に1回だけ発生したとしても、その短い時間枠でしか起こらないのであれば、エンドユーザーにとって意味がないため、アラートを受け取りたくないでしょう。

 

SLO違反が頻繁に発生すると、エラーバジェットの消費率が上がり、残りのエラーバジェットが減少します。エラーバジェットの減少は、Slackやメールなどで通知を送信する時間です。

SLO管理に完璧さは必要ない(望まれていない)

目標として100%の信頼性を設定したくなるかもしれませんが、完璧は不可能です。これは単に、「本番環境に変更を加えない」という選択したという意味であり、きっと賢明なビジネス上の決定ではありません。新機能を適切な速度で提供できるよう、測定可能で具体的な信頼性の目標を設定することが、顧客の満足につながります。このバランスを見出すことは、ビジネスで打ち勝つために必要な、優れたソフトウェア体験を生み出すために大切です。

 

SLOの確立とエラーバジェットの作成は長い道のりではありますが、その結果は投資に見合ったものです。SLO管理についてもっと学ぶ準備はできましたか?Harness Service Reliability Managementのデモをリクエストしてください。


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。


 

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ