이 페이지에서는 Cloud CDN을 사용하여 콘텐츠를 최적화하고 가속화하기 위한 권장사항이 나와 있습니다. 이 섹션은 여러 핵심 영역으로 나뉩니다.
Cloud CDN에서는 캐시 가능한 콘텐츠의 원본으로 외부 애플리케이션 부하 분산기를 사용합니다. 외부 애플리케이션 부하 분산기는 다음 유형의 백엔드에서 하나의 전역 IP 주소를 통해 정적 콘텐츠와 동적으로 생성된 콘텐츠를 혼합하여 사용자에게 전송할 수 있습니다.
- 인스턴스 그룹
- 영역 네트워크 엔드포인트 그룹(NEG)
- 서버리스 NEG: App Engine, Cloud Run 또는 Cloud Run 함수 서비스 하나 이상
- 외부 백엔드용 인터넷 NEG
- Cloud Storage의 버킷
Google Cloud와 원활하게 통합되므로 Cloud CDN을 배포하고 관리할 수 있는 몇 가지 옵션이 있습니다. 여기에서 설명된 권장사항을 사용하여 배포 계획을 세우고 구체화하세요. 자세한 내용은 Cloud CDN 설정을 참조하세요.
캐시 적중률 최적화
다음 권장사항은 캐시 적중률을 최적화하는 데 도움이 됩니다.
정적 콘텐츠 캐시
Cloud CDN을 사용 설정할 때 애플리케이션에 적합한 캐시 모드를 선택하는 것이 좋습니다.
캐시 규칙을 관리하는 가장 유연하면서 일반적으로 권장되는 방법은 캐시 관리 헤더를 사용하는 것입니다. 원본 캐시 제어 헤더 사용에 익숙하지 않은 경우 Cloud CDN이 정적 콘텐츠를 자동으로 캐시하게 하는 것이 좋습니다.
원본에서 정적 응답을 자동으로 캐시하려면 --cache-mode=CACHE_ALL_STATIC
설정(기본)을 사용합니다. 이 설정을 사용하면 원본이 응답 헤더에 어떤 캐싱 지시어도 지정하지 않는 경우 Cloud CDN이 일반 정적 콘텐츠 유형을 캐시합니다. 콘텐츠가 요약된 카테고리와 일치하는지 확인합니다. 그렇지 않으면 콘텐츠가 캐시되지 않습니다.
사용자별 콘텐츠를 캐시하지 않음
경우에 따라 브라우저에서 사용자별 콘텐츠를 캐시할 수 있습니다. 사용자별 콘텐츠를 캐시하는 데 Cloud CDN을 사용하지 마세요.
커스텀 캐시 키를 사용하여 캐시 적중률 향상
성능과 확장성을 위해 캐시 적중률을 최적화하는 것이 중요합니다. 기본적으로 Cloud CDN은 전체 요청 URL을 사용하여 캐시 키를 만듭니다. 캐시 적중률을 최적화하려면 Cloud CDN에서 캐시를 불필요하게 샤딩하지 않도록 커스텀 캐시 키를 사용하면 됩니다.
커스텀 캐시 키를 사용하면 프로토콜, 호스트, 쿼리 문자열의 조합을 포함하거나 생략할 수 있습니다. 커스텀 캐시 키를 사용할 수 있는 경우의 예시는 다음과 같습니다.
동일한 IP 주소로 확인되고 동일한 서비스로 이동하는 호스트가 두 개 있습니다. 이 예시에서 전체 웹사이트는 두 호스트에서 동일합니다. 기본적으로 Cloud CDN은 HTTP 요청의 서로 다른
Host:
헤더로 인해 복사본 두 개를 캐시합니다. 커스텀 캐시 키를 사용하면 Cloud CDN에서 요청의 호스트 부분을 무시하고 캐시 항목을 공유하게 할 수 있습니다.더욱 구체적인 예시에서는 같은 로고를 사용하는 웹사이트 두 개가 서로 다른 도메인에 있을 수 있습니다. 웹사이트 콘텐츠는 다르지만 도메인 두 개 모두에서 같은 회사 로고를 사용하며 공유 콘텐츠가 있는 전용 백엔드 서비스가 있습니다. 로고가 있는 백엔드 서비스에 Cloud CDN을 사용 설정하고 캐시 키를 맞춤설정하면 캐시에서 도메인을 무시하고 로고만 캐시하도록 호스트 체크박스를 선택 취소합니다.
HTTP 또는 HTTPS를 통해 표시되는지 여부에 관계없이 로고를 캐시해야 합니다. 로고가 있는 백엔드 서비스의 캐시 키를 맞춤설정하는 경우 HTTP 및 HTTPS를 통한 요청이 로고의 캐시 항목과 일치하는 것으로 간주되도록 프로토콜 체크박스를 선택 취소합니다.
캐시 키를 맞춤설정하는 방법은 캐시 키 사용을 참조하세요.
성능 최적화
다음 권장사항은 성능을 최적화하는 데 도움이 됩니다.
HTTP/3 및 QUIC 프로토콜 지원이 사용 설정되어 있는지 확인
HTTP/3은 차세대 인터넷 프로토콜입니다. 원본 Google QUIC) (gQUIC) 프로토콜에서 개발한 프로토콜인 QUIC를 기반으로 합니다. HTTP/3은 외부 HTTP(S) 부하 분산기, Cloud CDN, 클라이언트 사이에서 지원됩니다.
Cloud CDN으로 성능을 향상시키려면 HTTP/3가 사용 설정되어 있는지 확인합니다.
음성 캐싱 사용
음성 캐싱은 일반적인 오류나 리디렉션을 위해 캐싱을 세밀하게 제어합니다. Cloud CDN에서 특정 응답 코드를 발견하면 응답을 설정된 TTL의 캐시에 보관합니다. 이렇게 하면 응답 지연 시간이 단축되므로 원본의 부하를 줄이고 최종 사용자 환경을 개선할 수 있습니다.
보안 최적화
다음 권장사항은 보안을 최적화하는 데 도움이 됩니다.
Google Cloud Armor 사용
Google Cloud Armor는 캐시된 콘텐츠와 캐시되지 않은 콘텐츠 또는 캐시 부적중 콘텐츠에 대해 Cloud CDN과 통합됩니다. 가능한 경우 웹 애플리케이션의 보안 향상을 위해 Google Cloud Armor를 Cloud CDN과 함께 사용하는 것이 좋습니다.
서명된 URL 사용
서명된 URL을 사용하는 경우 다음에 유의하세요.
공개 및 비공개 콘텐츠는 별도의 Cloud Storage 버킷에 보관합니다.
보안 권장사항을 따릅니다.
비공개 원본 인증
원본 인증은 요청이 구성된 백엔드 서비스에서만 수신된다는 강력한 보장을 제공합니다. 또한 요청에 대해 전송 중인 데이터 보호를 제공하고 요청의 서명된 부분의 재사용을 방지합니다.
Amazon S3 버킷 또는 호환 가능한 객체 저장소에는 비공개 원본 인증을 사용하는 것이 좋습니다. 비공개 원본 인증을 사용하면 신뢰할 수 있는 연결만 비공개 원본의 콘텐츠에 액세스하고 사용자가 직접 액세스하지 못하게 할 수 있습니다.
또한 원본 방화벽이 원본에 대한 액세스를 차단하는 경우 IP 허용 목록을 사용하여 요청이 Cloud CDN 또는 외부 애플리케이션 부하 분산기에서 수신되는지 확인합니다. 하지만 다른 Media CDN 고객이 구성에 원본을 지정하여 콘텐츠에 액세스하려는 시도를 차단하지는 않습니다.
캐시 최적화
다음 권장사항은 캐시를 최적화하는 데 도움이 됩니다.
캐시 TTL 최적화
TTL을 설정하거나 재정의하여 Cloud CDN이 응답을 캐시하는 기간과 Cloud CDN이 응답을 다시 검증하는 시기를 미세 조정할 수 있습니다.
또한 클라이언트용 TTL을 정의하면 브라우저 캐시를 최대한 활용할 수 있습니다.
자세한 내용은 TTL 설정 및 재정의 사용을 참조하세요.
시간에 민감한 콘텐츠 만료 시간 설정
Cloud CDN 캐시의 각 콘텐츠에는 만료 시간이 설정되므로 사용 사례에 적합한 만료 시간을 설정하는 것이 중요합니다. 원본 서버가 캐시 서버에서 만료되는 콘텐츠를 다시 보내야 하므로, 만료 시간을 신중하게 선택해야 합니다.
만료 시간을 선택하는 한 가지 방법은 콘텐츠를 업데이트하는 빈도에 따라 콘텐츠를 분류하는 것입니다. 예를 들면 다음과 같습니다.
- 실시간에 가까운 업데이트(예: 스포츠 이벤트 또는 교통 정보 라이브 피드)
- 빈번한 업데이트(예: 주간, 일일, 시간별 날씨 정보 또는 헤드라인 뉴스 이미지)
- 빈번하지 않은 업데이트(예: 웹사이트 로고, CSS 또는 자바스크립트 파일)
다음 작업으로 콘텐츠 카테고리별로 만료 시간을 선택합니다. 예를 들어 실시간에 가까운 스포츠 점수에는 5초 만료가 적합하고 날씨 업데이트에는 1시간 만료가 적합할 수 있습니다. Cloud Storage에 저장된 콘텐츠의 경우 Cache-Control
메타데이터를 사용하여 만료 시간을 설정합니다.
Compute Engine에서 콘텐츠가 제공되는 경우 웹 서버 소프트웨어를 구성하여 만료 시간을 제어할 수 있습니다.
만기 시간은 Cache-Control
헤더의 max-age
및 s-maxage
값으로 지정됩니다. 이 헤더는 HTTP 사양에 의해 정의됩니다.
예를 들어 다음 Cache-Control
헤더는 연관된 콘텐츠를 공개적으로 읽고 캐시할 수 있게 하며 캐시 만료 시간은 72시간(259,200초)입니다.
Cache-Control: public, max-age=259200
캐싱을 극대화하려면 캐싱 개요의 가이드라인을 따르세요. Cache-Control
메타데이터 필드의 max-age
및 s-maxage
값은 다음과 같은 방식으로 함께 작동합니다.
max-age
및s-maxage
값은 초 단위로 측정됩니다.s-maxage
값은 브라우저 캐시가 아닌 공유 캐시에만 적용됩니다.max-age
값은s-maxage
가 우선 적용되지 않는 한 모든 캐시에 적용됩니다.
자주 변경되지 않거나 관련 콘텐츠와 함께 변경되어야 하는 콘텐츠의 경우, 버전이 지정된 URL과 함께 긴 만료 시간을 사용하는 것이 좋습니다.
버전 관리된 URL을 사용하여 콘텐츠 업데이트
콘텐츠 버전을 관리하면 동일한 콘텐츠의 다른 버전을 제공할 수 있으므로, 캐시 항목이 만료되기 전에 사용자에게 새 콘텐츠를 보여줌으로써 콘텐츠를 효과적으로 삭제할 수 있습니다. 버전 관리는 무료이므로 캐시할 수 있는 콘텐츠를 업데이트하는 기본 방법으로 버전 관리를 사용하는 것이 좋습니다.
콘텐츠 버전을 관리하려면 URL에 버전 번호와 같은 매개변수를 추가합니다. 다음과 같이 다양한 방법으로 URL에 매개변수를 포함할 수 있습니다.
쿼리 문자열 추가:
file.ext?v=100
백엔드 버킷의 경우 버전 관리에 사용되는 쿼리 문자열은 백엔드 버킷의 구성에 지정되어야 합니다. 자세한 내용은 Cloud Storage 캐시 키의 쿼리 문자열 포함 목록을 참조하세요.
파일 이름 변경:
file.1.0.0.ext
또는file_v100.ext
경로 변경:
/v100/file.ext
매개변수를 추가하면 파일 이름과 URL이 변경됩니다. 이러한 변경으로 인해 캐시가 기존 캐시 항목을 무시합니다.
무효화를 간간히 사용하여 콘텐츠 삭제
무효화는 캐시 항목이 만료되기 전에 Cloud CDN 분산 캐시 서버에서 콘텐츠를 삭제합니다. 무효화는 최종 일관성을 갖습니다.
마지막 수단으로 무효화를 가끔 사용하는 것이 좋습니다. 예를 들어, 법적인 이유로 인해 또는 실수로 업로드하여 콘텐츠를 삭제해야 하는 경우에 무효화가 유용합니다. 그렇지 않으면 가능할 때마다 버전 관리를 사용하거나 콘텐츠가 정상적으로 만료될 때까지 기다리는 것이 좋습니다. Cloud CDN 캐시 서버는 새 콘텐츠를 위한 공간 확보를 위해 자주 액세스하지 않는 콘텐츠를 정기적으로 삭제합니다. 30일 동안 액세스하지 않은 콘텐츠는 무조건 삭제됩니다.
캐시 무효화에는 비율 한도가 있습니다.
무효화에 대한 자세한 내용은 캐시 무효화 개요를 참조하세요.
업로드된 파일 일관성 최적화
다음 권장사항은 파일 업로드의 일관성을 최적화하는 데 도움이 됩니다.
기존 파일 업데이트 방지
기존 파일을 업데이트하는 대신 새 버전을 업로드합니다.
새 파일에 버전 번호 또는 날짜가 포함될 수 있는 고유한 이름을 사용하세요.
파일 이름에 버전 번호(예: file_v2.css
) 또는 날짜(예: file_20230806.js
)를 추가하면 Cloud CDN에서 업데이트된 올바른 버전을 가져올 수 있습니다. 파일 URL에 파라미터(예: file.css?v=2
)를 추가하여 새 버전을 강제로 가져오는 것은 권장되지 않습니다. 이 접근 방식은 부분적이거나 불완전한 파일이 여전히 캐시될 수 있는 비원자적 원본 파일 업데이트를 캐시할 위험을 해결하지 못하기 때문입니다.
종속 항목을 참조하는 파일을 업로드하기 전에 새 버전의 종속 항목을 업로드하는 것이 중요합니다. 이렇게 하면 모든 참조가 업데이트된 완전한 파일을 가리키게 되어 부분적으로 업데이트되거나 잘린 파일이 제공될 위험을 줄일 수 있습니다.
파일에 원자적 업데이트 수행
기존 파일을 업데이트해야 하는 경우 원자적으로 수행합니다.
업로드가 완료되기 전에 파일에 액세스하여 캐시하면 파일이 불완전하거나 잘린 파일로 캐시될 수 있습니다. 예를 들어 /index.html
과 같은 파일은 고유한 이름을 가질 수 없지만 이름이 고유한 다른 파일을 가리킬 수 있습니다.
타겟 이름으로 파일을 업로드하면 업로드 중에 액세스할 때 불완전한 파일이 캐시될 수 있습니다. 대신 임시 이름으로 파일을 업로드하고 업로드가 완료된 후에만 대상 이름으로 이름을 변경합니다. 이렇게 하면 참조 시 파일을 완전히 즉시 사용할 수 있습니다.
기존 파일이 업데이트되는 경우 바이트 범위 캐싱으로 인해 새 파일이 업로드된 후에도 Cloud CDN에서 이전 파일의 범위를 보유할 수 있습니다. Cloud CDN에 이전 파일의 범위가 캐시된 경우 누락된 청크를 요청하면 부분 응답이 발생할 수 있습니다. 이는 Cloud CDN에서 원본 파일의 변경을 감지하고(etag
또는 last-modified
가 변경되기 때문) 오래된 콘텐츠를 삭제하고 진행 중인 다운로드의 연결을 끊고 오류를 생성하며, 클라이언트가 다시 시도하라는 메시지가 표시됩니다. 이 문제를 완화하려면 업데이트 중인 바이트 범위 캐시된 파일에 대해 무효화를 실행합니다.
Monitoring 및 Logging 최적화
다음 권장사항은 Monitoring 및 Logging을 최적화하는 데 도움이 됩니다.
Cloud CDN에 로깅이 사용 설정되어 있는지 확인
Cloud CDN 관리 시 모든 Cloud CDN이 사용 설정된 백엔드에서 로깅이 사용 설정되었는지 확인하는 것이 좋습니다.
Cloud CDN용 커스텀 모니터링 대시보드 사용
안정성과 성능을 향상시키려면 Cloud CDN과 관련된 모니터링 측정항목을 정기적으로 검토하는 것이 좋습니다. Cloud CDN 커스텀 모니터링 대시보드부터 시작하는 것이 좋습니다.
타사 성능 테스트 검토
Citrix Radar에서 제공하는 가용성, 지연 시간, 처리량 보고서 등의 타사 제공 업체의 보고서를 검토하세요.