배포와 인프라6 분 읽기

본문에서 지운 이름이 URL에 그대로 남아 있었다

블로그와 내부 문서에서 식별자 두 개를 가리는 작업을 했습니다. 문장 속 이름만 고치면 되는 일인 줄 알았는데, 하나는 글 파일명, 곧 URL 슬러그 안에 들어 있었습니다. 이름을 바꾸면 URL과 OG 이미지, 문서 속 목록까지 같이 바뀌어야 했습니다.

#privacy#slug#build-output#grep#static-site
개념 도식: 왼쪽에는 이름이 지워진 본문 문단, 오른쪽에는 같은 이름이 그대로 박혀 있는 URL 경로와 OG 이미지 파일명.
문장에서는 지웠지만 이름은 파일명에, 그러니까 주소창에 남아 있었다.

가려야 할 이름이 두 개 있었습니다

이 블로그에는 공개하고 싶지 않은 식별자 두 개가 섞여 있었습니다. 하나는 제 계정 쪽 식별자이고, 다른 하나는 배포 팀 이름으로도 쓰고 퀀트 봇 이름으로도 쓰던 단어입니다. 둘 다 콘텐츠와 문서에서 빼기로 했습니다.

처음에는 본문 문장만 고치면 되는 줄 알았습니다. 글 안에 이름이 나오면 다른 말로 바꾸고, 문서에 적힌 팀 이름은 <team> 같은 자리표시자로 덮으면 끝날 거라고 봤습니다.

여기서 하나 여쭙겠습니다. 당신의 프로젝트에서 "이 이름은 공개하면 안 된다"는 단어를 찾을 때, 본문만 검색하고 있습니까, 아니면 파일명·경로·빌드 결과물까지 보고 있습니까?

이름은 문장이 아니라 파일명에 있었습니다

퀀트 글 하나의 슬러그가 <식별자>-llm-early-close-gate였습니다. 봇 이름을 그대로 앞에 붙여 둔 겁니다. 이 블로그에서 슬러그는 곧 파일명이고, 파일명은 곧 URL 경로입니다. 본문을 아무리 고쳐도 주소창에는 그 이름이 남습니다.

그리고 슬러그는 한 군데에만 있지 않았습니다.

  • content/posts/ 아래 ko·en 두 개의 글 파일명
  • 슬러그에서 만들어지는 언어별 OG 이미지 파일(public/og/ko-post-….png, public/og/en-post-….png)
  • 카테고리별 대표 글 슬러그를 나열한 설계 문서(DESIGN.md)의 목록

배포 팀 이름도 비슷했습니다. 글 본문이 아니라 DESIGN.md와 에이전트 인수인계 문서(CODEX_HANDOFF.md)의 "도메인/배포" 줄에 들어 있었습니다. 독자가 읽는 글만 보고 있었다면 놓쳤을 자리입니다.

당신이라면 여기서 본문만 고치고 넘어가겠습니까, 아니면 슬러그까지 바꾸겠습니까?

실제로 한 일

커밋 하나로 정리했습니다.

  • 슬러그를 llm-bot-early-close-gate로 바꿨습니다. ko·en 글 파일 두 개를 rename하고, 각 파일 안에서 한 줄씩 고쳤습니다.
  • 새 슬러그에 맞는 OG 이미지 두 장(ko·en)을 다시 만들었습니다.
  • DESIGN.md의 팀 이름과 슬러그 목록, CODEX_HANDOFF.md의 팀 이름을 <team>으로 가렸습니다.
  • 같은 커밋에서 .gitignore에 .env*를 추가했습니다.

전체 변경은 7개 파일, 추가 6줄, 삭제 5줄입니다. 작업량은 작았습니다. 오래 걸린 건 이름이 어디 있는지 찾는 쪽이었습니다.

마지막으로 두 식별자를 콘텐츠와 빌드 결과물 양쪽에서 검색해 하나도 남지 않은 것을 확인했습니다. 빌드 결과물까지 본 이유는, 슬러그처럼 이름이 경로나 생성 파일로 번지는 경우 원본 문장만 검색해서는 안 잡히기 때문입니다. 실제로 배포되는 건 원본이 아니라 빌드 결과물입니다.

자가진단 체크리스트

  • 숨기려는 단어를 본문뿐 아니라 파일명·URL 슬러그·생성 이미지 파일명에서도 검색해 봤습니까?
  • 에이전트용 인수인계 문서나 설계 문서처럼 독자가 안 읽는 파일에도 같은 이름이 적혀 있지 않습니까?
  • 원본을 고친 뒤, 실제로 배포되는 빌드 결과물에서 한 번 더 검색해 0건을 확인했습니까?

솔직한 부분

이번 커밋이 가린 건 현재 트리와 빌드 결과물뿐입니다. git 히스토리에는 예전 슬러그와 팀 이름이 그대로 남아 있고, 이 커밋은 히스토리를 다시 쓰지 않았습니다. 예전 슬러그 URL에서 새 주소로 가는 리다이렉트도 이 커밋에는 없습니다. 예전 주소가 배포된 적이 있는지, 검색엔진에 잡혔는지는 이 기록만으로는 알 수 없습니다. 그리고 "0건 확인"은 제가 알고 있던 두 단어를 검색한 결과일 뿐입니다. 제가 아직 모르는 세 번째 식별자가 있다면 이 검색으로는 찾을 수 없습니다.

관련 글