![[코드가 환경을 모르는 구조 4/7] 타임머신 — 시간 축을 교체한다](https://flex.team/blog/og/main.jpg)
0
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
이 게시물은 HR SaaS에서 시간은 비즈니스 로직의 입력이라서 테스트와 시뮬레이션을 위해 시간 축을 교체 가능하게 만들어야 함을 설명합니다. 모든 비즈니스 로직이 시스템 시계를 직접 호출하지 않고 Clock(시간 Port)을 통해 현재 시간을 얻도록 하는 규율을 전제로 함니다. 프로덕션에서는 시스템 시계를 반환하는 Clock Adapter를 기본으로 꽂고, 디버그 모드에서는 요청 헤더에 담긴 시점을 사용하도록 Adapter를 바꿔 끼움니다. 요청 스코프의 시간은 ThreadLocal 컨텍스트를 통해 주입하며 Clock Adapter는 헤더 시점이 있으면 그 값을, 없으면 실제 시계를 반환하는 분기로만 동작함니다. 비동기 경계를 넘어 일관된 시간을 유지하려면 코루틴 컨텍스트/래퍼/Kafka 헤더를 통해 시간 컨텍스트를 전파해야 함을 강조함니다. 또한 외부 헤더로 시간이 조작되는 사고를 막기 위해 환경별 활성 여부를 값 주입으로 제어하고, 타임머신 적용 사실은 응답 헤더나 로그로 감사 관점 흔적을 남김니다.
![[코드가 환경을 모르는 구조 4/7] 타임머신 — 시간 축을 교체한다](https://cdn.sanity.io/images/v31psllp/production/6a70f8e2c090762cbd4b1a9d470f573cbc0fc038-1684x1030.png)
![[미래를 담아낸 뼈대 5/7] 코드가 환경을 모르는 구조](https://cdn.sanity.io/images/v31psllp/production/626db41a03292c4b57863b75c7bc5e755e395184-1684x1030.png)
![[코드가 환경을 모르는 구조 1/7] 코드는 무엇을, 환경은 어디서 - 다시 더 깊이](https://cdn.sanity.io/images/v31psllp/production/d7669e80f5e28954ae4a8e30b97d6d297e7f7c35-1684x1030.png)