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

정의

약어정의예시
SLIService Level Indicator지표 (가용성, 지연시간)
SLOService Level Objective목표 (99.9% 가용성)
SLAService 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["🚀 배포 계속"]

계산

SLOError 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