SLOとはサービスレベルの目標として設定されるものであり、エンジニアとしてどのように関わっていくか把握しておくことで、品質向上に役立てることができます。
同時にSLOで設定する目標や数値は、単なる理想的な目標ではなく、達成可能なものであると理解し、エンジニアとして数値に基づいて行動することも重要と言えるでしょう。
今回はSLOに関する基礎知識、SLOを達成するためにエンジニアが意識すべきこと、SLOを達成するための代表的な施策と理由、SLOを達成することによるメリットについてお話しします。
目次
1.SLOとは?
はじめにSLO関する基礎知識について解説します。
SLOの定義
SLOとは、Service Leve Objectiveの略称であり、企業や組織、ブランドやメーカーにおけるサービスレベルの目標を示したものになります。サービスの提供元とユーザーの間で合意され、契約の基準となるSLA(Service Level Agreement)よりもさらに高い数値や目標を設定するのが一般的です。
SLOはSLAと異なり、品質向上のための目標であるという側面があることも覚えておきましょう。例えば、何らかの項目において100%という目標を設定するのは現実的ではありません。SLOはあくまでもSLAよりも高品質なサービスを提供するための目標であり、達成可能な数値であるということが大前提です。
SLOの目的
SLOの目的は、SLAによって設定した基準よりもさらに品質を向上するために、曖昧な目標ではなく明確な目標を立てて行動できるようにすることにあります。例えば、SLOが明確に設定されていない場合、ユーザー側とすればSLAで定められた以上のパフォーマンスは判断することができません。
同様に事業に携わる従業員においても、品質向上のためのSLA以上の目標が明確でないことで、何に注力すれば品質か向上できるのか分かりにくくなってしまいます。SLOで品質向上の目標となる数値が設定されることで、KPIやタスクが割り振られるようになれば、各部門の管理もしやすくなり、目標達成に向けて行動がしやすくなるのです。
SLOの種類
可用性ベース
パフォーマンスベース
品質ベース
上記はSLOの種類の一例です。可用性ベースとはシステムが利用可能な時間の割合、パフォーマンスベースはシステムが処理できるリクエストの数、品質ベースはシステムの品質を定量的に表したものを意味します。
例えば可用性ベース、31日間の間にSLAで99.9%を契約内容に盛り込み合意してもらった場合、月間3.6時間のダウンタイムは許容してもらえることになります。SLOで99.99%を目標設定とした場合、月間4.32時間ダウンタイムを許容してもらう形です。
大きな違いはSLAの場合は3.6時間を超えてしまうと何らかの賠償や返金などの可能性があること、SLOの場合はあくまでも品質向上のための目標であり、基本的には賠償問題にはなりにくいのが特徴です。同時にSLOで設定した目標に向かって品質の向上を続けることで、SLAの基準を満たしやすくなるという利点があることも覚えておきましょう。
SLOの設定方法
例として何度かお伝えしていますが、SLOはSLAよりも高い数値を設定するのが基本です。前述したようにSLAで可用性を99.9%に設定するのであれば、SLOの場合は99.99%と言ったような形にすることで、品質向上に役立てることができます。
項目 | SLA | SLO |
---|---|---|
可用性 | 99.9% | 99.99% |
パフォーマンス | 1秒以内 | 0.5秒以内 |
サポート | 24時間365日、サポートを提供 | 1時間以内にサポートを提供 |
保守 | 定期的なメンテナンスを実施 | 月1回メンテナンスを実施 |
上記は一例ですが、SLAよりも高い目標を設定しつつ、あくまでも達成できる数値にすることが重要です。実際に表にして比較してみると、SLOの目標を達成するように品質を向上していけば、ほとんどの項目でSLAの基準は満たすことになるのが分かります。言い換えればSLAを目標にして品質を向上していても、SLAを達成できるとは限らない、もしくはギリギリで達成しているような状況になってしまうという難点をカバーしているのがSLOとも言えるでしょう。
SLOの管理方法
SLOの管理方法として、SLOの目標となる数値と、現状の数値が常に比較できるようにしておくことが大切です。その他にどのような形で管理すべきかいくつかあげてみます。
定量的な数値にすること
リアルタイム、もしくは定点的に正確な数値を可視化すること
急激な変化を察知できるようにしておくこと
状況を分析し改善できる体制を整えておくこと
経営陣及び管理職、現場の従業員が連動できるようにすること
SLOは目標として設定した数値のため、基本的に変わることはありません。上記のような形で該当する項目の数値を把握し、管理できるように努めることが求められます。重要なのはSLOはSLAよりも高い目標設定ではあるものの、明らかに現状が下回るようでは、当然のことながらSLAも下回ってしまうということです。SLAを下回るというのは企業や組織、ブランドやメーカーとして信頼を損ねるだけでなく、金銭的なリスクも生じるということを忘れてはいけません。
2.SLOを達成するためにエンジニアが意識すべきこと
次にSLOを達成するためにエンジニアが意識すべきことについて解説します。
利用者のニーズを理解する
SLOを達成するためにエンジニアが意識すべきこととして、利用者のニーズを理解することが挙げられます。まずは自社の商品やサービスの性質を理解し、ターゲットやペルソナに関する情報収集を行います。その上で利用者であるユーザーがどのような目的で商品の購入や有料サービスを利用しているのか、もしくはアプリを日常的に使っているのかを明確にしましょう。
主な目的である部分が把握できるようになれば、利用者であるユーザーが目的を達成するために快適に利用できるようにするにはどうすべきかが可視化されます。同時に定期的に利用者にアンケートを行ったり、特に多いクレームや問い合わせを集計して分析すること、課題や問題の抽出と改善をすることも大切です。
システムの性能を向上させる
SLOを達成するためにエンジニアが意識すべきこととして、システムの性能を向上させることが挙げられます。先にオンラインサービス以外で例えるとすれば、購入した商品の到着が一週間以内という曖昧な予定よりも、可能であれば翌日届いた方が嬉しいですし、指定した日時に届けてくれるとユーザー的には非常に満足度が高いです。
そしてオンラインサービスで例えた場合は、サービスやアプリが使えない時間が少しでも短い方が良いですし、短い時間で少しでも利用できるようにレスポンスが早い方が満足度は高くなるでしょう。エンジニアとしてシステムの性能を向上させることを意識すべき理由でもあり、SLOに向かって改善やアップデートをしていくことの重要性でもあります。
システムの信頼性を向上させる
SLOを達成するためにエンジニアが意識すべきこととして、システムの信頼性を向上させることが挙げられます。システムの信頼性とは、システムが安全に、安定的に、正常に動作することでもあり、ユーザーが不安な気持ちを持つことなく快適に利用できるようにすることです。システムの性能を向上させることと両立すべきことでもあり、どちらか一方が欠けてしまっては信頼性も損ねますし、安全であっても遅すぎては利用が控えられてしまいます。
SLOを目標としてシステムの信頼性を向上させることで、他の項目との兼ね合いを調整しながら、品質の向上につなげることが可能になるということです。そのためSLOの項目は一つ一つが独立しているというよりも、どれか一つを達成するためにどれかを犠牲にしないことという意識も持つことが重要と言えます。
システムのセキュリティを向上させる
SLOを達成するためにエンジニアが意識すべきこととして、システムのセキュリティを向上させることが挙げられます。セキュリティ対策が甘く、個人情報の流出やサイバー攻撃によるダウンなどに陥ってしまえば、システム以前の問題で提供元の信頼性を損ねてしまうのが理由です。セキュリティの向上を意識しないことで、ユーザー離れや新規ユーザーの獲得が難しくなってしまうことも考えられるでしょう。
ユーザーが本当の意味で安心してサービスやアプリを利用できるようにすること、ユーザー自身の個人情報を預けても大丈夫だと信じてもらえるようにするためにもセキュリティ性の向上は必須ということです。同時にセキュリティ性の向上はシステムの提供元に対する信頼や安心にも関わってきます。同業他社やライバル企業との差別化のためにも、セキュリティ性の向上は欠かせない要素として意識すべきと言えるでしょう。
システムのコスト削減に取り組む
SLOを達成するためにエンジニアが意識すべきこととして、システムのコスト削減に取り組むことが挙げられます。高品質なオンラインサービスやアプリを、継続的に利用できる価格で提供できるようにするのが理由であり、コスト削減によって利益を増やすことも目的です。現実問題としてオンラインサービスやアプリは持続的に利用できるという点が重要になります。
同様に商品の販売などにおいても、継続的な購入やリピーターの獲得には品質に見合った価格で提供する必要があります。オンラインサービスやアプリも同様であり、将来的な売り上げを着実に獲得し、利益を増やしていくためにもコスト削減に関する意識を持つことは大切と言えるでしょう。
3.SLOを達成するための代表的な施策と理由
次にSLOを達成するための代表的な施策と理由について解説します。
システムの負荷テストを行う
システムが想定以上の負荷に耐えられるかチェックするため
システムが異常な動作を起こさないかチェックするため
システムが負荷によってどのような挙動を起こすかチェックするため
負荷テストによって生じた挙動に対応できるようにするため
システムがどのような異常を発生するか把握するため
上記がシステムの負荷テストを行うべき理由の一例です。システムがSLOに基づいた目標を達成するために、通常の安定的な状態だけではなく、異常な状態でどのような挙動があるかをチェックするような形になります。悪意のある第三者によるサイバー攻撃だけでなく、何らかの理由でサービスやホームページに過剰なアクセスがあった場合においても、パフォーマンスを失うことなく稼働するかチェックすることも重要です。
システムの冗長化を行う
システムの一部が故障しても継続して稼働できるかチェックするため
システムの障害発生時に再起動やロールバックをできるようにするため
システム上のデータやデータベースを失わないようにするため
システムを安定化し信頼性を確保するため
想定以上の負荷が発生した場合においても停止させないため
上記がシステムの冗長化を行うべき理由の一例です。システムの冗長化によって何か異常が発生した場合においても、システムを完全に止めずに復旧したり、再起動したりすることができるようになります。同様に個人情報も含めて重要なデータを失わずに住む可能性を高めるためでもあり、セキュリティの面においても重要な施策と言えるでしょう。
システムの監視システムを導入する
システムの異常を検知するため
システムの異常の原因を特定するため
システムが異常を起こす前に対処できるようにするため
サイバー攻撃や内部不正を未然に防ぐため
セキュリティインシデント発生時に被害を最小限にするため
上記がシステムの監視システムを導入するべき理由の一例です。システムを安定的かつ持続的に稼働させるためには、異常を早期に発見し対処する必要が求められます。システムの監視するシステムを導入することで、通常とは異なる状態を検知し、すぐに対処することができれば被害を最小限にすることができるでしょう。異常を検知した時点で対処することで、パフォーマンスを低下させたり、システムを停止させたりする可能性も低くなります。
システムの自動化を行う
人為的な操作によるミスを防ぐため
単純作業の労力と時間を削減するため
自動化によってエンジニアの時間を確保するため
自動化による最適化でコストを削減するため
システムのパフォーマンスを向上させるため
上記がシステムの自動化を行うべき理由の一例です。監視システムの運用も含めて、自動化を行うことでシステムを管理するエンジニアの労力や負担、時間的なコストを大幅に削減することが可能になります。同様に自動化によってシステムのパフォーマンスが一定に保たれるようになれば、ユーザーの利便性を大幅に損ねる可能性も少なくなるでしょう。
システムの保守体制を整備する
故障や不具合の発生時に迅速に対応するため
ユーザーが意識することなく快適にシステムを利用できるようにするため
属人化を排除し、対処できない状況を作らないため
システム関連の人材を育成し確保するため
より安全性の高いシステムにアップデートし続けるため
上記がシステムの保守体制を整備するべき理由の一例です。システムの保守体制については、安定的にシステムを稼働するため、同時に異常発生時に通常の状態に戻すために必須と言えます。そのため、属人化や人材不足によって対応が遅れたり、何らかの理由でセキュリティがアップデートされていなかったりする状況は絶対に避けなくてはなりません。システムの保守や管理のための人材が足りないことのないよう育成できる体制も整えていくことが大切です。
4.SLOを達成することによるメリット
次にSLOを達成することによるメリットについて解説します。
利用者の顧客満足度向上
SLOを達成することによるメリットとして、利用者の満足度向上が挙げられます。SLAよりも厳しい基準であるSLOを達成できれば、必然的に利用者であるユーザーは大きな恩恵を受けるということです。結果として顧客満足度が向上することで、継続的な利用が期待できるようになり、中長期的な売り上げの確保につながるでしょう。
ビジネスの成長
SLOを達成することによるメリットとして、ビジネスの成長が挙げられます。SLOで設定した目標に向かって努力するということは、技術的にも現場で働く従業員的にも成長が求められます。結果として事業活動全体の成長、すなわちビジネスの成長につながるということです。現実問題として企業や組織における成長は非常に難しい部分でもあるため、SLOによる数値での目標は成長のための材料として効果的に働くことが期待できます。
コスト削減
SLOを達成することによるメリットとして、コスト削減が挙げられます。SLOを達成するためには、必然的に生産性の向上も求められます。日々の作業や業務の最適化、可能な部分はデジタル化や自動化によって効率化を進めることでコスト削減につながり、結果として利用者であるユーザーに高品質で納得できるサービスを提供できるようになるのです。同時に企業や組織としても売上からの利益が大きくなり、事業活動を継続しやすくなる好材料になるでしょう。
リスクの低減
SLOを達成することによるメリットとして、リスクの低減が挙げられます。SLOによってSLAよりも厳しい目標を達成するように努めることで、リスクを低減させることにつながるのが理由です。同時にリスクの発生だけでなく、発生したリスクに対してすぐに対処できるようになれば、様々な被害を最小限にすることにもつながります。
競争力の強化
SLOを達成することによるメリットとして、競争力の強化が挙げられます。同業他社やライバル企業のSLAやSLOの数値を調査して参考にし、適切な数値を設定することで、明確に他社との差別化をしやすくなるのが理由です。注意点としてはただ対抗するためだけの数値を設定しないことが重要と言えます。達成不可能な数字ではなく、達成可能な数値で対抗していくこと、同時に数値で勝負するのではなく、実際のサービスレベルを向上させていくことで勝負するという意識を持つことが大切です。
5.まとめ
今回はSLOに関する基礎知識、SLOを達成するためにエンジニアが意識すべきこと、SLOを達成するための代表的な施策と理由、SLOを達成することによるメリットについてお話ししました。
SLOで設定した目標を達成できるように進めていくことで、企業や組織としてSLAを満たしやすくなります。SLOが現実的に達成可能な目標であることを意識し、数字に基づいて日々の品質向上に努めていくことが重要です。
SLOについては、品質向上のための目標、もしくは努力目標と表現されることがありますが、達成しなくて良い目標ではありません。達成することで企業や組織としての信頼感や安心感とともに、売上の安定化につながるということを覚えておきましょう
最後までお読みいただきありがとうございました。
本記事が皆様にとって少しでもお役に立てますと幸いです。