Cloud CDN(Content Delivery Network)은 Google의 글로벌 에지 네트워크를 사용하여 사용자에게 더 근접하여 콘텐츠를 제공하므로 웹사이트 및 애플리케이션 속도가 빨라집니다.
Cloud CDN은 전역 외부 애플리케이션 부하 분산기나 기본 애플리케이션 부하 분산기와 함께 작동하여 사용자에게 콘텐츠를 전송합니다. 외부 애플리케이션 부하 분산기는 요청을 수신하는 프런트엔드 IP 주소와 포트, 요청에 응답하는 백엔드를 제공합니다.
Cloud CDN 콘텐츠는 다음과 같은 다양한 유형의 백엔드에서 가져올 수 있습니다.
Cloud CDN에서는 이러한 백엔드를 원본 서버라고 부르기도 합니다. 그림 1은 가상 머신(VM) 인스턴스에서 실행되는 원본 서버의 응답이 Cloud CDN에서 전송되기 전에 외부 애플리케이션 부하 분산기를 통해 흐르는 방식을 보여줍니다. 이 경우 Google 프런트엔드(GFE)는 Cloud CDN과 외부 애플리케이션 부하 분산기로 구성됩니다.
Cloud CDN 작동 방식
사용자가 외부 애플리케이션 부하 분산기에서 콘텐츠를 요청하면 이 요청은 사용자와 최대한 가까이에 있는 Google 네트워크 에지에 위치한 GFE에 도착합니다.
부하 분산기의 URL 맵이 Cloud CDN이 구성된 백엔드 서비스 또는 백엔드 버킷으로 트래픽을 라우팅하는 경우 GFE는 Cloud CDN을 사용합니다.
캐시 적중 및 캐시 부적중
캐시는 콘텐츠를 저장하고 관리하여 해당 콘텐츠에 대한 향후 요청을 더 빨리 처리할 수 있는 서버 그룹입니다. 캐시된 콘텐츠는 원본 서버에 저장된 캐시 가능한 콘텐츠의 사본입니다.
GFE가 Cloud CDN 캐시를 살펴보고 사용자의 요청에 캐시된 응답을 찾으면 캐시된 응답을 사용자에게 전송합니다. 이것을 캐시 적중이라고 합니다. 캐시 적중이 발생하면 GFE는 캐시 키를 사용하여 콘텐츠를 검색하고 사용자에게 직접 응답하여 왕복 시간을 줄이고 원본 서버는 요청을 처리하지 않아도 됩니다.
부분 적중은 요청이 캐시에서 부분적으로 처리되고 백엔드에서 부분적으로 처리되는 경우에 발생합니다. 이는 바이트 범위 요청 지원에 설명된 대로 요청된 콘텐츠의 일부만 Cloud CDN 캐시에 저장된 경우 발생할 수 있습니다.
처음으로 콘텐츠가 요청되면 GFE는 캐시에서 요청을 수행할 수 없다고 판단합니다. 이것을 캐시 부적중이라고 합니다. 캐시 부적중이 발생하면 GFE가 요청을 외부 애플리케이션 부하 분산기로 전달합니다. 그러면 부하 분산기가 요청을 원본 서버 중 하나로 전달합니다. 캐시가 콘텐츠를 수신하면 GFE는 콘텐츠를 사용자에게 전달합니다.
이 요청에 대한 원본 서버의 응답이 캐시 가능하면 Cloud CDN은 이후 요청을 위해 Cloud CDN 캐시에 응답을 저장합니다. 캐시에서 클라이언트로의 데이터 전송을 캐시 이그레스라고 합니다. 캐시로의 데이터 전송을 캐시 채우기라고 합니다.
그림 2는 캐시 적중과 캐시 부적중을 보여줍니다.
- VM 인스턴스에서 실행되는 원본 서버가 HTTP(S) 응답을 보냅니다.
- 외부 애플리케이션 부하 분산기는 응답을 Cloud CDN에 배포합니다.
- Cloud CDN은 최종 사용자에게 응답을 제공합니다.
캐시 적중 및 캐시 부적중과 관련된 비용은 가격 책정을 참조하세요.
캐시 적중률
캐시 적중률은 요청된 객체가 캐시에서 제공된 횟수를 백분율로 표시한 것입니다. 캐시 적중률이 60%라면 요청된 객체를 캐시에서 제공한 경우가 전체 중 60%이며 원본에서 가져와야 하는 경우는 40%임을 의미합니다.
캐시 키가 캐시 적중률에 미치는 영향에 대한 자세한 내용은 캐시 키 사용을 참조하세요. 문제 해결 정보는 캐시 적중률이 낮음을 참조하세요.
짧은 기간의 캐시 적중률 보기
짧은 기간(최근 몇 분)의 캐시 적중률을 보려면 다음 단계를 따르세요.
Google Cloud Console에서 Cloud CDN 페이지로 이동합니다.
각 원본의 경우 캐시 적중률 열을 참조하세요.
해당 사항 없음은 부하 분산된 콘텐츠가 현재 캐시되지 않았거나 최근에 요청되지 않았음을 의미합니다.
더 긴 기간의 캐시 적중률 보기
1시간~30일 기간의 캐시 적중률을 보려면 다음 단계를 따르세요.
- Google Cloud Console에서 Cloud CDN 페이지로 이동합니다.
- 원본 이름 열에서 원본 이름을 클릭합니다.
- 모니터링 탭을 클릭합니다.
- 선택사항: 특정 백엔드를 선택합니다.
CDN 적중률은 사용 가능한 모니터링 그래프 중 하나입니다. 해당 사항 없음을 표시하는 그래프는 콘텐츠가 캐시되지 않았거나 표시된 시간 범위에서 요청되지 않았음을 의미합니다.
다른 기간을 선택하여 기간을 조정할 수 있습니다. 다음 이미지는 선택할 수 있는 시간 범위의 예시입니다.
캐시에 콘텐츠 삽입
캐싱은 요청이 해당 캐시를 통과한 경우와 응답이 캐시 가능할 경우 특정 캐시에 객체가 저장된다는 점에서 반응성을 가집니다. 한 캐시에 저장된 객체는 다른 캐시에 자동으로 복제되지 않습니다. 캐시 간 채우기는 클라이언트가 시작한 요청에 대해서만 이행됩니다. 개별 캐시를 통해 요청에 응답하는 경우를 제외하고 캐시를 미리 로드할 수 없습니다.
원본 서버가 바이트 범위 요청을 지원하는 경우 Cloud CDN은 단일 클라이언트 요청에 대한 응답으로 여러 캐시 채우기 요청을 시작할 수 있습니다.
캐시에서 콘텐츠 제공
Cloud CDN을 사용하도록 설정하면 캐시 가능한 모든 콘텐츠에 대해 자동으로 캐싱이 이행됩니다. 원본 서버는 HTTP 헤더를 사용하여 어떤 응답을 캐시하는지를 나타냅니다. 캐시 모드를 사용하면 캐시 가능성도 제어할 수 있습니다.
백엔드 버킷을 사용하는 경우 원본 서버는 Cloud Storage입니다. VM 인스턴스를 사용할 때 원본 서버는 해당 인스턴스에서 실행되는 웹 서버 소프트웨어입니다.
Cloud CDN은 전 세계 수많은 곳에 있는 캐시를 사용합니다. 캐시의 특성으로 인해 특정 요청이 캐시에서 제공되는지 여부를 예측하는 것은 불가능합니다. 하지만 캐시 가능한 콘텐츠에 대한 인기 있는 요청은 대부분 캐시에서 제공되므로 지연 시간이 줄어들고 비용이 절감되며 원본 서버의 부하가 낮아집니다.
Cloud CDN이 캐시하는 내용과 캐시 기간에 대한 자세한 내용은 캐싱 개요를 참조하세요.
Cloud CDN이 캐시에서 제공하는 항목은 로그를 보면 확인할 수 있습니다.
캐시에서 콘텐츠 삭제
캐시에서 항목을 삭제하려면 캐시된 콘텐츠를 무효화합니다. 자세한 내용은 다음을 참조하세요.
캐시 우회
Cloud Storage 버킷이나 Compute Engine VM에서 바로 객체를 요청하면 Cloud CDN을 우회할 수 있습니다. 예를 들어 Cloud Storage 버킷 객체에 대한 URL은 다음과 같습니다.
https://storage.googleapis.com/STORAGE_BUCKET/FILENAME
제거 및 만료
캐시에서 콘텐츠를 제공하려면 콘텐츠를 캐시에 삽입해야 하며 제거하거나 만료하지 않아야 합니다.
제거와 만료는 서로 다른 두 가지 개념입니다. 모두 서비스 대상에 영향을 미치지만 서로에게 직접적인 영향을 주지는 않습니다.
제거
소수의 요청으로 콘텐츠 캐싱을 테스트할 경우 콘텐츠가 삭제될 수 있습니다.
모든 캐시의 저장 용량에는 제한이 있습니다. 하지만 Cloud CDN은 캐시가 가득 찬 후에도 콘텐츠를 추가합니다. 가득 찬 공간에 콘텐츠를 삽입하기 위해 캐시는 먼저 다른 항목을 제거하여 공간을 확보합니다. 이를 제거라고 합니다. 캐시는 대개 가득 차 있기 때문에 끊임없이 콘텐츠를 제거합니다. 일반적으로 콘텐츠의 만료 시간에 관계없이 최근에 액세스하지 않은 콘텐츠를 제거합니다. 제거된 콘텐츠는 만료되었을 수 있고 그렇지 않을 수도 있습니다. 만료 시간 설정은 제거에 영향을 주지 않습니다.
인기가 없는 콘텐츠란 한동안 액세스하지 않은 콘텐츠를 의미합니다. 얼마간과 인기 없음은 모두 캐시에 있는 다른 항목의 양에 대해 상대적입니다. 여러 Google Cloud 프로젝트가 동일한 GFE 집합에서 제공되므로 공통의 캐시 공간 풀을 공유합니다. 콘텐츠의 상대적 인기도는 단일 프로젝트 내에서뿐만 아니라 여러 프로젝트에서 비교됩니다.
캐시가 더 많은 트래픽을 수신하면 더 많은 캐시 콘텐츠가 제거됩니다.
모든 대용량 캐시를 통해 콘텐츠가 예기치 않게 제거될 수 있으므로 캐시에서 제공하는 항목에 대한 특별한 요청은 보장되지 않습니다.
만료
HTTP(S) 캐시의 콘텐츠에는 구성 가능한 만료 시간이 있을 수 있습니다. 만료 시간은 콘텐츠가 제거되지 않은 경우에도 캐시에게 오래된 콘텐츠를 제공하지 않도록 알립니다.
예를 들어 시간별 사진 URL을 고려해보세요. 응답은 1시간 이내에 만료되도록 설정되어야 합니다. 그렇지 않은 경우 제공된 콘텐츠는 캐시의 오래된 사진일 수 있습니다.
만료 시간을 미세 조정하는 방법에 대한 자세한 내용은 TTL 설정 및 재정의 사용을 참조하세요.
Cloud CDN에서 시작된 요청
원본 서버가 바이트 범위 요청을 지원하면 Cloud CDN은 단일 클라이언트 요청에 대한 응답으로 여러 요청을 원본 서버에 보낼 수 있습니다. 바이트 범위 요청 지원에서 설명한 대로 Cloud CDN은 유효성 검사 요청과 바이트 범위 요청 등 두 가지 유형의 요청을 시작할 수 있습니다.
다른 Cloud Platform 서비스의 데이터 위치 설정
Cloud CDN을 사용한다는 것은 데이터가 원본 서버의 리전 또는 영역 외부의 제공 위치에 저장될 수 있음을 의미합니다. 이는 정상이며 인터넷에서 HTTP 캐싱이 작동하는 방식입니다. Google Cloud Platform 서비스 약관의 서비스별 약관에 따라 특정 Cloud Platform 서비스에서 사용할 수 있는 데이터 위치 설정은 다른 Google 제품 및 서비스(이 경우 Cloud CDN 서비스)와 함께 사용 시 각 Cloud Platform 서비스에 대한 핵심 고객 데이터에는 적용되지 않습니다. 이러한 결과를 원하지 않는 경우 Cloud CDN 서비스를 사용하지 마세요.
Google 관리형 SSL 인증서 지원
Cloud CDN가 사용 설정되면 Google 관리형 인증서를 사용할 수 있습니다.
Cloud CDN이 포함된 Google Cloud Armor
Cloud CDN이 포함된 Google Cloud Armor에는 두 가지 유형의 보안 정책이 있습니다.
- 에지 보안 정책. 이러한 정책은 Cloud CDN이 사용 설정된 원본 서버에 적용할 수 있습니다. CDN 조회 이전의 모든 트래픽에 적용됩니다.
- 백엔드 보안 정책. 이러한 정책은 동적 콘텐츠, 캐시 부적중 또는 대상이 CDN 원본 서버인 기타 요청에만 적용됩니다.
자세한 내용은 Google Cloud Armor 문서를 참조하세요.
다음 단계
- HTTP(S) 부하 분산 인스턴스 및 스토리지 버킷에 Cloud CDN을 사용 설정하려면 Cloud CDN 사용을 참조하세요.
- Google Kubernetes Engine에서 Cloud CDN을 사용하려면 인그레스를 통해 Cloud CDN 구성을 참조하세요.
- GFE 접속 지점을 찾으려면 캐시 위치를 참조하세요.