Star-Breaker-Raid는 일정 관리와 모집 글 작성이 핵심 기능이므로 날짜와 시간이 매우 중요한 요소입니다. 하지만 여러 기능이 시간과 관련되어 작동하는 과정에서 예상치 못한 문제가 발생했습니다. 이 글에서는 그 문제의 원인과 해결 방법을 정리하려 합니다.
시간 차이 문제 (로컬 환경 vs 배포 환경)
로컬 환경에서 포맷팅한 시간이 배포 후 시간이 달라지는 문제가 발생했습니다.
DB 저장 및 함수 실행 문제
로컬 환경과 배포 환경에서 날짜 및 시간을 저장하는 방식이 다르고, 이로 인해 시간 관련 함수 실행 결과에도 차이가 발생했습니다.
서버 랜더링(SSR) vs 브라우저 랜더링(CSR) 문제
서버에서 랜더링할 때와 브라우저에서 랜더링할 때의 시간 차이가 발생했습니다.
이로 인해, 시간을 포맷팅하거나 계산할 때 UTC 기준으로 저장된 데이터를 한국 시간에 맞춰 변환해야 하는 문제가 생겼습니다.
# 배포 환경
TIMEZONE_OFFSET=0
# 로컬 환경 (한국 시간 기준)
TIMEZONE_OFFSET=9
이 변수를 활용하여 시간 포맷팅 시 addHours 함수를 적용해, 모든 환경에서 동일한 시간대를 유지하도록 했습니다.
이제 로컬과 배포 환경에서 일관된 시간을 유지할 수 있습니다.
이번 문제를 해결하면서 서버와 클라이언트의 시간 처리 방식 차이를 정확히 이해하는 것이 중요하다는 것을 깨달았습니다. 초기에는 원인을 몰라 많은 시행착오를 겪었지만, 환경 변수와 랜더링 방식에 따른 포맷팅 차이를 고려하면서 문제를 해결할 수 있었습니다.