이 글의 핵심 개념을 보여주는 대표 이미지. 정적 사이트에서 RSS를 안정적으로 유지하는 방법

정적 사이트에서 RSS를 안정적으로 유지하는 방법


정적 사이트의 RSS는 크게 망가지기보다 조용히 망가진다. 홈은 열리고 글도 보이고 배포도 초록색인데, 실제 공개 피드 URL은 HTML을 내주거나 오래된 XML을 내주거나 최신 글을 빼먹는 식이다.

그래서 RSS는 템플릿 한 번 추가하는 작업이 아니라 운영 기준으로 다뤄야 한다. 목표는 “RSS 파일이 있다”가 아니라, 리팩터링과 라우트 변경과 호스팅 이동 이후에도 공개 피드 URL 하나를 계속 신뢰할 수 있는 상태를 유지하는 것이다.

이 글은 정적 웹사이트 운영 유닛 페이지, robots.txt 운영 글, 정적 사이트 운영 기준 글과 같이 묶어 읽는 편이 맞다.

1. 공개 피드 URL 하나를 고정한다

RSS를 가장 빨리 깨뜨리는 방법은 빌드 구조가 바뀔 때마다 경로를 같이 바꾸는 것이다. /rss.xml 같은 공개 경로 하나를 정했으면 끝까지 유지해야 한다.

locale 피드가 있다면 그것도 같은 원칙으로 고정한다. 예를 들어 /ko/rss.xml은 항상 같은 규칙으로 남아야 한다. /feed.xml, /rss.xml, 빌드 내부 경로를 왔다 갔다 하면 운영이 금방 흐트러진다.

2. 로컬 파일이 아니라 live 응답을 본다

정적 산출물이 맞아도 실제 배포 호스트가 다른 응답을 줄 수 있다. 이게 가장 흔한 실패 방식이다.

공개 피드 URL을 열고 최소 세 가지를 확인한다.

  • 응답이 HTML이 아니라 XML인가
  • 최신 글 항목이 실제로 들어가 있는가
  • live 페이지 head가 같은 피드 URL을 가리키는가

3. head의 feed link도 계약으로 본다

RSS는 XML 파일 하나로 끝나지 않는다. head 안의 discovery link도 같이 맞아야 한다. head가 예전 경로를 가리키고 있으면, 올바른 피드 파일이 어딘가 존재해도 크롤러와 리더는 계속 잘못된 경로를 따라간다.

source post, 생성된 feed XML, head 링크, 최종 공개 검증이 한 흐름으로 연결된 정적 사이트 RSS 운영 구조를 보여주는 평면 설명 이미지.

4. 빌드 루프에 짧은 피드 체크를 넣는다

RSS는 아무도 배포 후 확인하지 않기 때문에 깨진다. 길게 볼 필요는 없다. 아래 네 개면 충분하다.

  1. /rss.xml이 XML을 반환하는가
  2. 피드에 최신 발행 글이 들어가 있는가
  3. 페이지 head가 같은 피드 URL을 가리키는가
  4. locale 피드를 노출한다면 그 경로도 같이 살아 있는가

이 중 하나라도 틀리면 배포가 끝난 것으로 보면 안 된다.

5. 조용히 깨지는 패턴을 기억한다

정적 사이트 RSS 문제는 대부분 비슷한 원인에서 나온다.

  • 피드 URL에서 HTML fallback을 반환한다
  • 라우트 이름을 바꿨는데 redirect나 head 링크를 같이 안 고쳤다
  • 콘텐츠는 바뀌었는데 build output이 오래된 상태다
  • locale feed는 빠졌는데 사이트는 여전히 그 경로를 참조한다
  • 올바른 피드 파일은 있지만 live 페이지 어디에서도 링크하지 않는다

무엇부터 시작할까

가장 먼저 live /rss.xml을 열어라. 거기서 XML이 안 보이거나, 최신 글이 빠져 있거나, 페이지 head가 다른 경로를 가리키고 있다면 그 피드는 아직 안정적이지 않다. 사이트가 멀쩡해 보여도 RSS는 이미 깨진 상태다.