ゼロベースでSLOの存在意義はなにか?適切なSLIはどうやって決めるのか?を考察・調査し、まずはプラットフォームの一部のチームでSLOを策定しました。それまでの苦労を含めてSLOがなぜ必要か、またSLIをどのように決めたのか等お話します。
Cloud Operator Days Tokyo 2023で使用したスライドです。
DMMプラットフォームの利用時全体像 3 動画配信 サービス End User 電子書籍 サービス End User API Gateway 認証系 サービス 会員系 サービス DMM プラットフォーム DMM.comのサービス 主にプラットフォーム的機能を管轄する バックエンドサーバーが含まれる ex.ログインや退会など
SLIで依存をどこまで取り込むか問題 - 例 32 API Gateway Service A Service B Service C API Gatewayを運用するチームが SLOを決めたいケース 後続のサービスは、別々のチームが管轄し エラー率もレイテンシも サービスによって全然異なる ユーザーをAPI Gatewayを 叩くクライアントとする ユーザー
SLIで依存をどこまで取り込むか問題 - 例 33 API Gateway Service A Service B Service C ユーザー体験を表現するSLIを作ろうとして、 後続サービスの状態を取り込むと、当然その後続サービスの信頼性にSLIが影響される Latency 80ms Latency 20ms Latency 50ms レイテンシは各サービスごとに違う。API Gateway自身がレイテンシの SLIを作るとき後続のサービスごとのレイテンシのSLIを用意するべきなのか? API Gatewayの後続にサービスが増えるほど、API GatewayのSLIも増える Latency 25ms 合計 105ms
SLIで依存をどこまで取り込むか問題 - 例 34 API Gateway Service A Service B Service C 後続のサービスが障害を起こしたときはAPI Gateway自身の SLIの値も低下する(個別のServiceごとにSLIを作ってもこの問題は発生する) Service Aがダウンしたときユーザー体験をSLIは適切に表現しているが API Gateway自身に問題はなくてもAPI GatewayのBurn Rate Alertが発火する API Gatewayの後続にサービスが増えるほど発火する機会も増える 正常に稼働しているが エラー率が高くなる エラー率が 高くなる
SLIで依存をどこまで取り込むか問題 - 対策 35 API Gateway Service A Service B Service C 現実的に後続のサービスを取り込むと運用しきれないので このようなケースは後続サービスの影響を除外するような方針にしている。 ただ影響を除外するのにも手間がかかる..。 ex. 後続サービスによるレイテンシ影響を減算、他サービス起因のエラーを除外 Latency 25ms Latency 80ms Latency 20ms Latency 50ms