알림 기준을 어떻게 정할 건지가 문제다. CPU 75%면 알림? 에러율 1%면 알림? 이 숫자들이 감으로 정해진 거라면 SLO 달성과 직접 연결이 안 된다.
SLO 기반 알림은 SLO와 Error Budget을 기준으로 알림을 설계하는 방식이다.
Error Budget이 얼마나 빠르게 소진되고 있는지를 나타내는 지표다.
SLO: 월 99.9% 가용성 → Error Budget = 월 43.2분
Burn Rate 1 = 정상 속도로 소진 중
Burn Rate 10 = 10배 빠르게 소진 중
Burn Rate 720 = 1시간 안에 한 달치 Error Budget을 다 쓴다
Burn Rate가 높을수록 긴급하다.
| 방식 | 문제 |
|---|---|
| 단순 에러율 기반 | 에러율 1%가 1분인지 1시간인지 모른다 |
| 고정 임계값 기반 | SLO와 연결이 없어서 실제 영향도를 모른다 |
| Burn Rate 기반 | SLO 달성 여부에 직접 연결되어 있다 |
에러율이 낮아도 오래 지속되면 Error Budget이 많이 소진된다. 반대로 에러율이 높아도 금방 회복되면 SLO에 영향이 없다. Burn Rate는 이 둘을 모두 반영한다.
Burn Rate만으로는 부족하다. 단기 급등인지 장기 지속인지 구분이 안 되기 때문이다.
| 윈도우 | 역할 |
|---|---|
| 1시간 | 지금 당장 빠르게 소진되고 있는지 감지 |
| 6시간 | 단기 급등이 아니라 실제 지속되는 문제인지 확인 |
두 윈도우 모두 Burn Rate가 높을 때만 알림을 낸다. 1시간만 높으면 노이즈일 가능성이 크다.
| 티어 | Burn Rate 기준 | 대응 |
|---|---|---|
| Page (즉시 대응) | 14x 이상 | 1시간 안에 한 달 Error Budget 5% 소진 |
| Ticket (업무 시간 대응) | 1x ~ 3x | 느리게 소진 중, 당장 급하진 않음 |
모든 알림을 Page로 설계하면 Alert Fatigue가 온다. 긴급도에 따라 티어를 나눠야 한다.
SLO 기반 알림 설계 순서는 이렇다.
SLO 정의 → Error Budget 계산 → Burn Rate 설계 → 알림 티어 설정
기존 임계값 방식보다 복잡하지만 사용자 영향도와 직접 연결되어 있고, Alert Fatigue를 줄일 수 있다. 긴급한 것과 그렇지 않은 것을 구분하는 게 핵심이다.