SLI/SLOやDatadogについて書いていきますが、細かいことには言及していきません。
SRE初心者がなんか設定したんだな〜程度に見てください。
レイテンシーのSLI/SLOの理想と現実について
まずは計算方法の理想と現実の違いについて
理想的なリクエスト成功率のSLIは
SLI = レイテンシーが〇〇秒以下のレスポンス数 / 全レスポンス数
実際のSLIは
SLI = 一定期間で平均レイテンシーの99パーセンタイルが2秒未満であった割合
また、理想のSLOは
30日間で2秒未満のレスポンスが99%
実際のSLOは
30日間で1時間での平均レイテンシーの99パーセンタイルが2秒未満であった期間が99%
理想と現実が違ったものになった理由はDatadogで表現可能かどうかでした。
DatadogのSLOではMetricsを用いて設定する方法と、Monitorsを用いて設定する方法があります。
そして、Metricsを用いて設定する場合は、分母と分子が必須となります。
今回Datadogに設定するにあたり、「〇〇秒以下のレスポンス数」を取得することができないため分子が設定できませんでした。
また、取得可能なものとして「レイテンシーの〇〇パーセンタイル」がありましたが、この情報では分母が設定できませんでした。
よって、DatadogのSLO設定時にはMonitorsを用い、Monitors内では「一定時間での平均レイテンシーの99パーセンタイルが2秒未満」であることを設定しました。
実際数字を見てみると理想と現実では求めている数字の意味が違っていることがわかると思います。
しかし、現実問題として設定できることとできないことがあるため完璧を求めすぎることをやめました。
メンバーとの会話の中でも実際に運用していく中でSLOの数値を正しくしていくことで数値の妥当性を保とうという結論になりました。
また、他社でも同様の設定方法をしているためDatadogを利用したレイテンシーのSLIの設定としてはベターなのではないかと考えています。参考としてZOZOさんの記事を載せさせていただきます。
以上がレイテンシーのSLI/SLOの現実についてでした。
補足で、「なぜパーセンタイルを用いないでパーセンテージを用いているの?」についてはこちらの記事を持って説明に返させていただきます。
さらに、パーセンタイル(百分位数)とパーセンテージ(百分率)の違いにてついてはこちらがわかりやすいです。
DatadogのMetricsについて
ここからは何か理論的な話というよりも、これ便利だったという話になります。
まずは、SLOsやMonitorsの設定の際にMetricsを選択して、必要に応じてクエリを書いていくと思います。
その中でSLOsやMonitorsの設定画面で各Metricsの比較やAWS側の内容との比較をするのは困難だと思います。
そんな時はMetorics Explorerを利用すると良いです。
便利なこととしては、複数のクエリを比較することができるのとSLOsやMonitorsの編集を行わないため変に保存してしまう危険性も少ないことです。
さらに、Metorics Summaryを利用すると使用可能なMetrics NameやTag Key, Tag Valuesを検索すことができます。
これにより、自分のプロダクトでは何が利用可能なのか、何でクエリを絞り込むことができるのか判断が可能となります。
最後に
SLI/SLOを複数設定する中で課題とする箇所は数多くありました。しかし、今回はライトに記事を書きたかったのでボリュームや難易度を落としています。
アウトプットとしては全然書き足りていないですが、また気がむいた時にかければなとおもいます。
あくまで初心者なので内容に不備がございましたらコメントでこっそり教えて下さい。