[TIL] 20241106 TIL

Jaeyoung Ko·2024년 11월 6일

주 작업내역은 leaderboard 기능에 관한 것.

  • 리더보드 기능 완전히 완성

  • 리더보드 : 아이디 하나에 해당하는 최고점만 기록하도록

  • 리더보드 : 시간 관련하여 서버 사이드, UTC 기준 시간으로 설정하도록 변경

  • 몬스터 턴 액션: [강한 일격] 75% 확률로 1.75배 데미지, 25% 확률로 실패, [회복]: 최대체력의 10% 회복 추가



실수한 부분 중 하나는

왜 현재 시각과 내가 처리한 시각이 다른가에서..

const currentDate = new Date();		// 현재 현지시간 KST
const currentIsoDate = new Date().toISOString;		// UTC 기준

KST와 UTC 표준시의 차이였던 것을 알게 되었다.



보통 DATE / TIME에 관한 처리는 어디서 전담하는가?

Server가 전담하는 것이 스탠다드하다. 다음과 같은 이유들로 볼 수 있다.

(1) 신뢰성과 정확성

클라이언트는 로컬 시스템 시간에 의존하게 되며, 사용자가 시스템 시간을 수정할 수 있기 때문에 조작 가능성의 문제점이 생긴다. 반면, 서버는 NTP(Network Time Protocol)와 같은 정확한 시간을 기반으로 운영되므로 더 신뢰도가 높다.


### (2) 시간대 통일과 로컬라이징

글로벌 서비스라고 한다면 여러 클라이언트가 다양한 시간대를 가지고 있기 때문에 이를 고려한 부분이 필요하다. 따라서 서버에서 UTC 표준시를 저장하여 처리하고, 이 데이터에 대해서 클라이언트 기준의 현지 시각에 맞춰 후처리 변환을 하는 것이 일반적이다.



여기서 더 실무적으로 들어간다면

Server가 담당하느냐, Database 기준시로 담당하느냐의 차이도 존재한다고 하는데

이는 보통 서비스나 회사의 정책따라 달리 간다고 한다.

profile
안녕하세요, 고재영입니다. 언제나 즐겁게 살려고 노력합니다.

0개의 댓글