Blogブログ・読みもの

2017.12.10

ITシステムのサービスレベルを定義する

西 武史

取締役CTO
西 武史

技術



アドベントカレンダーはじめました

株式会社diffeasyでは、エンジニアの技術力向上のため社内の勉強会や、外部のエンジニアの方を招いた勉強会など日々開催しています。
先日社内勉強会の際にあるエンジニアから「アドベントカレンダーやりませんか?」とう意見が。

この忙しい年末に何言ってんだ・・・とはならず、なんだかノリで「やりましょう!」ということに。
早速エンジニアのエンジニアによるエンジニアのための技術情報サイト「Qiita」にアドベントカレンダーを作成しました。

アドベントカレンダーとは何か?

毎年12/1〜12/24(or25)の間、イエス様の降誕を待ち望む期間のことをアドベントと言うそうです。
その期間中に一日づつ何かしらのアクションをするためのカレンダーと言うのが元々のアドベントカレンダーの意味だそうです。

IT界隈では、海外のPerlコミュニティがやっていた事を日本のPerlコミュニティが2008年にマネしてやり始めたのが日本のIT界隈におけるアドベントカレンダーの起源のようです。

と言うわけで、日々ITの技術的な情報を発信していくことになりましたので、今回は「サービスレベル」について、ブログに書くことにしました。

サービスレベルを定義する

サービスレベルとは

サービスレベルとは、提供しているWebサービスやアプリの動作がユーザーの要求をどれほど満たしているか、のレベルになります。

例えば、Webサービスのある機能が3回に1回エラーになったり、応答に10秒以上かかったりしたら、ユーザーの要求を満たせず、サービスは使われなくなるでしょう。

そのようなことにならないよう、サービスを提供する我々は、サービスレベルを定義する必要があります。
サービスレベルに関する用語として、サービスレベル指標サービスレベル目標サービスレベルアグリーメント、があります。

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

  • リクエストのレイテンシ(リクエストを出してから実際にデータを受信するまでの、通信の遅延時間)
  • エラー率
  • 可用性(サービスが継続して利用できる時間)
  • システムスループット(一定時間に処理できる情報量)

などのサービスレベルを測るための指標をサービスレベル指標(SLI)と呼びます。

エラーはない方が良いし、サービスが止まらない方がもちろん良いですが、それは不可能です。
どんなシステムでも必ずエラーは起こりますし、サービスが止まることも完全にゼロにすることは難しいです。
エラーの発生をどれくらいの割合に抑えるか、サービスが止まる時間をどれくらいに抑えるか、の目標を設定する必要があります。

リクエストのレイテンシ、システムスループットなども、必ずしも高ければ良い、と言うわけではありません。
ユーザーがリクエストの応答に多少時間がかかっても良い処理に、必要以上のコストをかけてサーバーのスペックをあげてもユーザーの満足には繋がりません。
どれくらいのレイテンシ、システムスループットを設定すれば良いか、こちらも目標の設定が必要になります。

これらの目標をサービスレベル目標(SLO)と言います。

サーバー監視ツールなどによって、サーバーのログをみてエラーの発生を監視したり、サーバーが停止しないようにCPUやメモリの情報を監視したりしますが、これもただ監視すれば良いわけではありません。
サービスレベル目標(SLO)に基づいて、どの項目をどのように監視するかを設定する必要があります。

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

サービスレベルアグリーメントとは、その名の通り、サービスレベルに関してユーザーとの間で結ぶ明示的、あるいは暗黙的な契約です。
言い換えると、「SLOが満たされなかった場合はどうするか?」が、SLAになります。

サービスレベル目標(SLO)をどのように定義するか?

サービスレベル目標はどのように定義すれば良いのでしょうか?
まず間違ってはならないのが、サービス提供者側が計測可能な指標をSLOとしないことです。
ユーザーが気にするのは何か?を考え、SLOを設定し、それによって計測する指標を決めることが重要です。

SLOを常に完璧に求め続けることは、イノベーションやサービスの改良サイクルを遅らせることにもなります。
過剰にSLOを追求しすぎないことも重要です。

SLOは最初から完璧に設定することはできません。
システムの状態や、ユーザーの要求に応じて、必要に応じて見直すことが大切です。

弊社が開催した勉強会で弊社エンジニア宮原が述べていましたが、ユーザーが何を求めているか、どれほどのコストをかけるか、適切なSLOの設定が必要です。

まとめ

サービスを提供する側と、サービスを利用する側の期待に隔たりがあると、お客様の満足を得ることはできません。
サービスレベルを定義するということは、IT以外のサービスや商品を提供する全ての人に必要なのかもしれません。

クリスマスまであとわずか。
アドベントカレンダーは引続き更新していきます!
次回もお楽しみに!

written by

西 武史

取締役CTO
西 武史

Twitter