SLI / SLO / SLA

[!tldr] 한줄 요약 SLI는 서비스 품질의 측정값, SLO는 내부 목표, SLA는 외부 계약이며, 에러 버짓으로 "안정성 vs 속도"의 균형을 잡는다.

핵심 내용

세 개념의 관계

SLA (외부 계약)  ←  SLO (내부 목표)  ←  SLI (실제 측정값)
"99.9% 보장,          "99.95% 목표"         "측정: 99.97%"
 미달 시 크레딧 환불"

SLI가 SLO를 충족하고, SLO가 SLA를 충족하는 계층 구조다.

SLI (Service Level Indicator) — 측정값

사용자가 경험하는 서비스 품질을 정량적으로 측정한 값. 보통 0~100% 비율로 표현한다.

SLI계산 방법예시
가용성(Availability)성공 요청 / 전체 요청99.97%
지연 시간(Latency)임계값 이내 요청 / 전체 요청p99 < 300ms인 비율
처리량(Throughput)성공 처리된 작업 수초당 1,000건
정확성(Correctness)올바른 응답 / 전체 응답99.99%

SLO (Service Level Objective) — 내부 목표

SLI에 대해 팀이 내부적으로 설정하는 목표치. SLA보다 엄격하게 잡는 것이 일반적이다.

SLA (Service Level Agreement) — 외부 계약

서비스 제공자와 고객 간의 공식 계약. SLO 미달 시의 패널티(보상)를 명시한다.

에러 버짓(Error Budget)

SLO에서 허용하는 실패량. 100% - SLO 목표치로 계산한다.

[!tip] 에러 버짓의 진짜 가치 에러 버짓은 "안정성 vs 개발 속도" 논쟁을 데이터 기반 의사결정으로 바꿔준다. "버짓이 남았으니 배포해도 된다" vs "버짓이 소진됐으니 안정화 먼저" 같은 객관적 판단이 가능하다.

번 레이트(Burn Rate)

에러 버짓이 얼마나 빠르게 소진되는지를 나타내는 비율.

번 레이트의미소진 시점 (30일 기준)
1예상 속도대로30일에 딱 맞게
22배 속도15일 만에 소진
1010배 속도3일 만에 소진
1414배 속도약 2일 만에 소진

나인(Nines) 환산표

SLO에러 버짓월간 허용 다운타임연간 허용 다운타임
99% (two nines)1%7.3시간3.65일
99.9% (three nines)0.1%43.8분8.76시간
99.95%0.05%21.9분4.38시간
99.99% (four nines)0.01%4.38분52.6분
99.999% (five nines)0.001%26.3초5.26분

[!warning] 나인 하나의 무게 99.9% → 99.99%는 고작 0.09% 차이지만, 허용 다운타임이 43.8분 → 4.38분으로 10배 줄어든다. 나인이 하나 늘 때마다 비용과 복잡도가 급격히 증가한다.

Datadog에서 SLO 관리하기

Datadog은 Service Management > SLOs 메뉴에서 SLO를 생성하고 추적한다.

SLO 타입SLI 계산 방식적합한 경우
Metric-based좋은 이벤트 / 전체 이벤트"성공 요청 비율 99.9%" 같은 요청 기반 SLI
Monitor-based모니터 업타임 비율"서비스 정상 시간 99.95%" 같은 가용성 SLI
Time Slice시간 구간별 정상/비정상 판정"5분 단위로 에러율 1% 미만인 시간 비율"

Datadog SLO 대시보드에서 확인할 수 있는 것:

예시

Metric-based SLO 설정 (checkout 서비스 가용성):

분자 (Good events):  sum:requests.success{service:checkout}
분모 (Total events): sum:requests.total{service:checkout}
Target: 99.95% / 30-day rolling window

[!example] 에러 버짓 시나리오

  • SLO: 99.95% (30일) → 에러 버짓: 21.6분
  • 1일차: 배포 실패로 8분 다운 → 잔여 13.6분
  • 5일차: DB 장애로 10분 다운 → 잔여 3.6분
  • → 번 레이트 급등 → 알림 발생 → 배포 동결, 안정화 작업 돌입

참고 자료

관련 노트