Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: server 시간을 기준으로 날짜 계산하게 변경 #94

Conversation

rhkrwngud445
Copy link
Contributor

@rhkrwngud445 rhkrwngud445 commented Apr 19, 2024

관련 이슈번호


close #92

작업 사항


nowDate를 시간이 필요한 도메인에 추가 server response **header[date]** 사용

기타 사항


요구사항 변경에 따라 uimodel을 좀 변경했는데, 좋은 개선 방향이 있으면 말씀주세요!

@rhkrwngud445 rhkrwngud445 added bug Something isn't working Refactoring 리팩토링 labels Apr 19, 2024
@rhkrwngud445 rhkrwngud445 requested a review from chws0508 April 19, 2024 09:31
@rhkrwngud445 rhkrwngud445 self-assigned this Apr 19, 2024
@rhkrwngud445 rhkrwngud445 linked an issue Apr 19, 2024 that may be closed by this pull request
Copy link
Contributor

@chws0508 chws0508 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정말 고생하셨지만, 이 방법보다 훨씬 간단한 방법을 찾아서 공유드립니다...
어차피 넘어오는 데이터가 Seoul시 기준이므로, 저희도 UI에서 LocalDateTime.now 를 "Asia/Seoul" 기준으로 맞추기만 하면 됩니다.

댓글 기능 구현 PR
에 커밋으로 남겨두겠습니다.

@rhkrwngud445
Copy link
Contributor Author

rhkrwngud445 commented Apr 22, 2024

오 혹시 분 또는 초 단위의 시간대가 안맞는 현상도 해결 가능할까요?!
ZoneId를 맞추는 것은, 안드로이드 디바이스의 시간대를 seoul로 맞추는 것으로 알고 있습니다!

현재 문제점인 server와 client의 분 또는 초 단위 싱크가 안 맞는 문제를 해결 할 수 있을까요?!

@chws0508
Copy link
Contributor

오 혹시 분 또는 초 단위의 시간대가 안맞는 현상도 해결 가능할까요?! ZoneId를 맞추는 것은, 안드로이드 디바이스의 시간대를 seoul로 맞추는 것으로 알고 있습니다!

현재 문제점인 server와 client의 분 또는 초 단위 싱크가 안 맞는 문제를 해결 할 수 있을까요?!

넵 확인해봤는데 해결되었습니다

@rhkrwngud445
Copy link
Contributor Author

2024-04-22 23:45:31.858 9859-9930 okhttp.OkHttpClient com.withpeace.withpeace I {"data":{"postId":362,"userId":5,"nickname":"nickname","profileImageUrl":"http://withpeace.s3-website.kr.object.ncloudstorage.com/userProfile/5/21","title":"123","content":"123","type":"FREEDOM","createDate":"2024/04/22 23:45:42","postImageUrls":[],"comments":[]},"error":null}

여전히 지속적으로 발생합니다! 디바이스 시간을 1분 전으로 수동 설정하시면, 재현할 수 있을겁니다!

@chws0508
Copy link
Contributor

2024-04-22 23:45:31.858 9859-9930 okhttp.OkHttpClient com.withpeace.withpeace I {"data":{"postId":362,"userId":5,"nickname":"nickname","profileImageUrl":"http://withpeace.s3-website.kr.object.ncloudstorage.com/userProfile/5/21","title":"123","content":"123","type":"FREEDOM","createDate":"2024/04/22 23:45:42","postImageUrls":[],"comments":[]},"error":null}

여전히 지속적으로 발생합니다! 디바이스 시간을 1분 전으로 수동 설정하시면, 재현할 수 있을겁니다!

디바이스 시간을 수동 설정하면 안맞아야 하지 않나요...? 백엔드와 상대 시간 설정을 맞추는게 핵심이라고 생각합니다

@rhkrwngud445
Copy link
Contributor Author

rhkrwngud445 commented Apr 22, 2024

관련해서 백엔드분과 논의한 슬랙 스레드에 태그 드리겠습니다!
티켓팅 할 때, 수강신청 할 때 해당 사이트 서버시간을 쓰는 것과 같은 원리로 보시면 이해가 편할 것 같습니다!
https://www.youtube.com/watch?v=oWSNOrBbOIU

@chws0508
Copy link
Contributor

관련해서 백엔드분과 논의한 슬랙 스레드에 태그 드리겠습니다!

상대 시간을 보여주는 거라 타임존을 맞추면 해결되는 문제 아닌가요? 서버의 데이터를 기준으로 보여줘야 하지 않을까요? 아마 다른앱들도 수동으로 시간을 바꾸게 되면 다르게 상대 시간이 다르게 나올겁니다.

@rhkrwngud445
Copy link
Contributor Author

서버 시간과 클라이언트 시간이 주기적으로 동기화가 되겠지만, 지속적으로 동일하지는 않습니다!
시간차가 나는 경우 사용자가 -몇 초전이라는 텍스트를 볼 수 있어서 이는 사용자 경험에 좋지 못하다고 판단하였습니다.
0초 전이라는 default text를 둘 수도 있겠지만, 글 작성시간과 현재 시간의 상대적인 시간차를 확인하기 위한 로직으로 판단하여, 해당 로직을 두었어요!

