SRE 원칙
Site Reliability Engineering의 핵심 개념과 실무 적용
Site Reliability Engineering의 핵심 개념과 실무 적용
목표: 서비스 신뢰성을 측정하고 관리할 수 있는 수준
🎯 SRE 개요
정의
소프트웨어 엔지니어링을 적용하여 IT 운영을 자동화하고 확장.
graph TB
subgraph "SRE 원칙"
DEV["💻 소프트웨어 엔지니어링"] -->|"자동화"| OPS["⚙️ 운영"]
OPS -->|"측정"| SLO["📊 SLO/SLI"]
SLO -->|"관리"| EB["💰 Error Budget"]
EB -->|"의사결정"| DEV
end
📊 SLI/SLO/SLA
정의
| 약어 | 정의 | 예시 |
|---|---|---|
| SLI | Service Level Indicator | 지표 (가용성, 지연시간) |
| SLO | Service Level Objective | 목표 (99.9% 가용성) |
| SLA | Service Level Agreement | 계약 (위반 시 패널티) |
SLI 선택
graph LR
USER["👤 사용자 경험"] -->|"측정"| SLI["SLI"]
SLI -->|"예시"| LATENCY["지연시간"]
SLI -->|"예시"| ERROR["에러율"]
SLI -->|"예시"| THROUGHPUT["처리량"]
SLI -->|"예시"| AVAILABILITY["가용성"]
SLO 설정
# slo-definition.yaml
apiVersion: openslo/v1
kind: SLO
metadata:
name: api-availability
displayName: API Availability
spec:
service: payment-api
indicator:
metricSource:
type: prometheus
spec:
query: |
sum(rate(http_requests_total{status!~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
timeWindow:
- duration: 30d
isRolling: true
budgetingMethod: Occurrences
objectives:
- displayName: Good
target: 0.999 # 99.9%
💰 Error Budget
개념
SLO를 달성하지 못하는 것을 허용하는 양.
graph LR
SLO["SLO: 99.9%"] -->|"허용"| EB["Error Budget: 0.1%"]
EB -->|"소진"| PAUSE["🛑 배포 중지"]
EB -->|"잔여"| DEPLOY["🚀 배포 계속"]
계산
| SLO | Error Budget (월간) | 다운타임 허용 |
|---|---|---|
| 99% | 1% | 7.2시간 |
| 99.9% | 0.1% | 43.8분 |
| 99.99% | 0.01% | 4.38분 |
| 99.999% | 0.001% | 26.3초 |
정책
# error-budget-policy.yaml
errorBudgetPolicy:
burnRateAlerts:
- name: fast-burn
burnRate: 14.4 # 2% budget in 1 hour
lookback: 1h
severity: critical
action: page
- name: slow-burn
burnRate: 2 # 5% budget in 6 hours
lookback: 6h
severity: warning
action: ticket
deploymentPolicy:
- condition: errorBudget > 50%
action: allow
- condition: errorBudget > 25%
action: require-approval
- condition: errorBudget < 25%
action: freeze
📈 Toil 감소
Toil 정의
반복적이고, 수동적이며, 자동화 가능한 운영 업무.
| Toil 유형 | 예시 | 해결책 |
|---|---|---|
| 티켓 처리 | 비밀번호 재설정 | 셀프 서비스 |
| 수동 배포 | 릴리스 수동 실행 | CI/CD |
| 데이터 복구 | 백업 복원 | 자동화 |
| 용량 관리 | 디스크 정리 | 모니터링 + 알림 |
Toil 예산
graph LR
TOTAL["총 업무 시간"] -->|"50%"| TOIL["Toil"]
TOTAL -->|"50%"| PROJECT["프로젝트/엔지니어링"]
TOIL -->|"감소 목표"| TARGET["Toil < 25%"]
📋 체크리스트
- SLI 정의
- SLO 설정
- SLA 작성
- Error Budget 계산
- Burn Rate 알림
- 배포 정책
- Toil 식별
- Toil 감소 계획
- 자동화 구현
- 모니터링 설정
🔗 관련 노트
- 02-04-모니터링-스택 — 모니터링
- 03-04-카오스엔지니어링 — 카오스 엔지니어링
- 03-03-SRE-원칙 — SRE
마지막 업데이트: 2026-06-01