개발 slecs

Dev.to 동기화 태그가 실제 카테고리로 매핑되도록 수정

목차

외부 플랫폼과의 콘텐츠 동기화 작업 중에 발견된 흥미로운 버그를 수정했다. Dev.to 백필(backfill) 과정에서 모든 포스트의 태그가 "AI News"로 기본값 설정되던 문제인데, 본래 각 포스트의 카테고리 정보를 반영해야 하는 것이었다.

하드코딩된 기본값이 남긴 흔적

백필 작업이라는 것은 보통 기존 데이터를 새로운 시스템에 맞춰 대량으로 업데이트하는 작업을 말한다. 이 경우 Dev.to 플랫폼의 포스트들을 우리 시스템에 동기화하면서 메타데이터(특히 태그)를 재정렬하는 과정이었던 것 같다. 문제는 bot/generate.py 에서 이 변환 로직을 작성할 때 누군가 tags = "AI News" 같은 식으로 하드코딩해버렸다는 뜻이다.

이런 일이 발생하는 패턴을 보면 대부분 이런 시나리오다:
- 초기 개발 단계에서 "일단 동작하는지 확인해야지" 하면서 더미 값을 박음
- 테스트 환경에서는 잘 작동하는 것처럼 보임
- 실제 데이터로 백필을 돌리려니 모든 포스트가 같은 태그로 나오는 문제 발견

이 수정을 통해 각 포스트가 자신의 실제 카테고리를 태그로 가지게 되었을 것이다.

백필 작업에서 놓치기 쉬운 부분들

마이그레이션이나 백필 작업을 주도할 때마다 느끼는 게 있는데, 이런 유형의 버그들이 의외로 후반부에 발견된다는 점이다. 왜냐하면:

  1. 스키마 검증만으로는 부족 — 데이터 타입과 필드 존재 여부는 맞아도, 로직이 실제 값을 제대로 매핑하는지는 다른 문제
  2. 초기 테스트 데이터의 한계 — 작은 샘플로만 테스트하면 모든 포스트가 같은 카테고리를 가진 상황을 놓칠 수 있음
  3. 변환 로직의 "임시 수정" — "나중에 고칠 거야"라고 남겨둔 하드코딩이 본반영됨

일반적으로 이런 상황을 방지하려면:

체크 포인트 확인 사항
로직 리뷰 기본값(default)이 정말 필요한지, 아니면 실제 소스에서 가져와야 하는지
다양한 데이터 최소 3-5개 이상의 서로 다른 카테고리 포스트로 테스트
산출물 검증 백필 후 샘플링으로 "정말 다르게 매핑되었나" 확인

수정의 의미

이번 수정은 단순해 보이지만 실제로는 중요한 작업이다. 왜냐하면:

  • 사용자 경험: Dev.to에서 가져온 포스트들이 이제 정확한 메타데이터를 가지게 되어 검색, 필터링, 추천이 제대로 작동
  • 데이터 무결성: 외부 플랫폼과의 동기화에서 정보 손실이나 왜곡이 없음
  • 향후 유지보수: 같은 bot/generate.py 로직을 다른 플랫폼이나 포스트 추가할 때 참고할 올바른 패턴이 됨

회고

이 수정을 통해 다시 한번 느낀 점:

내가 팀을 리드할 때 코드 리뷰에서 자주 지적하는 게 바로 이런 하드코딩된 기본값들이다. 개발자들을 탓할 순 없다 — 빠르게 프로토타입을 만들어야 할 때는 그럴 수밖에 없으니까. 하지만 리뷰 때나 PR 체크리스트에서 "이게 정말 상수여야 하나? 아니면 실제 데이터에서 파생되어야 하나?" 같은 질문을 습관처럼 던져야 한다.

특히 마이그레이션이나 데이터 동기화 같은 작업은 "정상 작동"과 "정상 매핑"을 구분해야 한다. 프로그램이 돌아갔다고 해서 데이터가 올바르게 변환된 게 아니니까.


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

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

댓글 0

첫 댓글 달아줘.