장애를 대하는 태도 - 대응 프로세스와 심리적 안정감
“자연재해를 완벽하게 막을 수 있는 사람이 있을까요?”
개발자가 아무리 완벽한 코드를 짜고 테스트를 해도 장애는 발생합니다. 트래픽이 예상치를 뛰어넘거나(DDoS급 인기), 외부 API가 갑자기 죽거나, 하드웨어가 고장 날 수 있습니다. 장애는 예방하는 것이 최선이지만, ‘장애는 자연재해와 같아서 언제든 발생할 수 있다’는 전제를 받아들이는 것이 대응의 시작입니다 [file:1].
이번 포스트에서는 실제 장애가 터졌을 때 허둥대지 않기 위한 대응 프로세스와, 실패를 성장의 밑거름으로 만드는 조직 문화(심리적 안정감)에 대해 이야기합니다.
1. 장애 대응의 4단계 프로세스
장애 상황은 매우 혼란스럽습니다. 따라서 기계적으로 따를 수 있는 명확한 매뉴얼(Protocol)이 필요합니다. 강의 자료에서는 일반적인 대응 단계를 다음과 같이 정의합니다 [file:1].
1) 장애 탐지 (Detection)
이전 포스트에서 다룬 모니터링 시스템이나 고객의 제보를 통해 문제를 인지하는 단계입니다.
2) 장애 분류 및 전파 (Classification & Propagation)
가장 중요한 단계입니다. 장애를 인지한 즉시 혼자 해결하려 하지 말고, ‘동료에게 알려야’ 합니다.
- 등급 분류: 사소한 버그인지, 서비스 전체 중단(Critical)인지 판단합니다.
- 전파: 사내 메신저(Slack 등)의 장애 채널에 상황을 공유하고, 필요하다면 고객에게도 선제적으로 공지합니다.
3) 장애 복구 (Recovery)
원인 분석보다는 ‘서비스 정상화’가 최우선입니다.
- 롤백(Rollback)을 할 것인지, 핫픽스(Hotfix)를 배포할 것인지, 혹은 서버를 재시작할 것인지 빠르게 결정하여 조치합니다.
- 상황 공유 담당자는 복구 진행 상황을 실시간으로 업데이트합니다.
4) 회고 및 보고 (Retrospective & Review)
상황이 종료된 후, 원인을 분석하고 재발 방지 대책을 세우는 단계입니다.
2. 장애 회고(Post-Mortem): 실패에서 배우기
장애 대응이 끝났다고 끝난 것이 아닙니다. 같은 실수를 반복하지 않기 위해 장애 회고(Post-Mortem) 문서를 반드시 작성해야 합니다. 좋은 회고 문서에는 다음 항목들이 포함되어야 합니다 [file:1].
- 타임라인: 장애 발생부터 해소까지 시간대별로 어떤 조치를 취했는가?
- 영향 범위: 고객에게 어떤 피해(비즈니스 임팩트)가 있었는가?
- 상세 분석 (5-Whys): ‘왜’를 5번 반복하며 근본 원인(Root Cause)을 찾습니다.
- 서버가 죽었다 -> 왜? -> 메모리가 부족했다 -> 왜? -> 특정 API에서 객체를 과도하게 생성했다 -> 왜? …
- Action Item: 단기/중기/장기 대책을 수립합니다.
3. 심리적 안정감 (Psychological Safety)
장애 회고를 할 때 가장 경계해야 할 것은 ‘범인 찾기’입니다.
“로켓 발사는 수없는 실패를 겪습니다. 만약 실패할 때마다 엔지니어를 자른다면, 누가 로켓을 우주로 보낼 수 있을까요?” [file:1]
만약 장애를 낸 사람을 문책하는 분위기라면, 엔지니어들은 도전을 멈추게 됩니다. 코드를 수정하는 것을 두려워하고, 장애를 숨기기에 급급해집니다. 이를 ‘심리적 안정감이 없는 상태’라고 합니다.
Blameless Culture (비난 없는 문화)
건강한 조직은 ‘사람’이 아닌 ‘시스템’을 탓합니다.
- “김 대리님이 코드를 잘못 짰네요” (X)
- “테스트 프로세스에서 이 버그가 걸러지지 않은 이유가 무엇일까요? 배포 파이프라인을 어떻게 개선하면 좋을까요?” (O)
실패를 통해 배운다는 사실을 조직 전체가 인지하고, 장애를 낸 동료를 비난하기보다 함께 문제를 해결하고 시스템을 개선하는 데 집중해야 합니다. 이것이 장애 대응 훈련을 백날 하는 것보다 훨씬 중요합니다.
결론: 시스템과 문화의 조화
백엔드 엔지니어링의 완성은 기술적인 고가용성을 확보하는 것뿐만 아니라, 장애를 의연하게 대처하는 프로세스와 문화를 갖추는 것입니다.
우리는 실패를 막을 수는 없지만, 실패로부터 더 단단한 시스템을 만들 수는 있습니다. 다음 포스트에서는 이 모든 내용을 종합하여, 실제 현업 과제와 학습 로드맵을 정리해보겠습니다.