1. 로그에 기록된 시간이 9시간 빠르다면
서버 로그를 보다가 “오전 10시에 발생한 오류인데 왜 새벽 1시로 기록되어 있지?”라는 경험을 해보셨나요? 9시간 차이가 난다면 서버 타임존이 UTC로 설정되어 있을 가능성이 높습니다.
타임존 문제는 단순히 불편함을 넘어 실제 운영에 영향을 미칩니다. cron 작업이 엉뚱한 시간에 실행되거나, 데이터베이스에 저장된 날짜가 하루씩 밀리거나, SSL 인증서 유효성 검사가 실패할 수 있습니다.
2. UTC와 KST – 왜 서버 시간이 다를까?
**UTC(협정 세계시)**는 전 세계 표준 기준 시간입니다. 영국 그리니치를 기준으로 하며 시차 없이 +0으로 표시합니다.
**KST(한국 표준시)**는 UTC보다 9시간 빠릅니다. 한국은 UTC+9 시간대에 속합니다.
클라우드 서버는 전 세계 어디서나 동일한 방식으로 관리하기 위해 기본적으로 UTC로 설정됩니다. 국내에서만 서비스한다면 KST로 바꾸는 것이 훨씬 편리합니다.
3. 타임존 변경 방법 (Asia/Seoul)
현재 설정된 타임존을 확인합니다.
timedatectl
출력 결과에서 Time zone 항목이 UTC라면 변경이 필요합니다.
아시아 지역의 사용 가능한 타임존 목록을 확인합니다.
timedatectl list-timezones | grep Asia
서울(한국 표준시)로 변경합니다.
sudo timedatectl set-timezone Asia/Seoul
변경 후 다시 확인합니다.
timedatectl
Time zone: Asia/Seoul (KST, +0900)이 표시되면 성공입니다.
타임존 변경 후에는 서비스들이 새 타임존을 인식하도록 재시작합니다.
sudo systemctl restart nginx sudo systemctl restart mysql
4. NTP가 필요한 이유
타임존을 올바르게 설정해도 서버의 하드웨어 시계 자체가 실제 시간보다 조금씩 틀어지는 현상이 발생합니다. 모든 컴퓨터의 내부 시계는 시간이 지남에 따라 오차가 생깁니다.
**NTP(Network Time Protocol)**는 인터넷의 시간 서버와 주기적으로 동기화해 서버 시간을 항상 정확하게 유지하는 프로토콜입니다.
NTP 동기화가 필요한 이유는 다음과 같습니다. SSL/TLS 인증서 검증에 정확한 시간이 필요합니다. 여러 서버의 로그를 합쳐서 분석할 때 시간이 맞지 않으면 순서가 뒤섞입니다. 금융, 결제 시스템에서는 밀리초 단위의 정확도가 필요합니다.
5. NTP 동기화 상태 확인과 설정
Ubuntu 서버에는 systemd-timesyncd라는 NTP 클라이언트가 기본 내장되어 있습니다. 대부분의 경우 별도 설정 없이 자동으로 동기화됩니다.
동기화 상태를 확인합니다.
timedatectl
출력 결과에서 NTP service: active와 System clock synchronized: yes가 모두 보이면 정상 동기화 중입니다.
systemd-timesyncd 서비스 상태를 확인합니다.
sudo systemctl status systemd-timesyncd
동기화가 안 되고 있다면 서비스를 재시작합니다.
sudo systemctl restart systemd-timesyncd
더 정밀한 동기화가 필요하거나 특정 시간 서버를 사용해야 한다면 chrony를 설치해 활용합니다.
sudo apt install chrony -y sudo systemctl enable chrony sudo systemctl start chrony
설치 후 chronyc tracking 명령으로 동기화 정보를 확인할 수 있습니다.
6. 타임존이 잘못됐을 때 발생하는 실제 문제들
cron 작업 시간 오류 “매일 오전 9시에 리포트를 이메일로 발송”하도록 cron을 설정했는데 UTC 기준으로 실행되어 한국 시간 오후 6시에 발송되는 상황입니다. 타임존을 Korea/Seoul로 변경하면 해결됩니다.
MySQL 날짜 데이터 하루 밀림 UTC 타임존 MySQL에서 한국 자정(UTC 기준 오후 3시) 이후 데이터를 저장하면 날짜가 하루 앞으로 기록됩니다. MySQL 설정에서 time_zone을 +09:00으로 설정하면 해결됩니다.
로그 분석 어려움 여러 서버의 로그를 합쳐서 분석할 때 서버마다 타임존이 다르면 이벤트 순서가 뒤섞입니다. 모든 서버의 타임존을 일치시키는 것이 중요합니다.
7. 정리 및 다음 단계
오늘 배운 핵심을 정리합니다.
- 클라우드 서버 기본 타임존은 UTC이며, 국내 서비스라면 Asia/Seoul로 변경해야 합니다.
sudo timedatectl set-timezone Asia/Seoul명령 하나로 변경할 수 있습니다.- 타임존 변경 후 Nginx, MySQL 등 관련 서비스를 재시작합니다.
- NTP 동기화로 서버 시간이 실제 시간과 차이 없이 유지됩니다.
- Ubuntu는 systemd-timesyncd가 기본으로 활성화되어 있어 자동 동기화됩니다.
다음 글에서는 환경변수가 무엇인지, 코드에 비밀번호를 직접 쓰면 안 되는 이유를 알아보겠습니다.