← 전체 글로 돌아가기

서버 운영

혼자 서버 운영하면서 반복했던 실수들

팀 없이 서버를 관리하면 같은 실수를 반복하기 쉽다. 내가 실제로 여러 번 당했던 것들을 정리했다.

팀 없이 서버를 혼자 관리하면 실수를 봐줄 사람이 없다. 그래서 같은 실수를 반복하는 경우가 생각보다 많다. 내가 여러 번 겪은 것들을 정리해봤다.

문제가 생기면 여러 곳을 동시에 고친다

가장 흔한 실수다. 서비스가 안 되면 급해져서 nginx 설정도 바꾸고, 포트도 열고, 서비스도 재시작하고, 환경변수도 수정한다 — 동시에.

그러면 결국 뭐가 문제였는지 알 수 없다. 하나씩 바꾸고 확인하는 게 느려 보여도 실제로는 더 빠르다.

로그를 보기 전에 설정 파일을 고친다

로그를 확인하기 전에 "아마 이게 문제겠지" 하고 설정을 바꾸는 건 추측으로 수리하는 것이다.

sudo journalctl -u nginx -n 50 --no-pager
sudo journalctl -f  # 실시간 확인

대부분의 경우 로그에 원인이 있다. 먼저 읽는 습관만 들여도 삽질 시간이 절반은 준다.

디스크 용량을 확인하지 않는다

서비스가 갑자기 죽거나 로그가 안 쌓이면 디스크 용량을 먼저 의심해야 한다. 실제로 겪어보면 생각보다 자주 원인이 여기 있다.

df -h
du -sh /var/log/* | sort -rh | head -10

특히 /var/log가 조용히 쌓이는 경우가 많다. Docker를 쓰면 /var/lib/docker도 주범이 되곤 한다.

방화벽과 프로세스를 동시에 안 본다

포트가 열려 있어도 프로세스가 안 듣고 있으면 접속이 안 된다. 반대로 프로세스가 듣고 있어도 방화벽이 막으면 마찬가지다. 두 가지를 함께 봐야 한다.

sudo ss -lntp | grep LISTEN
sudo ufw status

변경 전 상태를 기록하지 않는다

설정 파일을 고치기 전에 백업을 안 해두면, 나중에 뭘 바꿨는지 알기 어렵다. 간단하게라도 이렇게 해두는 게 낫다.

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.$(date +%Y%m%d)

복잡한 도구가 아니어도 된다. 날짜 붙인 복사본 하나가 수십 분을 아껴준다.


하나씩 보면 당연한 얘기처럼 들리지만, 실제로 장애 상황에서는 이 당연한 것들을 안 지키게 된다. 메모해두고 다음에는 덜 반복하는 게 목표다.