← 전체 글로 돌아가기

서버 운영

서버 운영: 시간대별로 체크해야 할 것들

서버를 안정적으로 운영하려면 시간대마다 확인하는 루틴이 필요하다.

서버를 한두 달 운영하다 보면 시간대별로 나타나는 패턴을 발견한다. 특정 시간에 트래픽이 몰리거나, 배치 작업이 실행되면서 부하가 생기거나, 캐시 갱신으로 인한 스파이크가 생긴다.

아침: 데일리 체크

하루를 시작할 때 확인할 것들이다.

# 시스템 리소스
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/

저녁: 내일 대비

배포 예정이 있다면 미리 확인해야 할 것들:

  1. 마이그레이션이 있는가?
  2. 새 환경 변수가 필요한가?
  3. 캐시를 비워야 하는가?
  4. 롤백 계획은?

주기적으로 확인할 것들

주간 (일주일에 한 번)

  • 디스크 사용량 추이
  • 시스템 업데이트 필요 여부
  • 로그 파일 로테이션 상태

월간 (달마다)

  • 인증서 만료 시간 (SSL/TLS)
  • 라이센스 갱신 필요 여부
  • 버전 업그레이드 필요 여부

운영 기록 남기기

echo "$(date '+%Y-%m-%d %H:%M:%S') - Disk: $(df -h | grep '/$' | awk '{print $5}')" >> /var/log/daily-check.log

간단한 스크립트로 매일 기록을 남기면, 나중에 문제의 원인을 추적할 때 아주 유용하다.

마지막이지만 가장 중요한 것

서버 운영은 결국 "작은 확인을 일관되게 반복하는 것"이다. 시간대마다 확인 루틴을 정해두고 지키면, 대부분의 문제는 크기 전에 발견된다.