SRE 기초
Site Reliability Engineering(SRE)은 Google에서 시작된 소프트웨어 엔지니어링 접근법으로, **“운영 문제를 소프트웨어 엔지니어링으로 해결한다”**는 철학을 기반으로 합니다. 전통적인 시스템 운영(Ops)이 수동 작업과 반복적 업무에 의존했다면, SRE는 자동화, 측정, 그리고 명확한 신뢰성 목표를 통해 서비스를 안정적으로 유지합니다. AI/ML 서비스가 프로덕션에 배포되면서, 모델 서빙 지연, GPU 장애, 추론 품질 저하 같은 새로운 유형의 신뢰성 문제가 등장했습니다. SRE 원칙은 이런 상황에서 체계적으로 대응하는 프레임워크를 제공합니다.학습 목표
- SRE의 핵심 원칙과 전통 운영, DevOps와의 차이를 설명할 수 있다
- SLI/SLO/SLA를 정의하고 Error Budget을 계산하여 의사결정에 활용할 수 있다
- 장애 감지부터 포스트모템까지 체계적인 대응 프로세스를 수립할 수 있다
- AI/ML 서비스에 SRE 원칙을 적용하여 모델 품질과 인프라 안정성을 관리할 수 있다
왜 중요한가
서비스 장애는 매출 손실, 사용자 이탈, 브랜드 신뢰 하락으로 이어집니다. Amazon의 경우 1초의 지연이 연간 16억 달러의 손실을 의미한다는 연구도 있습니다. SRE는 이런 위험을 정량적으로 관리하는 체계를 제공합니다. 특히 AI 서비스에서는 모델 추론 지연, 할루시네이션, 데이터 드리프트 같은 전통 서비스에 없던 장애 유형이 존재합니다. SRE를 이해하면 이런 AI 특유의 신뢰성 문제를 체계적으로 다룰 수 있고, LLMOps 파이프라인에서 모델 품질 SLO를 설정하고 모니터링하는 역량을 갖출 수 있습니다.SRE 정의와 핵심 원칙
Google의 Ben Treynor는 SRE를 **“소프트웨어 엔지니어에게 운영 기능을 설계하도록 맡긴 것”**이라고 정의했습니다. SRE의 핵심 원칙은 다음과 같습니다.- 자동화 우선(Eliminate Toil): 반복적 수동 작업을 자동화하여 엔지니어링 시간 확보
- 측정 기반 의사결정: 직감이 아닌 SLI/SLO 데이터로 판단
- 점진적 변화(Progressive Rollout): Canary, Blue-Green 배포로 위험 최소화
- 공유 책임(Shared Ownership): 개발팀과 운영팀이 서비스 신뢰성을 공동 책임
SRE vs 전통 운영 vs DevOps
| 항목 | 전통 운영(Ops) | DevOps | SRE |
|---|---|---|---|
| 철학 | 안정성 우선, 변경 최소화 | 개발과 운영의 협업 | 소프트웨어로 운영 문제 해결 |
| 변경 관리 | 변경 위원회(CAB) 승인 | CI/CD 자동화 | Error Budget 기반 배포 속도 조절 |
| 장애 대응 | 런북 기반 수동 복구 | 자동화된 복구 도구 | 자동 복구 + Blameless 포스트모템 |
| 목표 설정 | 가용성 99.99% (정성적) | 배포 빈도, 리드타임 | SLO로 정량적 목표 설정 |
| 팀 구성 | Ops 팀 분리 | 크로스 펑셔널 팀 | SRE 팀 (50% 개발 + 50% 운영) |
| 자동화 | 스크립트 중심 | 도구 체인 통합 | Toil 제거, 자동화 필수(50% 이상) |
| 확장 방식 | 서버 투입 | 인프라 코드화 | 소프트웨어 엔지니어링으로 확장 |
SLI / SLO / SLA
SLI (Service Level Indicator)
SLI는 서비스 품질을 나타내는 측정 지표입니다. 좋은 SLI는 사용자 경험을 직접 반영해야 합니다. 좋은 SLI 선택 기준:- 사용자가 직접 체감하는 지표인가?
- 측정이 가능하고 자동화할 수 있는가?
- 의미 있는 변화를 감지할 수 있는 민감도를 갖는가?
| SLI 유형 | 정의 | 측정 예시 |
|---|---|---|
| 가용성(Availability) | 성공 요청 / 전체 요청 | HTTP 200 비율 |
| 지연(Latency) | 요청 처리 시간 | p50, p95, p99 응답시간 |
| 처리량(Throughput) | 단위 시간당 처리 요청 수 | 초당 요청 수(RPS) |
| 오류율(Error Rate) | 실패 요청 / 전체 요청 | HTTP 5xx 비율 |
| 정확도(Correctness) | 올바른 결과 / 전체 결과 | 데이터 정합성 비율 |
| 신선도(Freshness) | 데이터 최신성 | 마지막 업데이트 후 경과 시간 |
SLO (Service Level Objective)
SLO는 SLI에 대한 목표 범위입니다. 100%는 올바른 SLO가 아닙니다. 100%를 목표로 하면 배포를 멈춰야 하고, 비용이 기하급수적으로 증가합니다.SLA (Service Level Agreement)
SLA는 고객과의 계약입니다. SLO 위반 시 크레딧 환불, 위약금 등 비즈니스 결과가 따릅니다.Error Budget
Error Budget은 “허용 가능한 비신뢰성의 양”입니다. SLO가 99.9%라면, 0.1%가 Error Budget입니다.계산 공식
Error Budget 기반 의사결정
| Error Budget 소진율 | 상태 | 허용 액션 | 제한 액션 |
|---|---|---|---|
| 0~50% | 안전 | 기능 배포, 실험, 마이그레이션 | 없음 |
| 50~75% | 주의 | 중요 기능 배포, 점검 강화 | 대규모 마이그레이션 자제 |
| 75~90% | 위험 | 버그 수정만 배포 | 신규 기능 배포 중단 |
| 90~100% | 동결 | 안정성 개선 작업만 | 모든 비안정성 작업 중단 |
| 100% 초과 | SLO 위반 | 인시던트 대응 모드 | 원인 해결 때까지 전면 동결 |
Error Budget 정책 설계
Error Budget 정책은 팀 전체가 합의한 문서여야 합니다. Budget 소진 시 자동으로 트리거되는 액션을 미리 정의합니다.장애 대응 프로세스
감지(Detection)
모니터링 시스템이 알림을 발생시킵니다. SLI 임계치 초과, 사용자 리포트, 합성 모니터링(Synthetic Monitoring) 등 다양한 채널을 통해 감지합니다.
심각도 분류 테이블
| 등급 | 영향 범위 | 응답 시간 | 예시 | 에스컬레이션 |
|---|---|---|---|---|
| SEV1 | 전체 서비스 장애 | 5분 이내 | 전체 사이트 다운, 데이터 유출 | 즉시 경영진, On-call 전원 |
| SEV2 | 주요 기능 장애 | 15분 이내 | 결제 불가, 로그인 장애 | 팀 리드 + 관련 팀 |
| SEV3 | 부분 기능 저하 | 1시간 이내 | 검색 느림, 일부 API 오류 | 담당 팀 |
| SEV4 | 경미한 이슈 | 다음 근무일 | UI 깨짐, 로그 경고 | 백로그 등록 |
런북(Runbook) 작성법
런북은 장애 발생 시 누구든 따라할 수 있는 복구 절차서입니다.런북 구조
포스트모템(Postmortem)
Blameless 문화
포스트모템의 핵심은 개인이 아닌 시스템을 탓하는 것입니다. “누가 실수했는가”가 아니라 “시스템이 왜 실수를 허용했는가”를 묻습니다.포스트모템 템플릿
On-call 운영
로테이션 설계
- 주기: 1~2주 교대가 일반적 (1주 권장)
- 최소 인원: 최소 5~6명으로 구성하여 번아웃 방지
- Primary/Secondary: 1차 대응자와 백업 대응자를 함께 지정
- 핸드오프: 교대 시 진행 중인 이슈와 주의사항을 인수인계
알림 피로(Alert Fatigue) 관리
- 동일 알림 중복 제거(Deduplication)
- 알림 그룹핑으로 노이즈 감소
- 정기적으로 비액션 알림 정리
- 알림 발생률 추세 모니터링
Chaos Engineering
Chaos Engineering은 **“시스템이 혼란스러운 상황에서도 작동하는지 사전에 검증”**하는 실천법입니다.| 도구 | 제공자 | 특징 |
|---|---|---|
| Chaos Monkey | Netflix | EC2 인스턴스 랜덤 종료 |
| LitmusChaos | CNCF | Kubernetes 네이티브, 다양한 실험 |
| Gremlin | Gremlin Inc. | 상용, GUI 기반, 안전 장치 내장 |
| AWS FIS | AWS | AWS 네이티브, IAM 통합 |
AI/ML 서비스의 SRE
AI/ML 서비스는 전통적인 웹 서비스와 다른 SLI가 필요합니다.모델 품질 SLI
| SLI | 설명 | 측정 방법 |
|---|---|---|
| 정확도(Accuracy) | 모델 예측의 정확성 | 정기적 벤치마크, A/B 테스트 |
| TTFT | Time to First Token (LLM) | 프록시/게이트웨이 로그 |
| TPS | Tokens Per Second (LLM) | 스트리밍 응답 속도 측정 |
| 할루시네이션율 | 사실과 다른 응답 비율 | 샘플링 기반 인간 평가 |
| 데이터 드리프트 | 입력 데이터 분포 변화 | PSI, KS-test 등 통계 검정 |
GPU 장애 대응
모델 롤백 전략
모델 배포에서도 롤백은 핵심입니다. 새 모델 버전이 SLO를 위반하면 이전 버전으로 자동 복구해야 합니다.모델 롤백은 코드 롤백보다 복잡합니다. 모델 바이너리 크기가 크고, 로딩 시간이 길며, 피처 스토어 호환성도 확인해야 합니다. Canary 배포로 소수 트래픽에 먼저 적용한 뒤 확대하세요.
AI/ML에서 SRE가 중요한 이유
LLMOps 파이프라인에서 SRE는 모델의 “운영 품질”을 보장하는 핵심입니다.- 모델 서빙 안정성: GPU 클러스터 장애, OOM(Out of Memory), CUDA 에러 대응
- 추론 품질 모니터링: 정확도 SLO, 드리프트 감지, A/B 테스트 결과 추적
- 비용 효율성: Error Budget과 연계하여 불필요한 과잉 투자 방지
- 재현성 보장: 장애 원인 추적을 위한 모델 버전, 데이터 버전, 설정 추적
SLO를 100%로 설정하면 안 되는 이유는?
SLO를 100%로 설정하면 안 되는 이유는?
100% SLO는 “절대 장애가 없어야 한다”는 뜻이며, 이는 곧 “절대 변경하지 않는다”와 같습니다. Error Budget이 0이 되어 어떤 배포도 할 수 없게 됩니다. 또한 100% 가용성을 위한 비용은 99.99% 대비 10배 이상 증가합니다. 사용자 경험에 맞는 현실적인 목표를 설정하는 것이 핵심입니다.
Error Budget이 소진되면 정말 배포를 멈추나요?
Error Budget이 소진되면 정말 배포를 멈추나요?
네, 이것이 SRE의 핵심 메커니즘입니다. Error Budget 소진 시 기능 배포를 중단하고 안정성 작업에 집중합니다. 이를 통해 개발 속도와 안정성 사이의 균형을 자동으로 조절합니다. 단, 보안 패치나 심각한 버그 수정은 예외로 허용하는 것이 일반적입니다.
Blameless 포스트모템이 왜 중요한가요?
Blameless 포스트모템이 왜 중요한가요?
비난 문화에서는 엔지니어가 실수를 숨기고, 이는 더 큰 장애로 이어집니다. Blameless 문화에서는 “왜 시스템이 이런 실수를 허용했는가”에 집중하여 구조적 개선을 이끌어냅니다. Google, Netflix 등 성숙한 조직이 모두 이 방식을 채택하고 있습니다.
SRE 팀 없이도 SRE 원칙을 적용할 수 있나요?
SRE 팀 없이도 SRE 원칙을 적용할 수 있나요?
물론입니다. 전담 SRE 팀이 없어도 SLI/SLO 설정, Error Budget 추적, 포스트모템 작성은 모든 개발팀이 적용할 수 있습니다. “임베디드 SRE” 모델에서는 기존 개발팀 내에서 한 명이 SRE 역할을 겸하기도 합니다. 중요한 것은 팀이 아니라 원칙과 실천입니다.
Chaos Engineering을 프로덕션에서 해도 안전한가요?
Chaos Engineering을 프로덕션에서 해도 안전한가요?
Netflix, Google, Amazon 등은 실제 프로덕션에서 Chaos Engineering을 수행합니다. 핵심은 폭발 반경(Blast Radius)을 제한하고, 즉시 중단할 수 있는 킬 스위치를 준비하는 것입니다. 처음에는 스테이징 환경에서 시작하고, 경험이 쌓이면 프로덕션으로 확대합니다.
AI 모델의 SLO는 어떻게 설정하나요?
AI 모델의 SLO는 어떻게 설정하나요?
전통적인 가용성, 지연 SLO에 더해 모델 품질 SLO를 추가합니다. 예를 들어 “추천 모델 정확도 p95 > 85%”, “LLM TTFT p99 < 500ms”, “할루시네이션율 < 2%“와 같이 설정합니다. 초기에는 느슨하게 시작하고, 운영 데이터가 쌓이면 점진적으로 강화합니다.
체크리스트
- SRE와 전통 운영, DevOps의 차이를 설명할 수 있다
- SLI/SLO/SLA의 관계를 이해하고 적절한 SLI를 선택할 수 있다
- Error Budget을 계산하고 정책 기반 의사결정을 할 수 있다
- SEV1~4 심각도 분류와 에스컬레이션 경로를 설계할 수 있다
- 효과적인 런북을 구조화하여 작성할 수 있다
- Blameless 포스트모템 템플릿을 활용하여 장애 보고서를 작성할 수 있다
- On-call 로테이션과 알림 피로 관리 방안을 설명할 수 있다
- Chaos Engineering의 개념과 시작 방법을 이해한다
- AI/ML 서비스에 적합한 SLI를 선정하고 모니터링 방안을 설계할 수 있다

