에러 버짓
Error Budget
지표
정해 둔 품질 목표를 어기지 않으면서 써도 되는 실패의 총량으로, 새 기능을 내보낼지 안정화를 먼저 할지를 가르는 데 씁니다.
등장 배경
서비스를 운영하는 팀 안에는 방향이 반대인 두 힘이 늘 있습니다. 한쪽은 빨리 내보내자고 하고, 다른 쪽은 멈추지 않게 하자고 합니다. 새 기능을 배포할 때마다 장애 확률은 올라가므로 둘은 같은 자원을 놓고 다투는 관계입니다.
문제는 이 다툼에 기준이 없었다는 것입니다. 지현이 금요일에 결제 화면을 내보내자고 하면 태오가 위험하다고 답하고, 그다음은 목소리 큰 쪽이 이깁니다. 지난달에 장애가 있었으면 태오가 이기고, 한동안 조용했으면 지현이 이깁니다. 같은 위험을 놓고도 지난주에 무슨 일이 있었는지에 따라 답이 달라지니, 두 사람 다 상대가 감으로 말한다고 느낍니다.
무장애를 목표로 잡으면 이 다툼이 끝날 것 같지만 그쪽이 더 나쁩니다. 실패를 0으로 만들려면 배포를 멈추는 수밖에 없고, 그러면 제품이 자라지 않습니다. 남은 위험을 마지막 1퍼센트까지 걷어 내는 데 드는 돈은 앞의 90퍼센트를 걷어 낸 값보다 큽니다.
에러 버짓은 다툼을 없애는 대신 규칙으로 바꾼 장치입니다. 실패해도 되는 양을 미리 숫자로 정해 두고, 그 숫자가 남아 있으면 내보내고 다 쓰면 멈춥니다. 회의에서 정하던 것을 잔액이 정하게 만든 것입니다.
계산 방법
목표치에서 100퍼센트를 뺀 나머지가 예산이고, 그 비율을 기간 전체의 요청 수나 시간에 곱하면 실제로 쓸 수 있는 양이 나옵니다. 네 단계입니다.
- 무엇을 잴지 고릅니다. 서비스 품질을 실제로 재는 값을 SLI라고 합니다. 페이지덱은 문서 저장 요청의 성공률을 씁니다. 저장 버튼을 눌렀을 때 문서가 실제로 저장됐는지가 이 제품에서 가장 아픈 지점입니다.
- 목표를 정합니다. 그 값을 어디까지 지키겠다고 팀이 적어 둔 선이 SLO입니다. 저장 성공률 99.9퍼센트로 잡았다고 하겠습니다.
- 남은 비율이 예산입니다. 100에서 99.9를 빼면 0.1퍼센트입니다.
- 기간의 총량에 곱합니다. 한 달 저장 요청이 3000만 건이면 0.1퍼센트는 3만 건입니다. 이 3만 건이 이번 달에 실패해도 되는 양입니다.
쓴 만큼 줄고 달이 바뀌면 다시 찹니다. 어느 날 배포가 잘못돼 40분 동안 저장이 안 되고 그 사이 1만 2천 건이 실패했다면 이번 달 예산의 40퍼센트를 한 번에 쓴 것이고, 남은 3주를 1만 8천 건으로 버텨야 합니다.
시간으로 재는 방식도 같습니다. 한 달을 기준으로 99.9퍼센트면 멈춰도 되는 시간이 43분입니다. 99.99퍼센트로 한 자리를 올리면 4분으로 줄어듭니다. 목표를 한 자리 올릴 때마다 여유가 10분의 1이 되는데, 이 계산에서 가장 자주 놓치는 자리입니다. 가동률만 보던 팀이 숫자를 쉽게 올려 적었다가 첫 달에 예산을 다 쓰는 일이 여기서 생깁니다.
좋은 수준의 기준
잔액이 많이 남은 것은 좋은 상태가 아닙니다. 예산은 아껴서 남기는 돈이 아니라 쓰라고 배정한 몫입니다. 달이 끝날 때마다 90퍼센트가 남아 있다면 둘 중 하나입니다. 목표를 실제 실력보다 느슨하게 적었거나, 팀이 내보낼 수 있는 것도 안 내보내고 있는 것입니다. 후자라면 경쟁 제품이 세 번 개선하는 동안 한 번 개선하는 속도로 가고 있다는 뜻입니다.
월말 소진율이 60~80퍼센트 구간에 들어오는 상태를 목표로 삼습니다. 목표만큼 안정적이면서 여유를 놀리지도 않았다는 신호입니다. 석 달 연속 20퍼센트에 머물면 목표를 99.9에서 99.95로 올려 잡을 때가 됐고, 석 달 연속 첫 주에 다 쓴다면 목표가 지금 구조로는 지킬 수 없는 선이라는 뜻입니다.
다 쓴 뒤의 규칙을 미리 정해 두는 것이 이 지표의 절반입니다. 페이지덱은 예산이 0이 되면 새 기능 배포를 멈추고 안정화 작업만 합니다. 규칙은 반대 방향으로도 작동합니다. 잔액이 넉넉하면 태오는 위험해 보이는 실험도 반대하지 않습니다. 실패해도 되는 몫을 아직 들고 있기 때문입니다.
한 가지 더 봅니다. 예산이 줄어드는 모양입니다. 매일 조금씩 고르게 줄면 서비스가 원래 그 정도라는 뜻이라 목표 자체를 다시 봐야 하고, 평소에는 거의 안 줄다가 배포한 날에만 크게 꺾이면 배포 과정을 손볼 자리입니다. 뒤쪽이면 변경 실패율을 같이 놓고 봅니다.
실무 용례
"이번 달 에러 버짓 70퍼센트 썼어요. 금요일 배포는 다음 주로 미루죠."
남은 여유로는 주말에 문제가 생겼을 때 감당이 안 된다는 판단입니다.
"버짓이 8할 넘게 남았는데 이 실험을 왜 미루죠?"
안전을 이유로 미루기에는 근거가 없다는 반박입니다.
"이 정도 실패는 버짓 안에서 처리되는 수준이라 새벽에 안 깨워도 됩니다."
목표를 위협하지 않는 크기이니 아침에 봐도 된다는 뜻입니다.
페이지덱에서는 매주 월요일 운영 회의 첫 화면이 이 잔액입니다. 태오가 남은 양과 지난주 소진 내역을 읽고, 큰 폭으로 꺾인 날이 있으면 그날 무슨 배포가 있었는지를 함께 봅니다. 지현은 이 숫자를 보고 이번 주에 어떤 항목을 내보낼지 정합니다. 잔액이 절반 아래로 내려간 주에는 화면이 크게 바뀌는 항목을 뒤로 미루고 손이 적게 가는 것부터 내보냅니다.
기업 고객과의 계약에 적힌 SLA는 이 잔액보다 한 단계 느슨하게 잡아 둡니다. 계약서에 99.5퍼센트를 적고 팀 목표를 99.9퍼센트로 두면, 예산이 바닥나는 시점과 요금을 돌려줘야 하는 시점 사이에 손볼 시간이 생깁니다.
흔한 오해
에러 버짓을 장애를 허락하는 문서로 읽는 경우가 많습니다. 실패해도 되는 양을 적어 둔 것이니 그렇게 보일 만합니다. 하지만 이 숫자가 허락하는 것은 실패가 아니라 위험을 감수한 시도입니다. 아무 대비 없이 낸 장애도 예산을 깎고, 되돌릴 준비를 해 두고 내보냈다가 5분 만에 되돌린 배포도 예산을 깎습니다. 둘을 같은 눈금으로 재기 때문에 팀은 자연히 빨리 알아차리고 빨리 되돌리는 쪽으로 움직입니다. 이 점을 놓치면 예산을 핑계로 준비 없는 배포가 늘고, 셋째 주에 잔액이 0이 된 채로 남은 달을 보내게 됩니다.
예산을 남기는 것이 잘한 일이라고 보는 것도 흔합니다. 돈을 안 쓰면 아낀 것이라는 감각이 그대로 옮겨 옵니다. 실제로는 쓰지 않은 예산은 다음 달로 넘어가지 않고 그냥 사라집니다. 남겼다는 것은 낼 수 있었던 개선을 내지 않았다는 뜻입니다. 이 오해가 굳으면 잔액을 아끼는 것이 목표가 되고, 그 상태로 반년이 지나면 서비스는 아주 안정적인데 작년과 같은 제품이 됩니다.
자주 헷갈리는 용어
| 용어 | 무엇을 적는가 | 에러 버짓과의 차이 |
|---|---|---|
| SLO | 지키겠다고 정한 목표치 한 줄 | 목표는 고정된 선이고 에러 버짓은 그 선까지 남은 여유분입니다. 목표가 정해져야 예산이 계산되므로 순서가 정해져 있습니다 |
같이 보면 좋은 페이지
연관 용어
마지막 업데이트 2026-09-16