자동화 slecs

대량 시드 스크립트의 제목 필드 오염 버그 수정

목차

대량 데이터 생성 스크립트에서 제목 필드에 커밋메시지 값이 들어가는 버그를 발견하고 수정했다. 단순해 보이는 필드 매핑 오류였지만, 자동화된 작업이었기에 얼마나 많은 레코드가 오염될 수 있었을까 생각하니 체계적인 검증의 중요성이 느껴졌다.

자동발행 시스템과 bulk seed

블로그나 콘텐츠 서비스에서 자동발행 기능은 흔하다. 특정 조건이 만족되면 사용자가 작성한 초안을 자동으로 퍼블리시하는 것인데, 이를 테스트하거나 초기 데이터를 대량으로 준비할 때 bulk_seed.py 같은 스크립트를 쓴다. 우리도 마찬가지였다. 이 스크립트는 시드 데이터를 한 번에 여러 건 생성하기 때문에, 한 줄의 실수가 수백 개, 수천 개의 레코드에 영향을 미친다.

자동발행 프로세스는 보통 이런 구조다:

단계 역할
초안 작성 사용자 또는 스크립트가 콘텐츠 생성
메타데이터 입력 제목, 설명, 태그 등 필드 작성
발행 조건 검사 특정 필드 채워졌는지, 승인됐는지 등
자동발행 조건 만족 시 자동으로 퍼블리시

이 흐름에서 제목 필드는 매우 중요하다. 발행된 글의 첫 인상을 좌우하고, 검색/리스트 표시에도 쓰이기 때문이다.

제목 필드에 커밋메시지가 들어가던 현상

bulk seed 스크립트를 실행해서 자동발행 글들을 대량으로 생성했다. 겉으로는 정상이었다. 하지만 생성된 데이터를 확인해보니 몇몇 글의 제목이 이상했다. 제목 자리에 커밋메시지 같은 메타 정보가 들어가 있었던 것이다.

예를 들면:

제목 필드 예상값: "사용자 인증 개선 방법"
실제값: "feat(auth): add session validation"

이렇게 되어 있었다. 사용자 눈에 보이는 글의 제목이 깨져 있는 것이다. 다행히 대량 발행 전에 발견했지만, 만약 이미 발행 상태였다면 많은 글을 일일이 수정해야 했을 것이다.

원인: 필드 매핑 오류

스크립트 코드를 살펴보니 데이터 구조에서 제목을 꺼내는 부분에 문제가 있었다. 흔히 벌어지는 실수다:

# 잘못된 매핑
data = {
    'title': post['commit_message'],  # 오류: commit_message를 제목으로 설정
    'content': post['body'],
    'author_id': post['author']
}

실제로는 다음처럼 수정되어야 했다:

# 올바른 매핑
data = {
    'title': post['title'],          # 올바른 필드 사용
    'content': post['body'],
    'author_id': post['author']
}

아마도 작업 중간에 변수명을 바꾸거나, 여러 스크립트를 복사-붙여넣기하면서 이런 혼동이 생겼을 것 같다. 특히 commit_message 같은 메타데이터가 있는 구조에서는 더 쉽게 발생한다.

대량 작업에서 버그를 놓치지 않으려면

이 경험 이후로, 대량 데이터를 다루는 스크립트에는 다음 같은 습관을 들였다:

  • 샘플 검증: 전체 대신 처음 몇 개 레코드만 먼저 생성해서 필드 값을 눈으로 확인
  • 필드별 assertion: 각 필드가 예상 형식(길이, 타입, 내용 패턴)인지 체크하는 로직
  • 로깅: 생성되는 데이터의 주요 필드를 로그에 남겨서 나중에 역추적 가능하게
  • 코드 리뷰: 필드 매핑은 반드시 다른 사람이 한 번 더 읽기 (변수명 혼동은 본인이 놓치기 쉬움)

특히 자동화 스크립트는 "한 번 돌리면 끝"이 아니라 "운영 중 계속 쓰일 수 있는" 코드다. 테스트 데이터 생성, 배포 후 마이그레이션, 정기적인 초기화 등에 쓰인다. 한 줄의 실수가 몇 달 뒤 서비스에 영향을 줄 수 있다는 뜻이다.

이번 수정은 작은 것처럼 보이지만, 팀이 공유하는 스크립트를 다룰 때는 항상 "이게 대량으로 돌면 어떻게 되나"를 먼저 생각하는 습관이 중요하다는 걸 다시 느꼈다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.