배포는 되었는데 사이트는 바뀌지 않았다
행인로 랩(Haenginro Lab) 홈페이지의 히어로 영역을 카드 형태의 그리드로 새로 짰다. 장식용 카드가 아니라, 각 카드가 실제 앱·프로젝트·계정 같은 진짜 목적지로 연결되는 구조다. 여기까지 오는 데는 잔손질이 많았다 — 28장짜리 배치가 부담스러워 21장으로 줄였고, 색상 테마 4종을 하나로 좁혔고, 단순 클릭이었던 것을 제대로 된 상세 보기(모달 하나·닫기 버튼 하나)로 바꾸면서 “카드가 열렸는지”와 “실제로 목적지까지 이동했는지”를 따로 측정할 수 있게 계측도 붙였다.
규칙 하나가 대부분의 작은 결정을 정리해줬다: 테두리가 있는 카드는 반드시 어딘가로 연결된다. 실제 목적지가 없는 카드에는 hover 효과도, 빛나는 테두리도 주지 않는다. 사소해 보이지만, “완성된 것처럼 보이는 덱”과 “클릭 가능한 것에 대해 정직한 덱”의 차이는 여기서 갈린다.
사이트가 갱신되지 않았다
디자인 작업이 끝난 뒤 더 까다로운 문제가 나타났다. 코드를 여러 번 푸시했는데, 라이브 사이트는 계속 예전 버전을 그대로 보여줬다. 몇 분 지연된 정도가 아니라, 아무리 새 커밋을 밀어 넣어도 전혀 반영되지 않는 상태였다.
가장 먼저 의심한 건 캐시였다. 확인해봤지만 아니었다. 실제 원인은 라우팅 설정이 예전 특정 빌드의 URL 하나에 그대로 고정되어 있던 것이었다 — “지금 배포된 최신 버전을 보여줘라”는 정상 경로를 아예 타지 않고 있었던 셈이다. 새 배포 자체는 매번 성공하고 있었는데, 트래픽을 실제로 어디로 보낼지 결정하는 그 설정이 옛날 버전을 가리키고 있었다. 라우팅을 다시 정상 경로로 되돌리고 재배포하자, 라이브 사이트가 로컬 코드와 바이트 단위로 정확히 일치했다.
기억해둘 만한 교훈은 이거다 — 정적 사이트가 푸시를 반영하지 않고, 응답 헤더에도 캐시가 개입한 흔적이 없다면, 캐시부터 의심하지 말 것. 그보다 먼저 “지금 어떤 빌드가 실제로 서빙되고 있는지를 결정하는 설정”부터 확인해야 한다. 이 층이 꼬이면 겉보기엔 캐시 문제와 똑같아 보인다.