피드로 돌아가기
My CSV had 50K rows. Row 23,487 broke everything.
Dev.toDev.to
Backend

개발자가 대량 CSV 파일 처리기를 구축했으나 특정 행의 제품명에 포함된 인용 부호 없는 쉼표로 인해 런타임 오류가 발생했다

My CSV had 50K rows. Row 23,487 broke everything.

Nico Reyes2026년 3월 31일2beginner

Context

개발자가 거래처 CSV 내보내기 파일을 처리하는 데이터 프로세서를 구축했다. 샘플 파일로 테스트한 결과 정상 동작했으며 프로덕션 환경에 배포했다. 2주 후 새벽 3시에 알림이 발생했다. 거래처가 내보내기 형식을 변경했는데 전체가 아니라 특정 행의 제품명 필드에 인용 부호 없는 쉼표를 추가했다.

Technical Solution

  • Python csv 모듈의 기본 파싱 동작 확인 후 열 개수 검증 함수 구현
  • 인용 부호 없는 쉼표로 인한 열 개수 불일치 감지를 위한 열 개수 유효성 검사 추가
  • price 필드가 숫자 형식인지 확인하기 위한 데이터 타입 검증 로직 추가
  • 잘못된 행은 로그 출력 후 건너뛰고 정상 행만 process_product 함수로 전달하는 구조 변경

Impact

열 개수 검증만으로 문제 행 1개를 즉시 식별하고 처리를 계속할 수 있었다.

Key Takeaway

테스트 케이스에는 항상 실제 프로덕션 데이터의 다양한_edge_case가 포함되어야 하며 입력 데이터 검증 없이는 유효한 입력이라고 가정해서는 안 된다.


CSV 파서 처리 파이프라인에서 열 개수 검증과 데이터 타입 검증을 사전 단계로 적용 시 예기치 않은 데이터 형식 변경으로 인한 시스템 중단을 방지할 수 있다

원문 읽기