개요

Cloud CDN 콘텐츠 전송 네트워크는 HTTP(S) 부하 분산과 함께 작동하여 사용자에게 콘텐츠를 전송합니다. HTTP(S) 부하 분산기는 요청을 수신하는 프런트엔드 IP 주소와 포트, 이러한 요청에 응답을 보내는 백엔드를 제공합니다.

Cloud CDN 콘텐츠는 다음과 같은 다양한 유형의 백엔드에서 제공될 수 있습니다.

Cloud CDN에서는 이러한 백엔드를 원본 서버라고 부르기도 합니다. 다음 그림은 VM 인스턴스에서 실행 중인 원본 서버의 응답이 Cloud CDN에 의해 전송되기 전에 어떻게 HTTP(S) 부하 분산기를 통과하는지 보여줍니다.

Cloud CDN을 통해 원본 서버에서 클라이언트로 응답이 전달됩니다.
Cloud CDN 응답 흐름

Cloud CDN 작동 방식

사용자가 HTTP(S) 부하 분산기의 콘텐츠를 요청하면 이 요청은 사용자와 최대한 가까이에 있는 Google 네트워크 에지에 위치한 Google 프런트 엔드(GFE)에 도착합니다. 부하 분산기의 URL 맵이 Cloud CDN가 구성된 백엔드로 트래픽을 라우팅하는 경우 GFE는 다음의 방식으로 Cloud CDN를 사용합니다.

  • GFE는 먼저 Cloud CDN 캐시에서 사용자 요청에 대한 응답을 찾습니다. 캐시된 응답을 찾으면 GFE는 캐시된 요청을 사용자에게 전송합니다. 이것을 캐시 적중이라고 합니다.

  • 요청에 대한 캐시된 응답을 찾지 못한 경우 GFE는 적절한 백엔드(원본 서버)에 요청을 보냅니다. 이 요청에 대한 응답이 캐시 가능한 경우 GFE는 응답을 Cloud CDN 캐시에 저장하여 이후 요청이 있을 때 해당 캐시가 사용되도록 합니다.

Cloud CDN을 사용하려면 HTTP(S) 부하 분산기가 프리미엄 네트워크 서비스 등급을 사용해야 합니다. Cloud CDN이 캐시된 응답을 제공하는 경우 이 응답은 부하 분산기의 IP 주소에서 제공한 것입니다. Cloud CDN은 URL 리디렉션을 수행하지 않으며 Cloud CDN 캐시는 GFE에 위치합니다. 이는 클라이언트가 요청한 URL이 Cloud CDN의 사용 설정 여부에 관계없이 동일함을 의미하며 이 URL이 캐시 적중 발생 여부에 관계없이 동일함을 의미합니다.

캐시된 콘텐츠 무효화를 통해 캐시에서 항목을 삭제할 수 있습니다.

Cloud Storage 버킷이나 Compute Engine VM에서 바로 객체를 요청하면 Cloud CDN을 우회할 수 있습니다. 예를 들어 Cloud Storage 버킷 객체에 대한 URL은 다음과 같습니다.

https://storage.googleapis.com/your-storage-bucket/filename

캐시 적중, 부적중, 채움, 이그레스

처음으로 콘텐츠가 요청되면 GFE는 캐시에서 요청을 수행할 수 없다고 판단합니다. 이것을 캐시 부적중이라고 합니다. GFE는 근처의 다른 캐시에서 콘텐츠를 가져오기 위해 시도할 수 있습니다. 근처의 캐시에 콘텐츠가 있으면 GFE는 캐시 간 채움을 통해 첫 번째 캐시에 콘텐츠를 보냅니다. 그렇지 않으면 GFE는 요청을 HTTP(S) 부하 분산기로 전달합니다. 그러면 부하 분산기는 요청을 사용자 백엔드 중 하나로 전달합니다. 이 백엔드가 콘텐츠의 원본 서버입니다.

캐시가 콘텐츠를 수신하면 GFE는 콘텐츠를 사용자에게 전달합니다. 콘텐츠가 캐시 가능이면 캐시는 이후 요청을 위해 콘텐츠를 저장할 수 있습니다. 새 콘텐츠 삽입으로 인해 더 인기 있는 콘텐츠를 삭제해야 하는 경우나 캐시에 새 콘텐츠의 인기도에 대한 정보가 부족한 경우, 캐시는 새 콘텐츠의 저장을 거부할 수 있습니다. 예를 들어 캐시는 처음 액세스할 때 대형 콘텐츠 삽입을 거부할 수 있습니다.

