Skip to content

CloudFront에서 콘텐츠를 제공하는 방법


초기 설정 후에 CloudFront는 해당 웹 사이트나 애플리케이션과 상호 작용하여 콘텐츠 전송 속도를 높인다. 이 단원에서는 최종 사용자가 콘텐츠를 요청할 때 CloudFront가 콘텐츠를 어떻게 제공하는지를 설명한다.


1. CloudFront에서 사용자에게 콘텐츠를 제공하는 방법

콘텐츠를 제공하도록 CloudFront를 구성한 후에 사용자가 객체를 요청하면 다음과 같은 결과를 얻는다.

  1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일 같은 하나 이상의 객체에 대한 요청을 보낸다.

  2. DNS가 요청을 최적으로 서비스할 수 있는 CloudFront POP(엣지 로케이션)로 요청을 라우팅한다. 이 위치는 일반적으로 지연 시간과 관련해 가장 가까운 CloudFront POP이며, 요청을 엣지 로케이션으로 라우팅한다.

  3. CloudFront는 해당 캐시에 요청된 객체가 있는지 확인한다. 객체가 캐시에 있으면 CloudFront는 객체를 사용자에게 반환한다. 객체가 캐시에 없으면 CloudFront가 다음을 수행한다.

    a. CloudFront는 배포의 사양과 요청을 비교하고 요청을 해당하는 객체로 사용자의 원본 서버(예: Amazon S3 버킷 또는 HTTP 서버)에 전달한다.

    b. 원본 서버는 객체를 다시 엣지 로케이션으로 보낸다.

    c. 오리진에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작한다. CloudFront는 다음에 다른 사용자가 객체를 요청할 때 캐시에 해당 객체를 추가한다.

001


2. CloudFront에서 리전 에지 캐시를 사용하는 방식

CloudFront 상호 접속 위치(POP 또는 엣지 로케이션이라고도 함)는 많이 사용되는 콘텐츠를 최종 사용자에게 빠르게 제공할 수 있도록 한다. CloudFront에는 또한 리전 엣지 캐시가 있어 POP에 있을 정도로 많이 사용되는 콘텐츠가 아닌 경우에도 최종 사용자가 보다 많은 콘텐츠를 가까이에서 액세스할 수 있도록 하여 콘텐츠의 성능을 개선하는 데 도움을 준다.

리전 엣지 캐시는 모든 유형의 콘텐츠, 특히 시간이 지나면서 점차 사용되지 않게 되는 콘텐츠에 유용하다. 이러한 콘텐츠의 예로는 동영상, 사진 또는 아트워크와 같은 사용자 생성 콘텐츠, 제품 사진 및 동영상과 같은 전자 상거래 자산, 갑자기 사용자가 많아질 수 있는 뉴스 및 이벤트 관련 콘텐츠 등이 있다.

리전 캐시 작동 방식

리전 엣지 캐시는 최종 사용자가 쉽게 접할 수 있도록 전역으로 배포되는 CloudFront 위치이다. 최종 사용자에게 콘텐츠를 직접 제공하는 전역 엣지 로케이션인 POP와 원본 서버 사이에 위치한다. 객체의 사용도가 떨어지면 개별 POP가 이러한 객체를 제거하여 보다 많이 사용되는 콘텐츠가 해당 공간을 사용하도록 한다. 리전 엣지 캐시는 개별 POP보다 캐시가 더 크다. 따라서 객체가 가장 가까운 리전 엣지 캐시 위치에 더 오래 캐시 상태로 유지된다. 따라서 더 많은 콘텐츠를 최종 사용자와 가까운 거리가 유지할 수 있으므로 CloudFront가 오리진 서버로 돌아가야 할 필요성이 줄어들고 최종 사용자를 위한 전반적인 성능도 향상된다.

최종 사용자가 웹 사이트나 애플리케이션을 통해 요청하면, DNS는 이 요청을 사용자의 요청을 가장 잘 처리할 수 있는 POP로 라우팅한다. 일반적으로 지연 시간을 기준으로 가장 가까운 CloudFront 엣지 로케이션이 여기에 해당한다. POP에서 CloudFront는 해당 캐시에 요청된 객체가 있는지 확인한다. 객체가 캐시에 있으면 CloudFront는 객체를 사용자에게 반환한다. 객체가 캐시에 없으면, 일반적으로 POP가 가장 가까운 리전 엣지 캐시로 이동하여 객체를 가져온다. POP가 리전 엣지 캐시를 건너뛰고 오리진으로 직접 이동하는 경우에 대한 자세한 내용은 다음 참고 사항을 참조한다.

리전 엣지 캐시 위치에서 CloudFront는 해당 캐시에 요청된 객체가 있는지 다시 확인한다. 객체가 캐시에 있으면 CloudFront가 객체를 요청한 POP에 전달한다. 리전 엣지 캐시 위치에서 첫 번째 바이트가 도착하면 CloudFront가 객체를 사용자에게 전달하기 시작한다. CloudFront는 다음에 다른 사용자가 객체를 요청할 때 POP에서 캐시에 해당 객체를 추가한다.

객체가 POP 또는 리전 엣지 캐시 위치에서 캐시되지 않는 경우, CloudFront는 배포의 사양과 요청을 비교하고 요청을 원본 서버로 전달한다. 원본 서버가 객체를 리전 엣지 캐시 위치로 다시 보낸 이후, 해당 객체가 POP에 전달되고, CloudFront가 파일을 사용자에게 전달한다. 이 경우 CloudFront는 다음 번에 최종 사용자가 해당 객체를 요청할 때 POP 뿐만 아니라 리전 엣지 캐시 위치의 캐시에도 객체를 추가한다. 이를 통해 리전의 모든 POP에서 로컬 캐시를 공유하도록 하고, 오리진 서버에 요청이 여러 번 제출되지 않는다. CloudFront는 또한 원본 서버와의 연결을 계속 유지하므로 최대한 빨리 오리진으로부터 해당 객체를 가져올 수 있다.

Note

  • 리전 엣지 캐시는 POP에 기능 패리티를 둔다. 예를 들어, 캐시 무효화 요청이 들어오면 객체가 만료되기 전에 POP 캐시 및 리전 엣지 캐시 모두에서 객체가 제거된다. 다음에 최종 사용자가 객체를 요청할 때, CloudFront에서는 최신 버전의 객체를 가져오도록 오리진에 반환한다.

  • 프록시 HTTP 메서드(PUT, POST, PATCH, OPTIONS, DELETE)는 POP에서 오리진으로 바로 이동하며 리전 엣지 캐시를 통해 프록시되지 않는다.

  • 요청 시 결정된 동적 요청은 리전 엣지 캐시를 통과하지 않고 오리진으로 직접 이동한다.

  • 오리진이 Amazon S3 버킷이고 요청의 최적 리전 엣지 캐시가 S3 버킷과 동일한 AWS 리전에 있는 경우, POP가 리전 엣지 캐시를 건너뛰고 S3 버킷으로 직접 이동한다.

다음 다이어그램에서는 CloudFront 엣지 로케이션 및 리전 엣지 캐시를 통해 요청 및 응답이 어떻게 전달되는지 보여준다.

002


References