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

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

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

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

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

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

  2. DNS는 요청을 최적으로 처리할 수 있는 CloudFront POP(엣지 로케이션)로 라우팅합니다. 일반적으로는 지연 시간 관점에서 가장 가까운 CloudFront POP입니다.

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

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

    2. 원본 서버는 객체를 다시 엣지 로케이션으로 보냅니다.

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

CloudFront를 통한 사용자로부터 오리진으로의 요청 및 응답

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는 또한 원본 서버와의 연결을 계속 유지하므로 최대한 빨리 오리진으로부터 해당 객체를 가져올 수 있습니다.

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

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

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

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

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

엣지 로케이션 및 리전 엣지 캐시를 통해 최종 사용자에서 오리진까지의 요청/응답 경로를 보여주는 다이어그램.