← 전체 글로 돌아가기

서버 운영

서버에서만 터질 때 로컬과 운영 환경 비교하는 법

로컬에서는 완벽한데 서버에만 가면 버그가 나타난다. 이런 악몽 같은 상황을 빠르게 진단하는 체계를 정리했다.

개발하다 보면 누구나 한 번쯤 겪는다. 로컬에서는 모든 게 완벽한데, 서버에 배포하는 순간 무언가 터진다. 검색 기능이 안 되거나, UI가 이상하게 표시되거나, 응답 속도가 급격히 느려진다.

문제를 크게 잡지 말기

가장 큰 실수는 문제를 너무 크게 잡는 것이다. "서버에서 다 터진다"고 생각하면 모든 파일이 의심스러워진다. 대신 정확한 시점을 찾자.

로컬과 운영 환경의 차이점 나열하기

로컬 환경과 서버 환경을 체크리스트로 정리해보자:

  • 환경 변수 값들
  • 데이터베이스 버전
  • 캐시 설정
  • 시간대
  • 메모리 할당
  • 디스크 상태

이 중 하나가 다르면 같은 코드도 다르게 동작한다.

서버의 실시간 상태 확인하기

sudo ss -lntp
df -h
sudo journalctl -n 80

포트가 정상인지, 디스크가 부족하지 않은지, 에러 로그는 없는지 빠르게 확인한다. 그 다음 애플리케이션 로그를 본다.

응답 그 자체를 비교하기

로컬에서 같은 요청을 보냈을 때의 응답과 서버의 응답을 비교한다. 응답 헤더, 응답 바디, 응답 시간 등을 기록해두고 어디가 다른지 본다.

작은 것부터 한 가지씩만 수정하고 확인하자. 한 번에 여러 설정을 바꾸면 어디서 문제가 풀렸는지 영원히 모른다.

결과를 남기기

마지막으로 왜 문제가 발생했는지, 어떻게 해결했는지를 짧게라도 기록해두면, 다음에 비슷한 증상이 나올 때 훨씬 빠르게 대응할 수 있다.