47. 에러 버짓 (Error Budget)
⚠️ 이 문서는 구글의 SRE(사이트 신뢰성 공학) 철학에서 "시스템이 100% 완벽하게 다운되지 않아야 한다"는 강박을 버리고, 허용 가능한 장애율(SLO 위반분)을 '합법적인 예산(Budget)'으로 취급하여 개발 속도와 시스템 안정성 간의 갈등을 기계적으로 조율하는 에러 버짓(장애 예산) 개념을 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 우리가 달성하기로 한 서비스 수준 목표(SLO)가 '99.9% 가용성'이라면, 100%에서 이를 뺀 '나머지 0.1%'의 장애 시간(한 달에 약 43분)을 개발팀이 마음대로 쓸 수 있는 통장 잔고처럼 생각하는 것이다.
- 가치: 항상 무사안일을 추구하는 운영팀(Ops)과 무조건 새로운 기능을 빨리 배포하고 싶은 개발팀(Dev) 사이의 영원한 감정싸움을 종식시키고, '숫자(데이터)'에 기반한 객관적인 배포 의사결정을 가능하게 한다.
- 기술 체계: 에러 버짓이 남아있으면 과감한 배포와 실험을 승인하고, 버짓이 고갈(Exhausted)되면 신규 배포를 전면 중단(Freeze)하고 오직 안정성 확보(버그 픽스 등)에만 매달리게 하는 규정(Policy)으로 작동한다.
Ⅰ. 100% 가용성의 허상과 개발-운영의 갈등
시스템이 단 1초도 안 죽는다는 것은 물리적으로 불가능하며 경제적으로도 비합리적이다.
- 가용성의 한계 효용:
- 가용성을 99%에서 99.9%로 올리는 비용보다, 99.9%에서 99.99%로 올리는 비용이 10배 이상 든다. 스마트폰 통신망 자체가 가끔 끊기는데, 뒷단 서버를 100%로 무한정 유지하려는 것은 엄청난 낭비다.
- 사일로(Silo)의 갈등:
- 개발자(Dev)의 인사 평가는 "얼마나 많은 신기능을 빨리 출시했는가"에 달렸고, 운영자(Ops)의 평가는 "서버가 얼마나 안 죽었는가"에 달렸다.
- 운영팀은 서버가 죽는 걸 막기 위해 개발팀의 배포 일정을 어떻게든 늦추고 검열하려 하며, 개발팀은 이를 답답해한다.
📢 섹션 요약 비유: 완벽한 무균실(100% 가용성)을 만들기 위해 소독 비용에 전 재산을 쏟는 낭비 대신, "우리 몸은 한 달에 감기 한 번(0.1%) 정도 걸려도 생명에 지장이 없다"고 합의하고, 남는 돈과 체력으로 밖으로 뛰어나가 활기차게 노는(신규 기능 개발) 구글식 철학입니다.
Ⅱ. 에러 버짓의 수학적 원리와 운영 방식
버짓(예산)은 매달 초기화되는 마이너스 통장과 같다.
- 에러 버짓의 계산 (SLI와 SLO):
- 사용자 지표(SLI)를 측정하여, 우리 서비스의 허용선(SLO)을 월간 99.9%로 합의했다고 치자.
- 한 달은 약 43,200분이다. 0.1%의 에러 버짓은
43,200 * 0.001 = 43.2분이다. - 즉, 우리는 한 달 동안 서버를 43.2분 동안 완전히 죽여도(에러를 뿜어도) 고객과의 약속을 어긴 것이 아니다.
- 통장 잔고의 활용 (Risk Taking):
- 43분의 예산이 넉넉히 남아있다면, 개발팀은 혁신적이고 약간은 불안정한 코드를 과감하게 배포해도 운영팀이 막지 않는다. (혁신 장려)
- 버짓 고갈 시의 강제 조치 (Freeze):
- 만약 이달 초반에 대형 장애가 터져서 43분의 에러 버짓을 다 써버렸다면?
- 남은 한 달 동안 개발팀은 '신규 기능 배포 전면 금지' 조치를 당한다. 모든 엔지니어링 리소스는 코드 리팩토링, 테스트 코드 보강, 장애 대응 자동화 등 시스템 '안정성'을 복구하는 데 강제로 투입되어야 한다.
📢 섹션 요약 비유: 엄마(운영)가 아이(개발)에게 한 달에 피시방을 43분 갈 수 있는 용돈(버짓)을 줍니다. 아이는 용돈이 남았으면 자유롭게 게임(새 배포)을 할 수 있지만, 용돈을 다 써버리면 남은 한 달 동안은 강제로 집에서 공부(안정성 복구)만 해야 하는 객관적인 규칙입니다.
Ⅲ. 문화적 혁신: Blameless (비난 없는 장애 처리)
에러 버짓은 사람을 탓하는 문화를 시스템이 책임지는 문화로 바꾼다.
- 책임 소재의 명확화:
- 버짓 룰을 합의했다면, 버짓 범위 내에서 발생한 장애는 배포를 한 개발자의 잘못도 아니고, 시스템을 못 막은 운영팀 잘못도 아니다. 그것은 "혁신을 위해 회사가 기꺼이 지불한 정상적인 비용"일 뿐이다.
- 데이터 기반 협상:
- 비즈니스 부서(기획팀)가 "이 기능 당장 이번 주에 출시해 줘!"라고 억지를 부릴 때, 엔지니어들은 "현재 에러 버짓이 바닥나서 정책상 이번 주는 배포 불가합니다. 버짓이 충전되는 다음 달 1일에 배포하겠습니다"라며 감정 소모 없이 데이터로 방어할 수 있다.
📢 섹션 요약 비유: 교통사고가 났을 때 운전자를 욕하며 싸우는 것이 아니라, "과속방지턱(SLO)을 넘지 않고 규정 속도로 달리다 난 사고는 자동차 제조 결함(시스템 취약점)이니, 운전자를 문책하지 말고 차체 강화(리팩토링)에 투자하자"는 선진적 기업 문화입니다.