@chws0508
Copy link
Contributor

서버 시간과 클라이언트 시간이 주기적으로 동기화가 되겠지만, 지속적으로 동일하지는 않습니다! 시간차가 나는 경우 사용자가 -몇 초전이라는 텍스트를 볼 수 있어서 이는 사용자 경험에 좋지 못하다고 판단하였습니다. 0초 전이라는 default text를 둘 수도 있겠지만, 글 작성시간과 현재 시간의 상대적인 시간차를 확인하기 위한 로직으로 판단하여, 해당 로직을 두었어요!

시간차가 나는 이유가 TimeZone이 다르기 떄문이었는데, TimeZone만 동일하게 맞춰주면 시간차가 다를일이 없습니다.

@rhkrwngud445
Copy link
Contributor Author

rhkrwngud445 commented Apr 22, 2024

TimeZone은 세계시각을 구분하는 지역 단위입니다. 회사들도 디바이스(컴퓨터) 시간을 맞추기 위해 자체 NTP(시간 동기화 서버)를 두기도 합니다!

@chws0508
Copy link
Contributor

수동으로 시간을 바꿔도 똑같은 시간차를 보여주기 위해 이 PR의 코드를 사용하자는 얘기이신가요?

@rhkrwngud445
Copy link
Contributor Author

정상적인 시간을 보여주는데에 목적이 있습니다. 수동으로 변경하지 상황외에도 클라이언트, 서버간 시간차를 보완하여 -몇 초 라는 단위를 사용자를 아예 볼 수 없을 것입니다.

@chws0508
Copy link
Contributor

TimeZone만 맞추면 -초가 나올일이 없지않나요?

@rhkrwngud445
Copy link
Contributor Author

TimeZone은 네트워크 시간 동기화 도구가 아닌 지역간 시차 단위입니다
TImeZone은 최소 30분 단위의 지역간 시차를 맞추기 위한 단위에요!

@chws0508
Copy link
Contributor

-초가 나오는 경우의 수를 알려주세요

@rhkrwngud445
Copy link
Contributor Author

https://time.navyism.com/?host=naver.com
https://vclock.kr/time/

두 서버의 시간차를 보시면 알 수 있을 것입니다. 클라이언트와 서버 시간이 같나요? 아니면 이해가 안되시는 걸까요?

@chws0508
Copy link
Contributor

모바일에서는 수동으로 설정하지 않는이상 똑같이 네트워크를 통해 시간대를 가져올 것이고, 서버도 자체 시간대를 지정한 것이 아니라 네트워크를 통해 시간을 가져올 텐데, 이 차이가 1초이상 나는 경우는 저는 거의 없다고 생각합니다. TimeZone이 달라서 시간대가 엄청 차이난 것이었지, TimeZone만 맞추면 -초가 나오는 경우가 저는 없을 것이라고 생각됩니다.

@rhkrwngud445
Copy link
Contributor Author

서버시간을 가져오는 곳이 다릅니다
Android는 google NTP 서버에서 시간을 가져오고
spring은 리눅스에서 AWS NTP 서버를 따릅니다
서버별 시간 계산법이 다릅니다

사용자와 서버가 자동 동기화가 잘 된다고 가정하더라도 -초가 안나오게 방어 코드가 있으면 좋지 않을까요?

@chws0508
Copy link
Contributor

서버시간을 가져오는 곳이 다릅니다 Android는 google NTP 서버에서 시간을 가져오고 spring은 리눅스에서 AWS NTP 서버를 따릅니다 서버별 시간 계산법이 다릅니다

사용자와 서버가 자동 동기화가 잘 된다고 가정하더라도 -초가 안나오게 방어 코드가 있으면 좋지 않을까요?

에뮬레이터와 핸드폰 모두 실험을 해보았는데 문제가 없었기에, 서버의 시간대를 이용핦 필요가 없다고 생각했습니다. 현재 저희 기능들이 초단위로 중요한 기능들이 아니라고 생각했고, 모든 시간이 들어간 데이터에 대해 nowDate라는 Column 값이 들어가고 둘의 차이를 계산하는 코드가 늘어나는 것이 약간 불필요하다고 생각됩니다. 정말 만에하나라도 -초가 나오는 경우를 생각한다면 간단히 Duration이 -일 때 0으로 변환하는 코드만 있으면 충분하다고 생각합니다.

@rhkrwngud445
Copy link
Contributor Author

rhkrwngud445 commented Apr 23, 2024

넵 좋습니다 -값일 때 0으로 두는 코드를 두면 될 것 같아요! "방금 전"이라는 텍스트를 쓸 수도 있을 것 같구요

@rhkrwngud445 rhkrwngud445 deleted the fix/#92-서버와_날짜_싱크가_맞지_않는_문제를_해결한다 branch May 15, 2024 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Refactoring 리팩토링
Projects
None yet
Development

Successfully merging this pull request may close these issues.

서버와 날짜 싱크가 맞지 않는 문제를 해결한다
2 participants