Cloud CDN
Cloud CDN은 GCP에서 제공하는 CDN 서비스이다. 이번 글에서는 Cloud CDN을 이용하여 CDN 환경을 구축하고 성능을 테스트해볼 것이다.
공식 문서(https://cloud.google.com/cdn/docs/setting-up-cdn-with-bucket)를 활용해서 구성을 해볼 것이다.
먼저 Google Cloud에서 계정 등록 및 CDN 사용 등록을 한다. Cloud CDN 페이지에서 설정을 시작한다.

CDN 설정을 하려면 다음과 같이 원본 구성 (버킷 구성), 호스트 및 경로 규칙 구성, 캐시 성능 구성을 해야함을 알 수 있다.

1. Cloud Storage 백엔드 버킷 만들기
스토리지 버킷을 만들어볼 것이다. 이때, 여러 리전에 자동으로 객체를 복제하는 멀티 리전 버킷으로 구성한다.
버킷 생성

Cloud Storage 버킷으로 그래픽 파일 복사
파일을 복사해준다.
# gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
$ gsutil cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://dahyeon-cdn-bucket/never-fetch/
공개 설정
Cloud Storage 버킷을 공개로 설정해준다. 이로써 인터넷의 모든 사용자가 ACL을 제외한 객체와 메타데이터를 보고 나열할 수 있다.

GCP의 Cloud Bucket 페이지이다. 먼저 자동으로 설정된 공개 액세스 방지를 해제하고, 주 구성원에 액세스 권한 부여를 해준다.

고정 외부 IP 주소 설정
이제 Cloud Storage 버킷이 준비되어 실행 중이므로 고객이 부하 분산기에 도달하기 위해 사용하는 전역 고정 외부 IP 주소를 설정합니다. 외부 고정 주소는 도메인을 가리키는 단일 주소를 제공하므로 이 단계는 선택사항이지만 _권장_됩니다.


2. 외부 HTTP(S) 부하 분산기 만들기
외부 애플리케이션 부하 분산기 구성 시작


백엔드 구성
Cloud Storage 버킷의 래퍼 역할을 하는 부하 분산기의 백엔드 버킷을 만듭니다. 백엔드 버킷을 만들거나 수정할 때 Cloud CDN을 사용 설정할 수 있습니다.


백엔드 버킷을 만들 때, 캐시모드를 설정할 수 있다.
캐싱 모드에 대한 공식 문서(https://cloud.google.com/cdn/docs/caching?hl=ko)를 조사해보았다.
- 정적 콘텐츠
- 캐시 불가능이 될 수 없는 정적 콘텐츠가 있는 성공적인 응답을 자동으로 캐시합니다. 유효한 캐싱 지시문을 설정하는 원본 응답도 캐시됩니다.
- Cache-Control 헤더를 기준으로 출처 설정 사용
- 유효한 캐시 지시어 및 캐싱 헤더예(e.g. 'Cache-Control: public, max_age=3600')를 설정하기 위해 성공적인 원본 응답을 요구합니다. 이 지시어가 없는 성공적인 응답은 원본에서 전달됩니다.
- 모든 콘텐츠 강제 캐시
- 원본으로 설정된 캐시 지시문을 무효화하고 성공적인 응답을 무조건적으로 캐시합니다. 백엔드가 동적 HTML 또는 API 응답과 같은 사용자별 비공개 콘텐츠를 제공하는 경우에는 이 모드가 적절하지 않습니다.
라우팅 규칙 구성
기본 설정으로 구성한다.

프런트엔드 구성
IP address를 위에서 생성한 ip 주소로 설정한다.

구성 완료

3. 백엔드 버킷으로 트래픽 전송 (CDN 사용하기)
부하분산기의 IP 주소를 확인하고, 이미지를 업로드한 주소로 접속해본다.
http://IP_ADDRESS/never-fetch/three-cats.jpg

이미지 확인이 가능하다!
'🍀 Cloud Architect > CDN' 카테고리의 다른 글
CDN 동작과 특장점 (1) | 2024.10.06 |
---|---|
속도 비교 - CDN vs Cloud Storage (0) | 2023.11.26 |