사용자가 캐시에 저장된 기존 콘텐츠를 요청하면 GFE는 캐시 키를 이용하여 해당 콘텐츠를 조회하여 사용자에게 직접 응답하므로 왕복 시간이 단축되고 원본 서버는 요청을 처리하지 않아도 됩니다.

초기 응답은 원본 서버에서 제공되고 후속 응답은 GFE에 의해 캐시에서 제공됩니다.
캐시 부적중 및 캐시 적중

캐시에서 클라이언트로의 데이터 전송을 캐시 이그레스라고 합니다. 캐시로의 데이터 전송을 캐시 채움이라고 합니다. 다음 그림과 같이 캐시 채움은 다른 Cloud CDN 캐시 또는 원본 서버를 출처로 할 수 있습니다.

캐시 채움은 원본 서버에서 캐시로 또는 캐시에서 다른 캐시로의 데이터 전송입니다. 캐시 이탈은 캐시에서 클라이언트로의 데이터 전송입니다.
캐시 채움 및 캐시 이그레스

콘텐츠가 캐시에 있으면 사용자는 캐시 이그레스 대역폭의 비용을 지불합니다. 캐시 간 채움 결과로 인해 없는 경우를 포함하여 콘텐츠가 캐시에 없으면 사용자는 캐시 채움 대역폭에 대한 요금을 추가로 지불합니다. 즉, 다른 모든 조건이 동일하다면 캐시에 있음 비용이 캐시에 없음 비용보다 낮습니다. 자세한 가격 책정 정보는 가격 책정 페이지를 참조하세요.

캐시 적중률

캐시 적중률은 요청된 객체가 캐시에서 제공된 횟수를 백분율로 표시한 것입니다. 캐시 적중률이 60%라면 요청된 객체를 캐시에서 제공한 경우가 전체 중 60%이며 원본에서 가져와야 하는 경우는 40%임을 의미합니다.

Google Cloud Platform Console의 캐시 적중률 열에 캐시 적중률이 각각의 원본에 대해 보고되어 있습니다.
Cloud CDN 페이지로 이동
이 페이지에 표시된 백분율은 단시간 계산된 비율입니다(최근 몇 분). 1시간~30일 기간의 캐시 적중률을 보려면 원본 이름을 클릭한 후 모니터링 탭을 클릭하세요.

캐시 키가 캐시 적중률에 어떻게 영향을 미치는지에 대한 자세한 내용은 캐시 키 사용을 참조하세요. 문제해결 정보는 캐시 적중률이 낮음을 참조하세요.

캐시에 콘텐츠 삽입

캐싱은 요청이 해당 캐시를 통과한 경우와 응답이 캐시 가능할 경우 특정 캐시에 객체가 저장된다는 점에서 반응성을 가집니다. 한 캐시에 저장된 객체는 다른 캐시에 자동으로 복제되지 않습니다. 캐시 간 채움은 클라이언트가 시작한 요청에 대해서만 이행됩니다. 개별 캐시를 통해 요청에 응답하는 경우를 제외하고 캐시를 미리 로드할 수 없습니다.

원본 서버가 바이트 범위 요청을 지원하면 Cloud CDN은 단일 클라이언트 요청에 대한 응답으로 여러 캐시 채움 요청을 시작할 수 있습니다. Cloud CDN에서 시작된 요청 섹션에는 이러한 요청에 대한 추가 정보가 있습니다.

캐시에서 제공된 콘텐츠

Cloud CDN을 사용하도록 설정하면 캐시 가능한 모든 콘텐츠에 대해 자동으로 캐싱이 이행됩니다. 원본 서버는 HTTP 헤더를 사용하여 어떤 응답을 캐시하고 캐시하지 않을 지를 알립니다. 백엔드 버킷을 사용하는 경우, 원본 서버는 Cloud Storage입니다. VM 인스턴스를 사용하는 경우, 원본 서버는 해당 인스턴스에서 실행되는 웹 서버 소프트웨어입니다. 캐싱 세부정보에서 Cloud CDN이 캐시하는 내용과 캐시하는 기간에 대한 추가 정보를 확인할 수 있습니다.

Cloud CDN은 전 세계 수많은 곳에 있는 캐시를 사용합니다. 캐시 특성상 특정 요청을 캐시에서 제공할지 여부를 예측하는 것은 불가능합니다. 그러나 캐시 가능한 콘텐츠에 대한 인기 있는 요청은 대부분의 경우 캐시에서 제공되므로, 지연 시간이 크게 줄어들고 비용이 절감되며 원본 서버의 부하가 감소됩니다.

