CloudFront는 전 세계에 분산된 엣지 로케이션을 통해 사용자들에게 빠르고 안정적으로 콘텐츠를 제공하는 AWS의 콘텐츠 전송 네트워크(CDN)입니다. 그러나 콘텐츠를 업데이트하는 경우, 사용자들이 최대한 빨리 최신 콘텐츠를 받을 수 있도록 캐시를 무효화해야 할 때가 있습니다. 이번 포스트에서는 CloudFront에서 캐시를 무효화하고, 업데이트된 콘텐츠를 사용자에게 신속히 전달하는 방법에 대해 알아보겠습니다.
CloudFront는 엣지 로케이션(Edge Location)에 캐시를 저장하여 사용자들에게 콘텐츠를 빠르게 전달합니다. 이때 엣지 로케이션은 오리진 서버(예: S3 버킷)로부터 콘텐츠를 가져와 캐시에 저장한 후, 설정된 타임 투 리브(TTL, Time to Live) 동안 이 캐시된 콘텐츠를 계속 제공합니다. TTL이 만료되면, 엣지 로케이션은 다시 오리진 서버로부터 최신 콘텐츠를 가져와 캐시에 저장하게 됩니다.
하지만 콘텐츠가 업데이트되었을 때, TTL이 만료되기를 기다리는 것은 시간이 오래 걸릴 수 있습니다. 관리자는 사용자에게 최대한 빠르게 최신 콘텐츠를 제공하고자 할 것입니다. 이런 경우, CloudFront 캐시 무효화(Invalidation)를 통해 캐시된 콘텐츠를 강제로 삭제하고, 오리진 서버로부터 최신 콘텐츠를 가져오도록 할 수 있습니다.
캐시 무효화를 실행하려면, 특정 파일 경로나 패턴을 지정하여 해당 경로의 콘텐츠를 무효화할 수 있습니다. 예를 들어:
/index.html
경로를 무효화하여 엣지 로케이션에 저장된 index.html
파일을 삭제할 수 있습니다./images/*
경로 패턴을 무효화하여, /images/
폴더 내의 모든 이미지 파일을 무효화할 수 있습니다.캐시 무효화가 실행되면, CloudFront는 각 엣지 로케이션에 해당 경로의 파일들을 캐시에서 삭제하라는 명령을 보냅니다. 이후 사용자가 해당 파일들을 요청하면, 엣지 로케이션은 오리진 서버로부터 업데이트된 최신 파일을 받아 사용자에게 전달하게 됩니다.
다음은 CloudFront 캐시 무효화의 예시입니다:
index.html
파일을 무효화합니다./images/
디렉토리 내의 모든 이미지를 무효화합니다.이 경우, CloudFront는 모든 엣지 로케이션에 index.html
파일과 /images/
디렉토리 내의 모든 파일들을 캐시에서 삭제하도록 지시합니다. 이후 사용자가 index.html
파일이나 /images/
디렉토리의 이미지를 요청하면, 엣지 로케이션은 오리진 서버에서 새로운 파일을 가져오게 됩니다.
CloudFront는 캐시된 콘텐츠를 빠르게 전달할 수 있지만, 콘텐츠 업데이트 시 사용자에게 최신 데이터를 제공하기 위해서는 캐시 무효화가 필요할 수 있습니다. CloudFront의 캐시 무효화 기능을 활용하면 특정 파일이나 경로 패턴의 캐시를 강제로 삭제하고, 오리진 서버의 최신 콘텐츠를 엣지 로케이션으로 가져오도록 할 수 있습니다. 이를 통해 사용자들은 항상 최신 콘텐츠를 빠르게 제공받을 수 있게 됩니다.