-
Notifications
You must be signed in to change notification settings - Fork 1
Closed
Description
1. 배경 및 목적 (Context)
현재 프로젝트는 한국 시간(KST)에 종속되어 있어, 글로벌 서비스 확장 시 데이터 정합성 문제가 발생할 수 있습니다. 이를 해결하기 위해 "Back-end는 절대 시간(UTC), Front-end는 상대 시간(Local)" 원칙을 도입합니다.
- 현황:
serverTimezone=Asia/Seoul고정 및LocalDateTime사용 (타임존 정보 없음) - 목표: 서버 및 DB는 표준시(UTC)만 취급하고, 사용자에게 보여주는 시점만 각자의 로컬 시간으로 변환합니다.
2. 역할별 핵심 변경 사항 (Action Items)
Front-end
프론트엔드는 서버에서 받은 UTC 시간을 사용자 기기 설정에 맞춰 변환하는 역할에 집중합니다.
- [삭제] 시간 입력값 제외: 일기 생성(
CreateDiaryRequest) 시dateTime필드를 전송하지 않습니다. 서버가 요청 수신 시점을 기준으로 자동 생성합니다. - [추가] 타임존 변환 로직: 서버 응답(
Response DTO)으로 오는 ISO 8601 형식의 UTC 시간(예:2024-05-20T10:00:00Z)을 브라우저/앱의 로컬 타임존으로 변환하여 노출해야 합니다. - [참고] 스웨거 확인: API 문서상에서 삭제된 필드와 변경된 응답 포맷(끝에
Z가 붙는 형태)을 확인해 주세요.
Back-end (구현 세부 사항)
데이터의 저장 및 처리 신뢰성을 높이기 위해 서버 설정을 전면 수정합니다.
-
환경 설정:
application.yml내serverTimezone을UTC로 변경. -
데이터 모델:
-
Entity의
LocalDateTime타입을OffsetDateTime으로 변경. -
@PrePersist등을 활용해OffsetDateTime.now(ZoneOffset.UTC)로 시간 스탬프 자동화. -
로직 수정:
Trip등의 도메인에서LocalDate.now()사용 시 반드시 UTC 기준임을 명시적으로 처리. -
API 문서화: Swagger Schema에 UTC 표준 사용 및 프론트엔드 변환 가이드를 주석으로 추가.
3. 기대 효과 (Benefits)
- 데이터 정합성: 전 세계 어디서 접속해도 동일한 시점의 데이터를 유지할 수 있습니다.
- 보안 및 신뢰성: 클라이언트가 임의로 생성 시간을 조작하는 것을 방지합니다.
- 인프라 독립성: 서버 호스팅 지역(IDC)의 시스템 시간 설정과 무관하게 일관된 서비스 운영이 가능합니다.
4. 체크리스트 (To-Do)
- DB 연결 설정(JDBC URL)
serverTimezone=UTC확인 -
CreateDiaryRequest내dateTime필드 삭제 및 컨트롤러 수정 -
Diary,Trip엔티티 필드 타입 및 생성 로직 변경 - API 응답 테스트 (끝에
Z가 포함된 ISO 8601 포맷 출력 여부) - 스웨거(Swagger) 가이드 문구 업데이트
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels