[내일배움캠프_사전캠프_8기]_Days_13 TIL_ 팀 프로젝트-Day5

2026. 7. 8. 16:08부트캠프/TIL(Today I Learned)

오늘 한 일

  • BaseEntity 시간 필드를 UTC 기준으로 변경하는 방향을 학습했다.
  • LocalDateTime, Instant, OffsetDateTime의 차이를 비교하고, 서버에서는 UTC 저장 방식이 적합하다는 것을 이해했다.
  • Instant를 사용하여 생성일, 수정일, 삭제일 필드 타입 변경 작업을 진행했다.
  • PostgreSQL과 Hibernate에서 UTC 기반 시간 저장 구조를 확인했다.
  • Git 브랜치 작업 중 발생한 문제를 해결하며 브랜치와 Working Tree의 차이를 학습했다.
  • 커밋하지 않은 변경사항은 브랜치를 이동해도 유지된다는 점을 확인했다.
  • git stash, git cherry-pick을 활용해 잘못된 브랜치 작업을 안전하게 이동하는 방법을 익혔다.
  • JWT 인증 흐름을 다시 복습했다.
  • OncePerRequestFilter를 사용하는 이유와 JWT 검증 과정을 이해했다.
  • Authentication과 Authorization의 차이, SecurityContextHolder 역할을 정리했다.
  • 회원가입 Role 처리 방식에 대해 고민했다.
  • 클라이언트가 Role 값을 전달하는 것은 가능하지만, 서버에서 검증 없이 저장하면 권한 문제가 발생할 수 있다는 점을 확인했다.
  • Role은 서버 정책에 따라 결정하는 구조가 적합하다는 것을 학습했다.

학습 키워드

  • UTC / KST
  • Instant
  • LocalDateTime
  • OffsetDateTime
  • Hibernate TimeZone
  • BaseEntity
  • Soft Delete
  • Git Branch
  • Working Tree
  • stash
  • cherry-pick
  • JWT
  • OncePerRequestFilter
  • Authentication / Authorization
  • SecurityContextHolder
  • Role 기반 권한 관리

알게된 점

시간 데이터는 단순한 날짜 저장이 아니라 서비스 전체 구조와 관련된 중요한 설계 요소라는 것을 배웠다.

LocalDateTime은 시간 기준 정보가 없기 때문에 서버에서는 UTC 기준 저장 방식이 더 안정적이라는 것을 이해했다.

또한 Git을 사용하면서 브랜치는 커밋 기록을 관리하는 개념이고, Working Tree는 현재 수정 중인 파일을 관리하는 별도의 영역이라는 것을 직접 경험했다.

JWT에서는 인증(Authentication)과 인가(Authorization)의 차이를 명확히 이해했고, Payload는 암호화가 아니므로 민감한 정보를 저장하면 안 된다는 점을 다시 확인했다.


어려웠던 점

Git에서는 브랜치를 변경해도 커밋하지 않은 변경사항이 유지된다는 개념이 헷갈렸지만, stash와 cherry-pick을 직접 사용하며 해결 방법을 익혔다.

회원가입 설계에서는 Role을 어디에서 결정해야 하는지 고민했다. 클라이언트 입력값을 그대로 저장하는 방식은 위험한 방식이어서 서버에서 권한을 관리하는 구조로 설계하는것을 생각했다.


내일 할 것

  • User 도메인 구현 마무리
    • 회원가입 로직 구현 마무리
    • Role 처리 방식 확정
    • 로그인기능과 합치기
  • 로그인 후 Review 기능 구현
    • 리뷰 생성
    • 리뷰 조회
    • 리뷰 수정
    • 리뷰 삭제
  • 리뷰 권한 처리
    • 작성자만 수정/삭제 가능하도록 Authorization 적용
    • JWT 사용자 정보와 Review 연결 테스트