피드로 돌아가기
The date bug that cost us a $120K contract and what i built to make sure it never happens again
Dev.toDev.to
Backend

12만 달러 손실을 막는 글로벌 Banking-aware 날짜 계산 API 설계

The date bug that cost us a $120K contract and what i built to make sure it never happens again

Blues Clues2026년 5월 3일9intermediate

Context

레거시 코드인 business_day_utils.py 기반의 SLA 계산 구조로 인한 도메인 특수성 처리 한계 발생. 일반적인 날짜 라이브러리가 처리하지 못하는 국가별 Half-day 및 지역별 공휴일 예외 케이스로 인해 잘못된 통지 5만 건 발송 및 계약 해지 초래.

Technical Solution

  • Jurisdictional Granularity 도입을 통한 국가 내 주별(Sub-national) 공휴일 차이 해결
  • Banking-specific Calendar 정의로 독일 은행권의 Christmas Eve Half-day(12pm 종료) 등 도메인 특화 시간 계산 로직 반영
  • Variable Work-week 엔진 설계로 사우디아라비아의 주말 변경 이력(2013년 목/금 $\rightarrow$ 금/토) 및 국가별 상이한 주말 설정 처리
  • DST-safe Arithmetic 적용으로 일광 절약 시간제 전환 시점의 모호한 시간 계산 오류 방지
  • Evidence-based Audit Trail 구조 설계를 통해 계산 결과와 함께 공식 정부 문서(Bundesbank 등) 소스 링크를 JSON 응답에 포함하여 법적/컴플라이언스 근거 제공

1. 국가별 공휴일뿐만 아니라 주(State) 단위의 세부 공휴일 설정 여부 확인

2. 금융권 거래 시 Half-day 및 조기 종료(Early Close) 일정 반영 여부 검토

3. 국가별 주말 정의(Fri/Sat 등) 및 과거 변경 이력 반영 여부 확인

4. DST 전환 시점의 시간 연산 로직 검증

5. 외부 API/라이브러리 결과값에 대한 근거 데이터(Audit Trail) 저장 구조 설계

원문 읽기