서버 운영
서버 운영: 시간대별로 체크해야 할 것들
서버를 안정적으로 운영하려면 시간대마다 확인하는 루틴이 필요하다.
서버를 한두 달 운영하다 보면 시간대별로 나타나는 패턴을 발견한다. 특정 시간에 트래픽이 몰리거나, 배치 작업이 실행되면서 부하가 생기거나, 캐시 갱신으로 인한 스파이크가 생긴다.
아침: 데일리 체크
하루를 시작할 때 확인할 것들이다.
# 시스템 리소스
df -h # 디스크 사용량
free -h # 메모리 사용량
uptime # 로드 평균
# 주요 프로세스
sudo ss -lntp # 포트별 프로세스
# 로그 확인
sudo journalctl -n 80 --no-pager
밤사이 뭔가 문제가 있었는지, 로그 크기가 비정상적으로 커지지는 않았는지 확인한다.
낮: 환경 차이 확인
로컬 개발 환경과 운영이 일치하는지 확인하는 시간이다.
- 로컬 빌드가 정상적으로 되는가?
- 최근 배포 이후 에러가 없는가?
- 타사 API 연동이 정상인가?
# 포트별로 열려있는 서비스
sudo ss -lntp | grep LISTEN
오후: 권한과 설정 재확인
운영 중 권한이 빠지는 경우가 있다. 특히 파일 퍼미션이나 sudo 권한이 점진적으로 문제가 될 수 있다.
# 중요 파일의 권한
ls -la /etc/nginx/ # 웹 서버
ls -la /var/log/ # 로그 디렉토리
ls -la /home/app/ # 애플리케이션 홈
백업 상태 확인
일주일에 한 번은 백업이 제대로 이루어지는지 확인한다.
ls -lh /backups/
du -sh /backups/
저녁: 내일 대비
배포 예정이 있다면 미리 확인해야 할 것들:
- 마이그레이션이 있는가?
- 새 환경 변수가 필요한가?
- 캐시를 비워야 하는가?
- 롤백 계획은?
주기적으로 확인할 것들
주간 (일주일에 한 번)
- 디스크 사용량 추이
- 시스템 업데이트 필요 여부
- 로그 파일 로테이션 상태
월간 (달마다)
- 인증서 만료 시간 (SSL/TLS)
- 라이센스 갱신 필요 여부
- 버전 업그레이드 필요 여부
운영 기록 남기기
echo "$(date '+%Y-%m-%d %H:%M:%S') - Disk: $(df -h | grep '/$' | awk '{print $5}')" >> /var/log/daily-check.log
간단한 스크립트로 매일 기록을 남기면, 나중에 문제의 원인을 추적할 때 아주 유용하다.
마지막이지만 가장 중요한 것
서버 운영은 결국 "작은 확인을 일관되게 반복하는 것"이다. 시간대마다 확인 루틴을 정해두고 지키면, 대부분의 문제는 크기 전에 발견된다.