| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- 개발
- 운영체제
- it
- 분산시스템
- 스프링빈
- AWS
- elasticsearch
- fork()
- Data Engineering
- Kubernetes
- Observability
- 커널
- 대규모시스템
- 쿠버네티스
- SRE
- k8s
- tech
- Pub/Sub
- 데이터엔지니어
- OS
- Kafka
- etcd
- 개발자
- 코테
- devsecops
- 엘라스틱서치
- Network
- Monitoring
- 시스템호출
- 인프라
- Today
- Total
모래성 말고 철옹성
[SRE] Error Budget이란? - 서비스 안정성과 개발 속도의 균형점 본문

"우리 시스템이 얼마나 에러가 나도 되나? 의 지표 Error Budget"
Error Budget 이란?
Error Budget(오류 예산)은 Google에서 개발한 SRE 방법론의 핵심개념이다. 서비스의 안정성과 새로운 기능 개발 속도간의 균형을 정량적으로 관리하는 개념으로 보면 된다.
IT업계에 있는 분들이라면 다 아시겠지만 100% 완벽한 소프트웨어는 불가능하다. 기술의 혁신을 가져가자니 시스템의 안정성이 떨어지고 안정성만 따지자니 기술 부채는 늘어간다. 이런 딜레마를 해결하는 방법 중에 하나가 Error Budget인 것 같다.
Error Budget 계산
Error Budget은 보통 아래 식과 같이 계산된다.
Error budget = [100% - availability target]
조직에 서비스 수준 목표를 측정할 수 있다면 SLI, SLO로 더 정교하게 Budget을 계산해볼 수도 있을 것 같다.
예시:
- SLO: 99.9% 가용성
- 월간 1억 건 요청 처리
- Error Budget: 0.1% X 100,000,000 = 100,000개 요청 오류 허용
이렇게 계산하면 일일 허용 오류는 33,333건 요청이 된다. 이 안에서 조직은 자유롭게 시스템 개선이나 실험을 진행해볼 수 있고, 범위를 초과하면 안정성에 집중하면 될 것이다.
Error Budget 활용 전략
현 회사에서 이런 저런 이슈로 시스템에 사소한 작업을 할 때마다 검토를 받아야 하는 Pain Point가 있다.(실무진들의 Pain Point이지 사실 경영/임원진 입장에서는 그래야 마음이 놓일 것 같기도 하다) 우리 조직에 Error Budget 개념을 사용한다면 어떨까? 라는 생각이 들어 내 맘대로 몇 가지 전략을 생각해 봤다.
Error Budget을 사용하려면 이를 측정할 수 있는 Observability 체계가 필요하다.
단계별 대응 정책 설정하기
반기별로 Error Budget 설정 및 KPI 지표 설정 해놓는다.
| 소진률 | 단계 | 대응 방안 |
| 50% | 주의 | 모니터링 체계 강화 ex. cpu, memory alert 임계치 낮추기 등 |
| 75% | 경고 | 신규배포 및 시스템 작업 시 리더급 검토 |
| 90% | 위험 | 신규배포 중단 |
| 100% | 긴급 | 안정성 우선 모드 |
팀별 Error Budget 할당
하나의 시스템에 Error Budget을 설정해놔도 R&R이 모호할 수 있을 것 같다. 하나의 시스템에도 백엔드, 프론트엔드, 인프라, DevOps, 네트워크 등등 여러 이해관계가 있기 때문에 팀단위 별로 Error Budget을 할당해서 해소하는 전략을 생각해봤다.
- 프론트엔드: 월 30% 할당
- 백엔드: 월 50% 할당
- 인프라: 월 20% 할당
에러나면 어느 팀의 Budget에서 차감해?
점점 전략을 짜볼 수록 현실적인 문제에 직면하는 것 같다. :)
- MSA 환경에서는 연쇄 장애 시 책임 소재 모호
- 대규모 Enterprise급의 경우 아예 사업부 자체가 다른 조직 이슈일 수 있는 경우
등등이 있을 것 같다. 기본적으로 어찌됐든 에러가 났다면 고객의 신뢰를 잃어버린 것이니 외부의 불가항력적인 요소에 의한 거라도 (통신사 네트워크의 문제, 물리적인 천재지변 등) 공통 1/N로 차감해야할 것 같다.
결론
결국 빠르게 이슈를 파악하고 대응하기 위해서는 Observability가 확보된 시스템을 만들어야 한다. Observability가 없이 이런 전략을 도입했다면 서로 싸우게 만드는 전략이 될 수도 있을듯 하다.
참고.
https://jdhyeok.tistory.com/23
[SRE] 서비스 수준 목표 - 서비스가 잘 돌아 가는지에 대한 척도
"측정할 수 없으면, 개선할 수도 없다”서비르를 운영하다 보면 사용자, 운영자, 개발자 마다 "서비스가 잘 되고 있구나"의 기준은 제각각이다. 운영자는 "로그가 안보여요", 고객은 "너무 느려요
jdhyeok.tistory.com
'DevOps > SRE' 카테고리의 다른 글
| [SRE] Policy-as-Code란 무엇인가? (0) | 2025.10.03 |
|---|---|
| [Tomcat] 톰캣 클러스터링 - Multicast (0) | 2025.09.03 |
| [SRE] 서비스 수준 목표 - 서비스가 잘 돌아 가는지에 대한 척도 (2) | 2025.08.12 |