사이트맵 타임스탠프 오류로 검색 순위 떨어지던 문제 수정
목차
사이트맵(sitemap.xml) 생성 로직에서 일부 데이터 소스의 타임스탠프 컬럼이 잘못 선택되고 있었다. K-pop 뉴스와 멤버 정보를 다루는 쿼리에서 updated_at 대신 created_at을 사용해야 하는데 반대로 적용되고 있던 것. 이번 작업은 단순 컬럼 교정에 그치지 않고, 여러 데이터 소스를 조회할 때의 에러 처리 방식도 함께 개선했다.
사이트맵이 왜 중요한가
사이트맵은 검색 엔진 크롤러에게 "이 페이지가 언제 마지막으로 업데이트됐는가"를 알려주는 중요한 신호다. XML 사이트맵의 lastmod 필드가 정확하지 않으면, 구글이나 네이버 같은 검색 엔진이 콘텐츠 갱신 빈도를 잘못 판단하고, 결국 색인 우선순위와 검색 순위가 영향을 받는다.
특히 우리처럼 뉴스나 동적 콘텐츠를 다루는 서비스는 더 그렇다. 신문 기사처럼 항상 "최근 업데이트"가 중요하니까, 타임스탠프 오류는 수주 또는 수개월 동안 누적된 SEO 손실로 이어진다. 물론 실제 사용자 트래픽 손실로 직결되는 것은 아니겠지만, 신규 유입의 약 30~40%를 차지하는 검색 채널에서 작은 오류도 무시할 수 없다.
문제의 실체
코드를 들여다보니 kpop_news와 member 테이블에서 사이트맵을 생성할 때:
- updated_at: 편집이나 관리자 업데이트 시점
- created_at: 원본 등록 시점
대부분의 콘텐츠는 생성 후 거의 수정되지 않는다. 그런데 우리는 updated_at을 사용하고 있었다. 이는 "지난 3개월 동안 실제로 업데이트된 콘텐츠가 없다"는 신호를 검색 엔진에 계속 보내는 것이나 다름없다. 정말로는 지난주에 새로운 뉴스·멤버 정보 100개가 추가되었는데, 사이트맵에는 그게 안 반영되는 상황이었던 거다.
더해서, 여러 데이터 소스(뉴스, 멤버, 공지사항, 이벤트 등)에서 동시에 사이트맵 데이터를 조회할 때, 한 쿼리의 데이터베이스 오류나 타임아웃이 발생하면 전체 사이트맵 생성이 실패하곤 했다. 예를 들어 member 테이블 쿼리가 느려서 타임아웃되면, 나머지 콘텐츠(뉴스, 공지 등)의 사이트맵도 생성되지 않는 식이었다.
해결: 두 가지 개선
1. 타임스탠프 컬럼 교정
kpop_news와 member 테이블에 대해 updated_at → created_at으로 변경했다. 이제 사이트맵은 실제로 콘텐츠가 "언제 생성되었는가"를 정확히 반영한다. 이전에는 "수정된 적 없는 콘텐츠는 오래된 것"으로 보였던 거라면, 이제는 "추가된 시점이 언제인지"를 올바르게 알린다.
2. 쿼리별 독립 try-catch
각 데이터 소스의 조회를 독립적인 try-catch 블록으로 감쌌다. 한 쿼리의 실패가 다른 쿼리의 사이트맵 생성을 막지 않도록:
- member 쿼리 실패 → member 페이지는 사이트맵에서 제외, 나머지는 정상 생성
- news 쿼리 실패 → news는 제외, 나머지 정상
- 각 소스별 성공/실패를 로깅 및 모니터링 대시보드에서 추적
이렇게 하면 "전체 사이트맵이 생성 안 됨"이라는 최악의 상황을 피할 수 있다. 부분 장애 격리가 서비스 안정성을 높인다.
회고: 왜 이런 실수가 생겼나
서비스를 처음 만들 때는 updated_at 컬럼이 있으면 당연히 사이트맵에는 그걸 써야 한다고 생각하기 쉽다. 하지만 실제 콘텐츠 업데이트 패턴을 고려하지 않으면 안 된다. "이 테이블에서 updated_at이 자주 변하는가? 아니면 대부분 생성 이후 수정되지 않는가?"를 먼저 물어봐야 했다.
팀에 이 문제를 공유하면서 드는 생각은, 초기 기술 결정(어느 컬럼을 사이트맵에 쓸지)이 한두 번의 코드리뷰만으로는 검증되기 어렵다는 점이다. 체크리스트처럼 "타임스탠프 컬럼 검토" 항목을 명시하거나, 검색 채널 기여도가 높은 서비스라면 아예 초기 설계 단계에서 데이터 모델과 사이트맵 로직을 동시에 리뷰해야 한다.
또한 다중 데이터 소스를 처리할 때, 에러 처리 전략을 처음부터 "전체 실패" 대신 "부분 성공"으로 설계하는 게 맞다. 이건 마이크로서비스 설계에서 배우는 "타임아웃·서킷브레이커·부분 장애 격리" 같은 원칙과 동일하다. 규모가 작은 기능이라도 그 논리를 적용하면, 서비스 전체의 복원력이 높아진다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.