SLI
Service Level Indicator
サービスレベル指標_
ユーザ視点でのサービスの信頼性を表す指標
信頼性スタックの1層目、基盤
参考
/mrsekut-book-4814400349/060 (3章 意味のあるサービスレベル指標の開発)
#wip
ユーザ第一であることを見失わないようにすべし
たとえ、可用性のメトリクスが完璧でも、ユーザが「信頼性が低い」と感じれば信頼性は低い
たとえ、ログにエラーがたくさん含まれていても、ユーザに影響がないなら急いで直す必要はない
SLIをアラートの基準とする
ユーザ視点で問題がないならアラートを出して緊急対応する必要はない
普通の就業時間まで待って直せば良い
エラー率だけ見てても仕方がない
リクエストがサービスに到達してなければそもそもエラーとして計測されない
メモリやCPUの使用率が高いことのみでは問題とは言えない
使用率が高くてもリクエストが正常に実行されていればユーザにとっては影響がない
/mrsekut-book-4814400349/064の例
ユーザ視点に立って考える
①サービスが稼働しているか
②サービスが使用可能であるか
稼働してても使用可能でないと意味ない
③サービスからのレスポンスはあるか
使用可能でも一生レスポンス返ってこなければ意味ない
④サービスは許容可能な数の良好なレスポンスを返しているか
エラー多すぎたら意味ない
⑤レスポンスは正しいフォーマットになっているか
JSONを期待してるのにxml返ってきてたら意味ない
⑥正しいデータが返ってきてるか
返ってきたデータが古いものだと意味ない
SLIを考える時に、上記6つ全ての計測が必要か?否
一部を計測すれば他の一部も計測できるものもある
e.g. ⑥が正常なら⑤④③②①は前提できる
SLIは命題にする
イベントの結果がSLIを「満たした」か「満たさなかった」の2値で判定できるといい
/mrsekut-book-4814400349/067
SLIとSLOは全ての関係者に用意に理解できる文章にする
/mrsekut-book-4814400349/067
e.g. サービスに対するレイテンシの95%タイルについては、400ms以内に正しいデータでレスポンスされる
ユーザにとってどう影響があるのかを説明できないといけない