로그를 보면 Cloud CDN이 캐시에서 제공하고 있는 내용을 확인할 수 있습니다. 캐시 무효화 작업을 이행하여 캐시에서 콘텐츠를 삭제할 수 있습니다.

제거 및 만료

캐시에서 콘텐츠를 제공하려면 콘텐츠를 캐시에 삽입해야 하며 제거하거나 만료하지 않아야 합니다.

제거만료는 서로 다른 두 가지 개념입니다. 모두 서비스 대상에 영향을 미치지만 서로에게 직접적인 영향을 주지는 않습니다.

  • 제거: 모든 캐시에는 보유할 수 있는 양에 한계가 있습니다. 하지만 Cloud CDN은 캐시가 가득 찬 후에도 콘텐츠를 추가합니다. 가득 찬 공간에 콘텐츠를 삽입하기 위해 캐시는 먼저 다른 항목을 제거하여 공간을 확보합니다. 이를 제거라고 합니다. 캐시는 대개 가득 차 있기 때문에 끊임없이 콘텐츠를 제거합니다. 일반적으로 콘텐츠의 만료 시간에 관계없이 최근에 액세스하지 않은 콘텐츠를 제거합니다. 제거된 콘텐츠는 만료되었을 수 있고 그렇지 않을 수도 있습니다. 만료 시간 설정은 제거에 영향을 주지 않습니다.

    인기가 없는 콘텐츠란 한동안 액세스하지 않은 콘텐츠를 의미합니다. '한동안'과 '인기가 없는'이라는 표현은 모두 캐시의 다른 항목과 관련이 있습니다. 캐시가 더 많은 트래픽을 수신하면 더 많은 캐시 콘텐츠가 제거됩니다.

    모든 대용량 캐시가 그러하듯, 콘텐츠는 예기치 않게 제거될 수 있습니다. 따라서 특정 요청이 캐시에서 제공될 것이라고 보장할 수 없습니다.

  • 만료: HTTP(S) 캐시의 콘텐츠는 구성 가능한 만료 시간을 가질 수 있습니다. 만료 시간은 콘텐츠가 제거되지 않은 경우에도 캐시에게 오래된 콘텐츠를 제공하지 않도록 알립니다.

    예를 들어 시간별 사진 URL을 고려할 때 응답은 1시간 이내에 만료되도록 설정되어야 합니다. 그렇지 않은 경우 제공된 콘텐츠는 캐시의 오래된 사진일 수 있습니다.

Cloud CDN에서 시작된 요청

원본 서버가 바이트 범위 요청을 지원하면 Cloud CDN은 단일 클라이언트 요청에 대한 응답으로 여러 요청을 원본 서버에 보낼 수 있습니다. 바이트 범위 요청 지원에서 설명한 대로 Cloud CDN은 유효성 검사 요청과 바이트 범위 요청 등 두 가지 유형의 요청을 시작할 수 있습니다. 바이트 범위 요청에 대한 자세한 내용은 해당 문서를 참조하세요.

다른 클라우드 플랫폼 서비스의 데이터 위치 설정

Cloud CDN을 사용하면 원본 서버가 위치한 리전 또는 영역 밖의 제공 위치에 데이터를 저장할 수 있습니다. 이는 정상이며 인터넷에서 HTTP 캐싱이 작동하는 방식입니다. 다른 Google 제품과 서비스를 함께 사용하는 경우 Google Cloud Platform 서비스 약관의 서비스 관련 조항에 따라 특정 Cloud Platform 서비스에서 사용할 수 있는 데이터 위치 설정은 해당 Cloud Platform 서비스의 핵심 고객 데이터에 적용되지 않습니다(이 경우에는 Cloud CDN 서비스). 이러한 결과를 원하지 않으면 Cloud CDN 서비스를 사용하지 마세요.

Google 관리형 SSL 인증서 지원

Cloud CDN가 사용 설정되면 Google 관리형 인증서를 사용할 수 있습니다.

Cloud Armor 제한사항

Google Cloud Armor는 Cloud CDN에서 지원되지 않습니다. Google Cloud Armor 보안 정책과 백엔드 서비스의 연결을 시도하는 상황에서 Cloud CDN가 사용 설정되어 있다면 구성이 거부됩니다. 이와 유사하게, 연결된 Google Cloud Armor 보안 정책이 있는 백엔드 서비스에서 Cloud CDN을 사용 설정하려고 하는 경우 구성 프로세스에 오류가 발생합니다.

다음 단계