ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

Clock.systemUTC()

시간에 의존적인 로직을 처리할 때 일관성과 테스트 가능성(Testability)을 보장하기 위해 핵심적으로 사용됩니다. 단순히 Instant.now() LocalDateTime.now()를 사용하는 것보다 강력한 장점이 있습니다.
서버가 전 세계 어디에 있든 항상 UTC 기준으로 만료 시간을 계산합니다.
A. 글로벌 서비스의 시간 표준화 (UTC 고정)
  • 서버가 여러 지역(KST, PST, UTC 등)에 분산되어 있거나, 사용자가 전 세계에 있을 때 서버의 로컬 시간(systemDefaultZone)을 사용하면 시간대(Time Zone) 혼선이 발생합니다.
  • Clock.systemUTC()는 어떤 서버 환경에서 실행되든 항상 UTC 기준으로 시간을 반환하여 데이터 일관성을 유지합니다.
B. 테스트 가능성 향상 (Mocking/Stubbing)
  • LocalDateTime.now()를 코드에 직접 기술하면, 테스트 시점에 따라 결과가 달라져서(테스트 불확실성) 단위 테스트가 어렵습니다.
  • Clock 객체를 빈(Bean)으로 주입받아 사용하면, 운영 환경에서는 Clock.systemUTC()를, 테스트 환경에서는 Clock.fixed()를 사용하여 특정 시점으로 시간을 고정하여 테스트할 수 있습니다.
C. 스레드 안전성 및 불변성
  • Clock.systemUTC()가 반환하는 Clock 인스턴스는 불변(Immutable)이며 스레드 안전(Thread-safe)합니다. 고성능 멀티스레드 환경에서도 안전하게 시간 정보를 가져올 수 있습니다.
728x90