서버다운 갑자기 서버가 죽었을 때 제가 했던 대응 정리

서버다운

서버를 운영하다 보면 언젠가는 한 번쯤 반드시 겪게 되는 순간이 있습니다. 아무 경고도 없이, 아무 예고도 없이, 모니터링 알람만 요란하게 울리면서 서비스가 멈춰버리는 상황입니다. 그 순간 머릿속이 하얘지면서 ‘이게 지금 진짜인가?’ 싶은 생각이 먼저 듭니다. 저 역시 그랬습니다. 오늘 글에서는 제가 실제로 겪었던 서버다운 상황과, 그때 어떤 식으로 대응했는지를 경험과 정보 위주로 정리해보려고 합니다. 너무 기술적인 설명보다는, 실제 현장에서 느꼈던 판단 과정과 순서, 그리고 그때 왜 그런 선택을 했는지를 중심으로 풀어보겠습니다.

1. 알람이 울렸을 때, 아무것도 하지 않는 3분이 가장 중요했습니다

새벽 시간이었습니다. 휴대폰이 계속 울렸고, 모니터링 알람이 연속으로 들어왔습니다. 처음에는 단순한 일시적인 트래픽 증가라고 생각했습니다. 하지만 접속이 되지 않는다는 메시지를 보는 순간, 아 이건 서버다운이라는 직감이 들었습니다. 그런데 신기하게도, 그 순간 바로 키보드를 두드리지 않았습니다.

예전 같았으면 무작정 서버에 접속해서 이것저것 재시작하고 로그를 뒤지고 있었을 텐데, 그날은 의도적으로 3분 정도 아무것도 하지 않았습니다. 이 3분이 정말 중요했습니다.

서버다운 상황에서 가장 위험한 행동은 ‘패닉 상태에서 손이 먼저 움직이는 것’이더라고요. 뭔가를 고쳐야 한다는 조급함 때문에, 원인도 모른 채 서비스를 더 망가뜨릴 수 있습니다. 저는 우선 종이에 이렇게 적었습니다.

  • 지금 확인된 증상
  • 마지막 배포 시간
  • 최근 변경 사항
  • 모니터링에서 이상하게 보이는 수치

이걸 정리하는 동안 머리가 조금씩 돌아오기 시작했습니다.

솔직히 말씀드리면, 이 3분 동안 손이 근질거렸습니다. 빨리 접속해서 뭔가 해야 할 것 같았거든요. 그런데 이 시간을 참고 나니까 이후 대응이 훨씬 체계적으로 흘러갔습니다.

그 다음으로 한 일은 ‘재시작’이 아니라 ‘상태 확인’이었습니다. CPU, 메모리, 디스크 I/O, 네트워크 상태를 먼저 봤습니다. 서버다운 원인은 생각보다 단순한 경우가 많습니다. 리소스 고갈, 로그 폭증, 디스크 풀, 메모리 누수 같은 것들이 대부분이더라고요.

여기서 중요한 건, 바로 고치려고 하지 않는 것이었습니다. 왜 이런 상태가 되었는지 패턴을 보는 것이었습니다.

이 과정을 거치면서 저는 서버다운이 단순히 ‘서버가 죽었다’가 아니라, ‘어떤 징후들이 쌓여서 결국 터진 결과’라는 걸 체감하게 되었습니다.

2. 재시작보다 먼저 했던 일은 ‘사용자 피해를 멈추는 것’이었습니다

상태를 확인해보니, 특정 프로세스가 메모리를 과도하게 점유하고 있었습니다. 이걸 재시작하면 서비스는 일단 살아날 가능성이 높았습니다. 하지만 저는 바로 재시작하지 않았습니다.

그 대신 먼저 한 일은 공지였습니다.

많은 분들이 서버다운이 나면 기술적인 조치부터 해야 한다고 생각하시는데, 실제로 운영을 해보면 그보다 중요한 건 ‘사용자 혼란을 멈추는 것’이었습니다. 장애 사실을 빠르게 알리고, 현재 조치 중이라는 메시지를 전달하는 것만으로도 문의 폭탄과 불필요한 오해를 줄일 수 있습니다.

저는 간단한 문구로 공지를 올렸습니다. 현재 서버다운으로 인해 접속이 원활하지 않으며, 원인 파악 및 복구 중이라는 내용이었습니다.

그 다음에야 프로세스를 재시작했습니다.

재시작 후 서비스는 정상화되었지만, 저는 안심하지 않았습니다. 왜냐하면 서버다운이 재현될 가능성이 높았기 때문입니다. 근본 원인을 해결하지 않으면, 몇 시간 뒤 혹은 다음 날 다시 같은 일이 반복됩니다.

그래서 바로 로그 분석에 들어갔습니다. 언제부터 메모리 사용량이 비정상적으로 증가했는지, 특정 요청 패턴이 있었는지, 최근 배포된 코드와 연관이 있는지를 확인했습니다.

이 과정에서 느낀 점은, 서버다운은 단순한 시스템 문제가 아니라 ‘운영 프로세스의 문제’일 때가 많다는 것이었습니다. 모니터링 알람이 있었음에도, 그 수치를 평소에 깊게 보지 않았던 제 습관도 원인 중 하나였습니다.

개인적으로 이때 많이 반성했습니다. ‘장애는 갑자기 오는 게 아니라, 내가 무시한 신호들이 모여서 오는구나’ 하는 생각이 들었습니다.

3. 복구가 끝난 뒤에 진짜 중요한 일이 시작되었습니다

서버가 정상화되고 나면, 마음이 놓이면서 그냥 넘어가고 싶은 유혹이 생깁니다. 하지만 서버다운 대응에서 가장 중요한 시간은 사실 이 이후였습니다.

저는 그날 있었던 모든 과정을 문서로 정리했습니다.

  • 장애 발생 시간
  • 최초 인지 시간
  • 실제 복구 시간
  • 원인
  • 재발 방지 방법

이걸 적으면서, 단순히 기술적인 원인뿐 아니라 ‘내가 왜 초기에 이걸 못 알아챘는지’까지 같이 적었습니다. 그리고 모니터링 지표를 새로 추가했습니다. 메모리 사용량 임계치를 더 낮게 잡았고, 특정 로그 패턴이 나오면 바로 알람이 오도록 설정했습니다.

이 과정 덕분에 이후 비슷한 서버다운 상황이 왔을 때, 훨씬 빠르게 대응할 수 있었습니다.

또 한 가지 바꾼 점은, 배포 프로세스였습니다. 작은 변경이라도 배포 후 리소스 사용량을 일정 시간 동안 꼭 확인하는 습관을 들였습니다. 예전에는 배포하고 ‘잘 되겠지’ 하고 넘어갔는데, 이제는 일정 시간 동안 관찰하는 시간을 의도적으로 두고 있습니다.

솔직히 말씀드리면, 이 경험 이후로 서버를 대하는 태도가 완전히 달라졌습니다. 서버다운이 두려운 게 아니라, 대비하지 않은 상태가 더 두렵다는 걸 느꼈습니다.

그리고 무엇보다 중요한 건, 혼자 끙끙 앓지 않는 것이었습니다. 그날 있었던 일을 팀원들과 공유하면서, 다른 시각에서의 피드백도 많이 받았습니다. 제가 놓쳤던 부분도 발견할 수 있었고, 대응 매뉴얼도 훨씬 탄탄해졌습니다.

결국 서버다운은 피할 수 없는 일이지만, 같은 이유로 두 번 당하지 않는 건 충분히 가능하다는 걸 몸으로 배우게 되었습니다.