콘텐츠로 이동

SRE & SLO·Error Budget 운영 — 서비스 신뢰성 목표 설정

“우리 서비스는 얼마나 안정적이어야 하는가?” 이 질문에 숫자로 답하는 것이 SLO(Service Level Objective)의 출발점입니다.

세 가지는 같아 보이지만 역할이 다릅니다.

용어예시
SLI (Indicator)신뢰성을 측정하는 지표”성공 요청 / 전체 요청 비율”
SLO (Objective)팀이 달성해야 할 목표”결제 API 가용성 99.9%“
SLA (Agreement)고객과의 계약 (위반 시 패널티)“99.9% 미달 시 크레딧 환급”
SLI → "현재 값이 얼마인가?" (측정)
SLO → "얼마여야 하는가?" (목표)
SLA → "못 지키면 어떻게 되는가?" (계약)

SLO는 SLA보다 더 엄격하게 설정합니다. SLA가 99.9%라면 SLO는 99.95%로 — 내부 목표를 먼저 달성해야 고객과의 계약을 지킬 수 있습니다.

모든 지표가 SLI가 되는 건 아닙니다. 사용자 경험을 직접 반영하는 지표를 선택해야 합니다.

# 가용성 SLI 계산 예시
def calculate_availability_sli(window_minutes=60):
total_requests = metrics.count('http_requests_total', window=f'{window_minutes}m')
error_requests = metrics.count(
'http_requests_total',
filters={'status': '5xx'},
window=f'{window_minutes}m'
)
good_requests = total_requests - error_requests
return good_requests / total_requests # 0.0 ~ 1.0
SLI 유형측정 대상적합한 서비스
가용성성공 요청 비율모든 HTTP API
지연시간p95/p99 응답 시간실시간 서비스
처리량초당 처리 건수배치, 스트리밍
정확성올바른 결과 비율데이터 파이프라인
신선도데이터 최신성대시보드, 캐시

Error Budget은 SLO에서 허용되는 “실패 여유분”입니다.

99.9% SLO = 0.1% 실패 허용
월간 Error Budget:
= 30일 × 24시간 × 60분 × 0.1%
= 43.2분 / 월
즉, 한 달에 43분 이상 다운타임이 발생하면 SLO 위반
Error Budget 소진율이 낮으면 (예산이 남으면):
→ 빠른 배포, 새 기능 실험, 리스크 감수 OK
Error Budget 소진율이 높으면 (예산 부족):
→ 신규 기능 배포 중단
→ 신뢰성 개선 작업에 집중
→ 배포 프리즈(Freeze) 검토

이 원칙을 팀에 공식화하면 “빠른 배포 vs 안정성” 논쟁이 데이터 기반으로 해소됩니다.

# Grafana 패널 예시 (Prometheus)
panels:
- title: "Error Budget 소진율 (이번 달)"
expr: |
1 - (
sum(rate(http_requests_total{status!~"5.."}[30d]))
/ sum(rate(http_requests_total[30d]))
) / 0.001 # 0.1% = SLO 허용 실패율
thresholds:
- color: green # 0~50%: 정상
value: 0
- color: yellow # 50~80%: 주의
value: 50
- color: red # 80~100%: 위험
value: 80

처음부터 99.99%를 목표로 잡으면 운영이 불가능합니다.

단계적 설정 권장:

1단계: 현재 측정값 파악
→ 지난 30일 실제 가용성: 99.72%
2단계: 현실적 목표 설정 (현재 + 0.1~0.2%)
→ 초기 SLO: 99.9%
3단계: 달성 후 점진적 상향
→ 6개월 후: 99.95%
→ 12개월 후: 99.99% (필요 시)

SRE 팀이 없는 스타트업도 SLO 문화를 도입할 수 있습니다.

최소 실행 로드맵:

Week 1: SLI 선택
→ 가장 중요한 서비스 1개 선택
→ 가용성 SLI 하나만 측정 시작
Week 2: SLO 선언
→ 현재 측정값 기반으로 현실적 목표 설정
→ Slack 채널에 주간 리포트 자동화
Week 3: Error Budget 운영
→ Error Budget 소진율 대시보드 생성
→ 소진율 80% 초과 시 배포 프리즈 원칙 합의
Month 2+: SLO 범위 확대
→ 서비스 추가, SLI 다양화
→ Post-mortem과 연결 (장애 발생 시 Error Budget 영향 기록)

TestForge로 SLO 검증을 위한 부하테스트 시작하기 →

visitor count

이 가이드를 내 서비스에 직접 적용해 보세요.

TestForge 무료 스캔 시작 →