1. 문제 상황
채용공고 데이터 확인 중
게재기간 종료일과 유료상품 종료일이 서로 다른 값으로 저장된 사례가 발견되었다.
정상 구조에서는 다음과 같이 두 값이 동일해야 한다.
유료기간 종료일 = 게재기간 종료일
하지만 실제 데이터는 다음과 같았다.
구분 | 값 |
게재기간 종료일 | 2026-03-13 00:00:06.107 |
유료기간 종료일 | 2026-03-12 23:59:59.000 |
약 수 초 정도의 차이가 발생하며 게재기간이 더 늦게 기록되고 있었다.
2. 원인 분석
조사 결과 상시채용 공고의 자동 마감 로직에서 문제가 발견되었다.
마감 처리 과정에서 다음 로직이 존재했다.
공고 자동 마감 시
게재 종료일을 마감 처리 시점의 현재 시간으로 업데이트
즉 실제 흐름은 다음과 같다.
유료상품 종료 시점
→23:59:59저장자동 마감 프로세스 실행
마감 로직에서
→ 현재 시각으로 게재 종료일 업데이트
그 결과 게재 종료일이 다음과 같이 기록된다.
2026-03-13 00:00:06
즉 유료기간 종료 이후 몇 초 뒤의 시간이 저장되면서
두 값이 서로 달라지는 현상이 발생했다.
3. 서비스에는 왜 문제가 없었을까
채용공고 노출 여부는 게재기간이 아니라 상태값으로 제어되고 있었다.
즉 실제 서비스 로직은 다음과 같다.
공고 노출 여부 → 상태값으로 판단
게재기간 → 데이터 기록용 필드
따라서 게재기간이 몇 초 차이로 달라도
서비스 노출이나 마감 처리에는 영향이 발생하지 않았다.
4. 문제의 발생 시점
해당 로직은 2025년 5월 개편 당시 추가된 자동 마감 로직에서 발생한 것으로 보였다.
개편 과정에서 자동 마감 시 게재 종료일을 현재 시간으로 갱신하는 로직이 추가되었고
이 로직이 유료기간 종료 시간과 충돌하면서 데이터 불일치가 발생했다.
5. 조치 사항
데이터 일관성을 위해 다음과 같이 수정하였다.
자동 마감 시 게재 종료일을 재설정하는 로직 제거
이후에는
유료기간 종료일
게재기간 종료일
두 값이 동일하게 유지되도록 수정되었다.
6. 실무 인사이트
이번 사례는 서비스 로직과 데이터 저장 로직이 서로 다른 방식으로 동작할 때 발생할 수 있는 문제였다.
서비스는 정상적으로 동작하고 있었지만
데이터 기록 방식에서 불필요한 로직이 남아있어 값의 불일치가 발생했다.
실무에서는 다음과 같은 상황이 종종 발생한다.
서비스 동작은 정상이다.
그러나 데이터 값은 정확하지 않다.
이럴 때는 기능 오류가 아니라
데이터 저장 로직을 점검해야 하는 경우도 있다.