블로그 초기 데이터 로딩 시 제목 구분자 누락 버그 수정
목차
초기 데이터 로딩 스크립트에서 블로그 제목의 구분자를 제대로 처리하지 못하던 버그를 고쳤다. 가만 보니 이런 작은 데이터 정제 버그가 누적되면 꽤 큰 문제가 될 수 있더라.
문제의 배경
scripts/bulk_seed.py는 블로그 초기 데이터를 로드할 때 사용하는 스크립트다. 주로 외부 데이터 소스(CSV, 레거시 DB, 제휴 API 등)에서 제목을 포함한 메타데이터를 가져와서 정규화하는 역할을 한다. 문제는 외부에서 들어오는 데이터가 항상 깔끔하지 않다는 거였다.
어떤 소스는 제목에 +를 구분자로 썼고, 다른 소스는 및를, 또 다른 곳은 /를 썼다. 예를 들면:
- "데이터 정제+성능 최적화+모니터링"
- "API 설계 및 문서화 및 테스트"
- "프론트엔드/백엔드/DevOps"
처음엔 이 구분자들을 모두 공백으로 치환하는 로직을 짰는데, 어느 순간 clean_title 함수를 수정하면서 +와 및만 처리하고 /는 놓쳤다. 더 심각한 건 끝에 남겨지는 공백이나 불필요한 연산자를 제대로 정리하지 않아서 제목이 지저분해졌다는 것.
팀에 미친 영향
데이터 정제 로직의 문제는 일반적으로 세 가지 피해를 준다:
- 검색/필터링 오동작 – 제목에 남은 구분자가 정확한 매칭을 방해함
- UI 노출 문제 – 앞뒤 공백이나 이상한 문자가 그대로 화면에 표시됨
- 다운스트림 처리 어려움 – 블로그 데이터를 받는 다른 서비스들이 데이터 검증을 강화해야 함
특히 초기 데이터 로딩은 한 번 잘못되면 나중에 대량으로 수정해야 한다. 그래서 "처음부터 제대로" 하는 게 훨씬 싼 비용이다.
수정 내용
| 항목 | 이전 | 이후 |
|---|---|---|
| 처리 구분자 | +, 및 |
+, 및, / 모두 |
| 끝 정리 | 불완전 | strip() 등으로 강화 |
| 정규화 | 부분적 | 일관성 있게 |
구체적으로는:
# 여러 구분자를 모두 공백으로 일괄 치환
separators = ['+', '및', '/']
for sep in separators:
clean_title = clean_title.replace(sep, ' ')
# 여러 공백을 하나로, 앞뒤 공백 제거
clean_title = ' '.join(clean_title.split())
이렇게 하면 "API 설계 및 문서화 / 테스트"가 깔끔하게 "API 설계 문서화 테스트"로 정규화된다.
회고: 데이터 정제 로직이 자주 빠지는 이유
데이터 정제는 사실 "핵심 로직"처럼 느껴지지 않아서 자주 가볍게 대했다. 하지만 팀 경험상 이게 가장 많은 버그를 만든다:
- 엣지 케이스가 많음 – 어떤 구분자가 있을 줄 몰랐고, 끝에 공백이 남을 줄도 몰랐다
- 테스트가 약함 – "제목" 필드는 단순해 보여서 unit test를 제대로 안 쓰는 경향이 있음
- 리뷰 체크리스트에 빠지기 쉬움 – 코드 리뷰 때 비즈니스 로직에 집중하다 보니 "정제 로직은 충분한가?"를 안 묻게 됨
이 경험 이후론 초기 데이터 로딩 스크립트를 리뷰할 때 의도적으로 따로 시간을 잡는다. "외부 소스에서 올 수 있는 모든 엣지 케이스를 다뤘는가?", "문자열 끝 정리는 빠지지 않았는가?" 같은 체크를 명시적으로 한다. 비슷하게 다른 팀원들도 데이터 정제 부분은 좀 더 신경 써서 본다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.