SLO
Service Level Objective
지표
서비스 품질을 재는 값을 어느 수준까지 지키겠다고 팀이 스스로 정해 문서에 적어 둔 목표치입니다.
등장 배경
품질을 재기 시작하면 곧 다음 문제가 옵니다. 그 값이 괜찮은 값인지를 말해 주는 것이 없습니다. 문서 열기 응답 시간이 0.4초에서 1.1초로 늘어난 화면을 놓고, 지금 손을 대야 하는지 다음 주에 봐도 되는지를 매번 회의에서 정하게 됩니다.
페이지덱에서도 같은 대화가 주마다 반복됐습니다. 태오는 아직 사용자 불만이 없으니 다음 주에 보자고 하고, 지현은 지난달에도 그렇게 미뤘다가 사고가 났다고 합니다. 둘 다 근거가 있는데 판정할 기준이 없으니 매번 누가 더 걱정하는지로 결론이 났습니다. 알림도 마찬가지로, 실패율 1퍼센트에 걸어 둔 이유를 아무도 기억하지 못했습니다.
여기에 하나가 더 얹힙니다. 목표를 정해 두지 않으면 사실상 목표가 100퍼센트가 됩니다. 어떤 실패든 사고로 취급되니, 팀은 배포를 줄이고 새 기능을 미루는 쪽으로 움직입니다. SLO 는 이 두 가지를 한 번에 해결하려고 적는 한 줄입니다. 어디까지가 정상인지를 미리 정해 두고, 그 아래 남는 만큼은 실패해도 되는 몫으로 인정합니다.
계산 방법
계산이라기보다 결정이지만 세우는 순서가 있습니다. 네 단계입니다.
- 대상이 되는 값을 하나 고릅니다. 문서 저장 성공률처럼 사용자가 겪는 행동을 재는 값이어야 합니다. 이 값을 어떻게 재고 무엇을 좋음으로 셀지는 SLI 쪽에서 이미 정해져 있어야 합니다.
- 목표 수준을 정합니다. 여기서 반드시 과거 데이터를 먼저 봅니다. 지난 석 달 실측이 99.84퍼센트인 서비스에 99.99퍼센트를 적으면 첫 주부터 위반 상태로 시작합니다. 대개 현재 수준과 같거나 한 칸 높은 값을 적습니다.
- 기간을 붙입니다. 최근 28일을 매일 갱신하는 방식이 흔합니다. 기간이 없는 목표는 판정할 수 없습니다.
- 남는 여유분을 분 단위나 건수로 바꿔 적습니다. 28일은 40,320분이므로 99.9퍼센트 목표에서 허용되는 실패는 약 40분입니다. 99.95퍼센트면 20분, 99.99퍼센트면 4분입니다. 요청 기준으로 세면 28일 요청이 1,240만 건일 때 0.1퍼센트는 12,400건입니다.
4번에서 나온 여유분이 에러 버짓입니다. 목표를 지키면서 써도 되는 실패의 몫이고, 이것이 SLO 를 다른 목표와 다르게 만듭니다. 40분이 남아 있으면 위험한 배포를 해 볼 여지가 있고, 이미 38분을 썼으면 이번 주에는 안정화를 먼저 합니다.
그 선에 알림을 붙이는 것이 마지막 손질입니다. 알림은 정해 둔 조건을 넘으면 담당자에게 연락이 가게 만든 장치인데, 값 자체가 아니라 여유분이 줄어드는 속도에 걸어 두는 편이 낫습니다. 실패율 1퍼센트라는 조건은 왜 1퍼센트인지 설명할 수 없지만, 28일치 여유분을 6시간 만에 절반 쓰고 있다는 조건은 그 자체로 이유가 됩니다.
좋은 수준의 기준
좋은 SLO 는 높은 목표가 아니라 실제로 지켜지고 지켜지지 않을 때 행동이 바뀌는 목표입니다. 위반했는데 아무 일도 일어나지 않는 목표는 목표가 아니라 문서 장식입니다.
수준을 고를 때 보는 것은 셋입니다.
- 9 를 하나 늘리는 값이 얼마인지 봅니다. 99.9퍼센트에서 99.99퍼센트로 올리면 허용 실패가 40분에서 4분으로 줄고, 그것을 지키려면 서버를 이중으로 두고 여러 지역에 나눠 돌리고 자동 복구를 붙여야 합니다. 비용은 열 배쯤 뛰는데 사용자가 느끼는 차이는 거의 없습니다.
- 사용자가 차이를 느끼는 지점인지 봅니다. 사용자의 회사 와이파이가 이미 그보다 자주 끊긴다면, 우리 쪽 9 를 하나 늘려도 체감은 그대로입니다.
- 상시 위반 상태가 되지 않는지 봅니다. 목표가 늘 빨간색이면 팀은 두 주 만에 그 색을 무시하는 법을 배우고, 그때부터 목표는 아무것도 막지 못합니다.
100퍼센트를 적지 않는 것도 기준입니다. 실패를 하나도 허용하지 않는다는 뜻이고, 그러면 배포도 실험도 못 합니다.
서비스마다 값이 다른 것도 정상입니다. 결제와 로그인은 99.95퍼센트로 두고 문서 검색은 99.5퍼센트로 두는 편이 실제 판단에 쓸모가 있습니다. 검색이 20분 느려지는 것과 결제가 20분 막히는 것은 고객에게 같은 일이 아닙니다.
실무 용례
"저장 성공률 SLO 를 28일 기준 99.9퍼센트로 두겠습니다. 여유분은 40분입니다."
목표와 허용 실패량을 함께 적어 판정 기준을 고정하는 말입니다.
"이번 달 여유분을 벌써 70퍼센트 썼어요. 위험한 배포는 다음 달로 미루죠."
남은 몫이 적으니 변경 속도를 줄이자는 제안입니다.
"그 목표는 석 달 내내 위반 상태입니다. 목표를 낮추거나 사람을 붙이거나 둘 중 하나예요."
지킬 수 없는 선은 기준 구실을 못 하니 정리하자는 말입니다.
페이지덱은 저장 성공률에 99.9퍼센트, 문서 열기 응답 시간에 99.5퍼센트를 적어 두고 28일 기준으로 봅니다. 태오가 남은 여유분을 대시보드 맨 위에 분 단위로 띄웠습니다. 남은 분이 보이니 이번 주에 무엇을 해도 되는지가 바로 읽힙니다.
지현은 여유분이 절반 이하로 내려간 주에는 계획을 바꿉니다. 새 기능 대신 원인이 된 자리를 손보는 쪽으로 사람을 옮기고, 반대로 여유분이 거의 그대로 남은 달에는 미뤄 둔 실험을 꺼냅니다.
흔한 오해
목표를 높게 잡을수록 좋다고 읽는 경우가 가장 많습니다. 목표라는 말에는 높을수록 좋다는 뜻이 따라붙으니 자연스러운 오해입니다. 하지만 이 숫자는 야심이 아니라 약속이고, 지키지 못하는 약속은 판정 기준이 되지 못합니다. 실측이 99.8퍼센트인 서비스에 99.99퍼센트를 적으면 그 목표는 첫 달부터 빨간색으로 시작해 계속 빨간색입니다. 그대로 두면 팀은 빨간색을 배경으로 여기게 되고, 정말로 나빠진 주에도 아무도 반응하지 않습니다.
위반을 누군가의 잘못으로 읽는 것도 흔합니다. 목표를 못 지켰다는 말이 실수처럼 들리기 때문입니다. 그런데 이 구조는 애초에 실패할 몫을 미리 떼어 두고 시작합니다. 여유분을 쓰는 것은 정상이고, 오히려 28일이 끝나도록 여유분이 거의 그대로 남아 있으면 팀이 필요 이상으로 조심했다는 신호로 읽습니다. 위반을 책임 문제로 다루기 시작하면 팀은 목표를 느슨하게 고쳐 쓰거나 사고를 사고로 부르지 않는 쪽으로 움직입니다.
자주 헷갈리는 용어
같이 보면 좋은 페이지
마지막 업데이트 2026-09-16