서버 운영
개발 환경에선 멀쩡한데 서버에서만 터지는 날짜 처리 문제
타임존, 날짜 형식, 데이터 타입 불일치. 로컬과 서버의 환경 차이는 보통 시간 관련 코드에서 드러난다.
개발하면서 가장 답답한 상황이 바로 이거다. 로컬 머신에서 테스트할 땐 아무 문제없는데, 서버에 올리자마자 에러가 터진다. 특히 날짜나 시간을 다루는 코드는 더 그렇다.
이유는 간단하다. 로컬 머신과 운영 서버의 시스템 타임존이 다르거나, 데이터베이스 설정이 다르거나, 시간 관련 라이브러리 버전이 다를 수 있다.
먼저 서버의 상태를 본다
sudo ss -lntp
df -h
sudo journalctl -n 80
어떤 포트가 열려 있는지, 디스크 여유가 있는지, 최근 시스템 로그는 뭔지. 이 기본 정보부터 확인한다.
권한과 환경변수
파일 권한, 환경변수, 데이터베이스 연결 설정. 로컬에선 개발자 계정으로 돌아가지만, 서버에선 특정 애플리케이션 유저로 돌아간다. 권한이 다르면 같은 코드도 다르게 동작한다.
마지막으로는 프로세스 상태를 실제로 확인해야 한다. 원래 증상을 같은 조건에서 다시 재현해본다. 로그와 응답에서 달라진 부분을 한 줄로 설명할 수 있으면, 그때부턴 수정이 간단하다.
내가 배운 건, 서버 문제는 해결 자체보다 "어디가 달라졌는지" 설명할 수 있는 상태가 더 중요하다는 것. 그걸 알면 비슷한 문제는 훨씬 빠르게 푼다.