클라이언트를... 믿는다고? with Timezone

·2022년 8월 7일
0

todo

목록 보기
4/5

아이고 문서부채

이번에 쓸 내용은 타임존에 관련된 내용이다.

해외에서 사용한다면, 어떻게 해야하지?

서버시간이 KST로 맞춰져있으니, 해외에서 사용한다면 사용자에게 현지 시간만큼 조정되야하는데...

라는 생각으로 어떻게 하면 좋을까 생각하다가, 클라이언트에서 타임존만 받아오면 되지 않을까? 라는 생각을 했다.

그리고 그 고민을 트위터에 올렸다가 거의 4시간동안 질문과 이유로 뚜들겨맞았다 ㅋㅋㅋㅋㅋㅋ

여기서 중요한 이야기를 들을 수 있었는데

  • 만약, 여러가지 국가에서 사용을 하는 서비스를 만든다면 UTC를 기준으로 하는 것이 좋다.
    • 보통은 각 국가별로 서버를 두는게 일반적이라는 이야기도 들었다.
    • 혹은 Geo IP 같은 것을 체크 하는 경우도 있다고 한다.
  • 클라이언트에서 조작할 수 있는 모든 값은 서버 기준으로 해야한다.
  • IP를 우회하는 것으로 시간을 조작할 수 있기 때문에 100% 방어를 할 순 없기에, 적당한 수위를 조절해야한다.

덕분에 이런저런 생각을 많이 할 수 있었는데, 총합 개발경력 100년이 넘는 시니어 개발자 분들의 질문공세를 받다가 문득 생각이 난 것이 있었다.

사용자가 국가를 선택하면 되잖아?

그냥 회원가입 할 때 해당 국가를 같이 받아버리고, 그 시간만큼 적용하면 되는 것이였다(....)

지금 만드는 것은 투두리스트(스케줄러)의 형태라서 솔직히 조작을 해봐야 금전적 이득을 챙길 수 없고
불법적(?)사용으로 인한 피해는 사용자 본인이 온건하게 받는 것이니, 조작의 걱정은 안해도 됐다.

즉 서비스에 맞게 리스크에 대한 고민을 줄일 수 있는 것이다.

그렇기에 회원가입을 했을 때 사용자의 국가를 받고 투두를 저장할 때 마다
그 국가에 맞게 시간을 조정해서 저장을 하거나 되돌려줄 때 조정해서 넘겨주면 될 것 같다.

남은 고민?

결국 서버시간은 다시 원점으로 복귀를 해놔야한다(...)

그리고 해결해야하는 것들과 고민.

  • 사용자가 해외를 출국하면, 유저 설정에서 국가를 바꾸게 될 것인데 그 경우 투두도 시간이 적용되서 리턴받도록 하기
  • 써머타임 어떻게 해보기 <- 솔직히 이거 하면 취준생 아니다(....)

그리고 유저에게 사용 국가를 받는 것이 최선은 아닐 수 있다고 고민은 더 해보는게 좋다고 하셨다.
무엇이 더 있을지는.... 솔직히 잘 모르겠는데 뭐가 더 있을지 생각을 해봐야할 것 같다.

profile
물류 서비스 Backend Software Developer

0개의 댓글