웹 개발
대량 데이터에 날짜 필터를 적용할 때 확인하는 것
날짜 필터로 대량 데이터를 처리할 때 성능 문제나 데이터 누락이 생기는 이유를 정리했습니다.
날짜 필터를 다룰 때는 생각보다 복잡한 문제들이 숨어 있다. 로컬에서 테스트할 때는 작은 데이터셋이라 괜찮지만, 실제 대량 데이터에서 필터링하면 느려지거나 예상과 다른 결과가 나온다.
왜 헷갈리는가
날짜 비교는 타입과 타임존 때문에 자주 실수한다. 문자열 "2024-01-01"과 Date 객체, Unix 타임스탐프는 모두 다르게 취급된다. 서버의 타임존과 클라이언트의 타임존이 다를 수도 있다.
재현 조건 명확히
특정 기간 범위에서만 문제가 나는지, 아니면 모든 필터에서 나는지 확인한다. 몇 개의 레코드에서 제대로 된 결과를 얻는지 본다.
빌드 상태 확인
npm run build
빌드 중 날짜 관련 라이브러리 경고가 있는지 본다.
체크 포인트
- 날짜 형식이 일관되는가
- 필터링 로직이 포함과 배제를 제대로 하는가
- 매개변수로 받은 날짜 값이 정말로 그 형식인가
- 데이터베이스 쿼리와 클라이언트 필터의 기준이 같은가
실행 예시
간단한 테스트 케이스를 만들어서 확인해본다. 작은 샘플 데이터로 먼저 로직이 맞는지 본 후, 실제 데이터로 테스트한다.
흔한 착각
"2024-01-01"이라고 하면 00:00:00을 의미하는지 23:59:59를 의미하는지 불분명하다. 날짜 범위를 설정할 때 시작점과 끝점을 명확히 정한다. 포함/배제 기준도 문서에 명시한다.
수정 후 정리
다음에 비슷한 문제가 나올 때를 대비해 현재 어떤 형식을 사용하는지, 필터링 기준이 무엇인지 기록해둔다. 대량 데이터 처리는 성능까지 고려해야 하므로, 얼마나 빨리 결과가 나오는지도 기록하는 게 좋다.