새벽 3시, 휴대폰이 울립니다. 결제 성공률이 급락했다는 알림입니다. 잠에서 덜 깬 채로 노트북을 여는 그 순간이, 사실 한 조직의 운영 성숙도를 가장 정직하게 드러냅니다. 이 글은 여러 장애를 겪으며 배운 것들을 회고합니다.
운영 문제: 영웅에 의존하는 대응의 한계
초기에는 시스템을 가장 잘 아는 한 사람이 모든 장애를 해결했습니다. 빠르지만 위험한 구조였습니다. 그 사람이 휴가를 가면 복구가 멈췄고, 지식은 그의 머릿속에만 있었습니다. 좋은 온콜은 영웅이 아니라 누구나 따라갈 수 있는 절차에 의존해야 한다는 걸 비싸게 배웠습니다.
대응 흐름: 진정하고, 좁히고, 복구한다
- 감지: 좋은 알림은 증상이 아니라 사용자 영향(성공률·지연)을 알린다
- 분류: 심각도(SEV)를 정해 호출 범위와 커뮤니케이션을 결정
- 완화: 근본 원인보다 먼저 영향 차단(롤백·트래픽 차단)
- 복구: 정상화 확인 후 임시 조치를 정식 조치로 대체
가장 중요한 교훈은 ‘원인 규명보다 완화가 먼저’라는 순서였습니다. 새벽에 근본 원인을 파헤치느라 30분을 쓰는 대신, 직전 배포를 즉시 롤백했다면 영향 시간을 1/5로 줄일 수 있었습니다.
비난 없는 포스트모템
장애는 사람의 실수가 아니라 그 실수를 허용한 시스템의 문제다.
포스트모템에서 ‘누가 잘못했나’를 묻기 시작하면 사람들은 사실을 숨깁니다. ‘어떤 안전장치가 없어서 이 실수가 장애로 번졌나’를 물어야 시스템이 개선됩니다. 우리 팀은 모든 SEV2 이상 장애에 대해 48시간 내 포스트모템을 작성하고, 거기서 나온 액션 아이템을 다음 스프린트에 반드시 반영하는 규칙을 세웠습니다.
모니터링과 온콜 건강
온콜 자체도 측정 대상입니다. 야간 호출 빈도, 오탐(false positive) 비율, MTTR을 추적했습니다. 오탐이 많은 알림은 사람을 둔감하게 만들어 진짜 장애를 놓치게 합니다. 6개월간 노이즈 알림을 정리하니 야간 호출이 절반으로 줄었고, 동시에 진짜 장애의 평균 복구 시간도 짧아졌습니다.
정리
장애는 피할 수 없지만 배움의 재료로 바꿀 수는 있습니다. 영웅 의존을 절차로, 비난을 학습으로, 노이즈를 신뢰로 바꾸는 과정이 곧 운영 성숙입니다. 새벽 3시의 알림은 괴롭지만, 그것을 줄여가는 여정이 결국 더 단단한 시스템을 만듭니다.