피드로 돌아가기
Dev.toBackend
원문 읽기
런타임 시간 경계 불일치로 인한 Date Shear 버그 해결책
Date Shear: A New Term for a Common Programming Pain Point
AI 요약
Context
로직 내에서 current time을 여러 번 호출함에 따라 발생하는 시간 값 불일치 문제 분석. 특히 자정, 월말, 분기말 등 시간 경계점에서 실행 시 서로 다른 날짜 값이 반환되어 데이터 무결성이 파괴되는 현상 발생.
Technical Solution
- 단일 시점의
datetime을 변수에 캡처하여 프로세스 전반에 재사용하는 구조 채택 - 함수 및 메서드 설계 시 날짜 정보를 내부에서 생성하지 않고 외부에서 Parameter로 주입받는 방식으로 변경
- 상위 프로세스에서 하위 프로세스로 동일한 시간 기준점(Reference Point)을 전달하여 전체 Call Stack의 데이터 일관성 확보
- 배치 프로세스의 실행 시점이 자정 전후로 걸쳐 있어 발생하는 런타임 엣지 케이스 제거
- 코드 리뷰 단계에서 'Date Shear'라는 명명된 개념을 도입하여 잠재적 위험 요소를 조기에 식별하는 프로세스 수립
실천 포인트
1. 함수 내부에서 `GetDate()` 또는 `now()`를 반복 호출하는지 검토
2. 비즈니스 로직의 기준 시점을 메서드 파라미터로 추출하여 Immutable하게 관리
3. 특히 배치 작업이나 리포트 생성 로직에서 시간 경계(Boundary) 전후 실행 가능성 확인