![[코드가 환경을 모르는 구조 4/7] 타임머신 — 시간 축을 교체한다](https://cdn.sanity.io/images/v31psllp/production/6a70f8e2c090762cbd4b1a9d470f573cbc0fc038-1684x1030.png)
아키텍처
[코드가 환경을 모르는 구조 4/7] 타임머신 — 시간 축을 교체한다
두줄요약
HR SaaS에서는 시간이 급여와 연차 결과를 바꾸는 입력이므로 요청 단위로 교체 가능하게 만들었습니다. Clock 포트와 헤더 기반 Adapter, 비동기 컨텍스트 전파, 환경별 활성화로 타임머신을 구현했습니다.
핵심 내용
- HR SaaS에서 시간은 급여, 연차, 퇴직금 등 결과를 바꾸는 비즈니스 입력
Clock포트와 헤더 기반 Adapter로 요청 단위 시간 축 교체 가능- ThreadLocal, 코루틴, Kafka 등 비동기 경계까지 시간 컨텍스트 전파
- 환경별 값 주입으로 dev/qa에서만 타임머신 활성화, prod는 비활성
주의할 점
- 비즈니스 코드가 시스템 시계를 직접 호출하지 않는 규율 필요
- 서드파티 라이브러리의 직접 시계 접근은 완전히 제어 불가
- Kafka 재처리 시 과거 헤더가 현재 계산에 섞일 수 있어 주의 필요
