← 모든 글

on-call 의 진짜 비용

페이저 한 번에 끝나는 게 아니다. 대기·심리·수면 — 셋 다 돈이다.

알림이 안 울려도 비용은 나간다

조용한 밤이었다. 페이저는 울리지 않았다. 그런데 다음 날 오전 내내 멍했다.

on-call 비용을 “실제로 깨어난 횟수 × 복구 시간” 으로만 계산하면 절반도 못 잡는다. 진짜 비용은 대기 상태 자체다.

핸드폰을 침대 옆에 두고 자는 순간부터 수면 구조가 바뀐다. 얕은 수면이 길어지고, 깊은 수면(N3) 비율이 줄어든다. 알림이 실제로 오든 안 오든 뇌는 이미 경계 모드다. 수면 연구에서는 이걸 “anticipatory arousal” 이라고 부른다. 쉽게 말하면, 몸은 누워 있지만 신경계는 일하고 있다.

일주일 on-call 후 체감이 좋은 날이 없었던 이유가 여기 있었다.

심리 비용은 누적된다

on-call 중 집중 작업 효율이 얼마나 되냐고 묻는다면, 솔직히 60% 정도. 코드를 보다가도 슬랙이 튀면 반사적으로 확인한다. 튀지 않아도 확인한다. “혹시 알림 놓쳤나?” 루프가 백그라운드에서 돌아간다.

이건 팀 규모가 작을수록 더 심하다. 우리 팀은 한때 3명이 로테이션을 돌렸다. 2주에 1번씩 7일 풀 대기. 주말 낮에 카페에 앉아서도 노트북을 열어뒀다. 완전히 자리를 비울 수 없으니 여행도 못 가고, 술도 반쯤 마시다 멈췄다. “만약 지금 페이지 오면?” 이 질문이 늘 따라다녔다.

복구에 걸린 시간은 30분이었을 수 있다. 그 30분 전후로 잠식된 시간은 훨씬 길다.

한 가지 더. 알림 임계값이 너무 낮게 잡혀 있으면 노이즈 피로가 쌓인다. false positive 가 3번 이상 연속으로 오면, 다음 알림을 받았을 때 “어차피 별거 아니겠지” 가 된다. 이게 실제 장애를 늦게 보는 원인이 된다. 피로가 판단력을 깎는다.

그래서 뭘 바꿨나

말로만 하면 의미 없으니 실제로 바꾼 것들.

알림 임계값 재조정. 에러율 1% 트리거를 5분 sustained 로 바꿨다. 순간 스파이크 알림이 줄고, 진짜 사건만 남았다. 노이즈가 주당 8건에서 2건으로 줄었다.

로테이션 간격 명문화. 팀이 4명 이하면 7일 주기가 너무 짧다. 최소 14일에 1번을 목표로 헤드카운트 계획에 반영했다. 사람 안 늘어나면 서비스 범위를 줄이는 쪽으로. “운영 가능한 규모” 를 팀 규모와 연동해서 봐야 한다는 걸 이제는 채용 시점에 같이 얘기한다.

대기 보상 별도 집계. 실제 호출 없이 대기만 한 주도 on-call 수당이 나가야 한다. 조용한 주가 “공짜” 처럼 보이면 로테이션 설계 개선 유인이 사라진다. 조용한 것도 비용이 들었다는 걸 수치로 남겨야 다음에 설계를 고친다.

on-call 이후 회복 시간. 야간 호출이 1시간 이상 걸린 날 다음 날 오전은 미팅 금지로 캘린더에 박았다. 이게 처음에는 어색했는데, 막상 해보면 다음 날 오후 판단력이 확실히 다르다.

한 가지 더 바뀌지 못한 것. 사후 보고서는 여전히 늦다. 장애 수습하고 나면 기력이 없어서 48시간 안에 쓰는 게 잘 안 된다. 다음 on-call 사이클 돌기 전에 템플릿이라도 채워두는 걸 팀 의식으로 만드는 게 숙제로 남아 있다.

다음 한 가지

다음 on-call 주 끝나는 날, 알림 건수·수면 시간·대기 체감 점수 셋을 짧게라도 기록해둔다 — 숫자가 없으면 설계를 바꿀 명분도 없다.


🛒 이 글과 어울리는 추천 상품

위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.