임대한 땅 위의 건물
longblack-legacy, agent-ops
에세이 문체 — 작업을 배경으로, 생각을 전경으로
남의 땅 위에 건물을 올려놓으면 어느 날 철거 통보를 받는다. lottie.host가 그랬다. 공유 버튼의 애니메이션 파일을 호스팅하던 외부 서비스가 403을 돌려보내기 시작했다. 코드베이스에는 그 서비스에 의존하는 URL이 마흔 개 넘게 박혀 있었다.
다행히 일부 기기의 브라우저 캐시에 원본이 남아 있었다. 크롬 DevTools에서 JSON을 추출하고 자체 S3에 올렸다. DB의 URL을 교체했다. 여기까지는 단순했다.
문제는 그다음이었다. Laravel이 설정값을 Redis에 영구 캐싱하고 있어서 DB를 바꿔도 화면에 반영되지 않았다. Elastic Beanstalk의 postdeploy 훅에서 캐시를 날리려 했으나, 훅 프로세스에 환경변수가 주입되지 않아 Redis 연결 자체가 실패했다. SSM도 걸려 있지 않은 인스턴스였다.
한 시간을 캐시 무효화와 씨름하다가 코드를 다시 읽었다. site_configs 테이블은 row가 열 개다. 영구 캐싱이 필요한 규모가 아니었다. rememberForever를 지우고 매 요청마다 DB를 조회하도록 고쳤다. 배포 한 번으로 끝났다. 처음부터 그렇게 했으면 됐을 일이다.