Amazon CloudFront로 웹사이트 속도 높이기

Amazon CloudFront로 웹사이트 속도 높이기

Amazon CloudFront를 사용해 Amazon S3 웹사이트의 성능을 개선할 수 있어요. CloudFront는 전 세계 데이터 센터(에지 위치라고 함)에서 웹사이트 파일(HTML, 이미지, 비디오 등)을 제공해요. 방문자가 웹사이트에서 파일을 요청하면 CloudFront는 자동으로 요청을 가장 가까운 에지 위치의 파일 복사본으로 리디렉션해요. 그 결과 방문자가 더 멀리 있는 데이터 센터에서 콘텐츠를 요청했을 때보다 더 빠른 다운로드 시간을 얻을 수 있어요.

출처: 문서

본문

CloudFront는 지정한 시간 동안 에지 위치에 콘텐츠를 캐시해요. 방문자가 만료 날짜보다 오래 캐시된 콘텐츠를 요청하면 CloudFront는 오리진 서버에서 최신 버전의 콘텐츠가 있는지 확인해요. 최신 버전이 있다면 CloudFront는 새 버전을 에지 위치에 복사해요. 원본 콘텐츠에 대한 변경 사항은 방문자가 콘텐츠를 요청할 때 에지 위치에 복제돼요.

Route 53 없이 CloudFront 사용 — 이 페이지의 튜토리얼은 CloudFront 배포를 가리키는 데 Route 53을 사용해요. 하지만 Route 53을 사용하지 않고 CloudFront로 Amazon S3 버킷에 호스팅된 콘텐츠를 제공하려면 Amazon CloudFront Tutorials: Setting up a Dynamic Content Distribution for Amazon S3을 참고하세요. CloudFront로 Amazon S3 버킷에 호스팅된 콘텐츠를 제공할 때는 어떤 버킷 이름이든 사용할 수 있고, HTTP와 HTTPS가 모두 지원돼요.

CloudFormation 템플릿으로 설정 자동화 — CloudFront 배포를 만들어 웹사이트를 제공하는 안전한 정적 웹사이트를 구성하는 CloudFormation 템플릿 사용에 대한 자세한 내용은 Amazon CloudFront Developer Guide의 안전한 정적 웹사이트 시작하기를 참고하세요.

1단계: CloudFront 배포 생성 (Step 1: Create a CloudFront distribution)

먼저 CloudFront 배포를 만들어요. 이렇게 하면 전 세계 데이터 센터에서 웹사이트를 사용할 수 있게 돼요.

Amazon S3 오리진으로 배포를 만드는 방법은 다음과 같아요.

  1. https://console.aws.amazon.com/cloudfront/v4/home에서 CloudFront 콘솔을 열어요.
  2. Create Distribution을 선택해요.
  3. Create Distribution 페이지의 Origin Settings 섹션에서 Origin Domain Name에 버킷의 Amazon S3 웹사이트 엔드포인트를 입력해요. 예: example.com.s3-website.us-west-1.amazonaws.com. CloudFront가 Origin ID를 자동으로 채워줘요.
  4. Default Cache Behavior Settings는 기본값으로 두어요. Viewer Protocol Policy의 기본 설정으로 정적 웹사이트에 HTTPS를 사용할 수 있어요. 이런 구성 옵션에 대한 자세한 내용은 Amazon CloudFront Developer Guide의 웹 배포를 만들거나 업데이트할 때 지정하는 값을 참고하세요.
  5. Distribution Settings에서 다음을 수행해요.
    • Price Class를 **Use All Edge Locations (Best Performance)**로 두어요.
    • **Alternate Domain Names (CNAMEs)**를 루트 도메인과 www 하위 도메인으로 설정해요. 이 튜토리얼에서는 example.com과 www.example.com이에요. 중요: 이 단계를 수행하기 전에 대체 도메인 이름 사용 요구 사항을 확인해요. 특히 유효한 SSL/TLS 인증서가 필요하다는 점을 유의해요.
    • SSL Certificate에서 **Custom SSL Certificate (example.com)**을 선택하고, 도메인과 하위 도메인 이름을 포함하는 사용자 지정 인증서를 선택해요. 자세한 내용은 Amazon CloudFront Developer Guide의 SSL Certificate을 참고하세요.
    • Default Root Object에 인덱스 문서의 이름(예: index.html)을 입력해요. 배포에 접근하는 데 사용하는 URL에 파일 이름이 없으면 CloudFront 배포가 인덱스 문서를 반환해요. Default Root Object는 정적 웹사이트의 인덱스 문서 이름과 정확히 일치해야 해요. 자세한 내용은 인덱스 문서 구성을 참고하세요.
    • Logging을 On으로 설정해요. 중요: 배포를 만들거나 업데이트할 때 CloudFront 로깅을 활성화하면 CloudFront가 버킷 ACL(접근 제어 목록)을 업데이트해 awslogsdelivery 계정에 버킷에 로그를 쓸 수 있는 FULL_CONTROL 권한을 부여해요. 자세한 내용은 Amazon CloudFront Developer Guide의 표준 로깅 구성과 로그 파일 접근에 필요한 권한을 참고하세요. 로그를 저장하는 버킷이 S3 Object Ownership의 Bucket owner enforced 설정을 사용해 ACL을 비활성화한다면 CloudFront가 해당 버킷에 로그를 쓸 수 없어요.
  6. Create Distribution을 선택해요.
  7. 배포 상태를 보려면 콘솔에서 배포를 찾아 Status 열을 확인해요. InProgress 상태는 배포가 아직 완전히 배포되지 않았음을 나타내요. 배포가 완료된 뒤에는 새 CloudFront 도메인 이름으로 콘텐츠를 참조할 수 있어요.
  8. CloudFront 콘솔에 표시된 Domain Name 값을 기록해요. 예: dj4p1rv6mvubz.cloudfront.net.
  9. CloudFront 배포가 작동하는지 확인하려면 웹 브라우저에 배포의 도메인 이름을 입력해요. 웹사이트가 보이면 CloudFront 배포가 작동하는 거예요. 웹사이트에 Amazon Route 53에 등록된 사용자 지정 도메인이 있다면 다음 단계에서 레코드 세트를 업데이트할 때 CloudFront 도메인 이름이 필요해요.

2단계: 도메인과 하위 도메인의 레코드 세트 업데이트 (Step 2: Update the record sets for your domain and subdomain)

CloudFront 배포를 성공적으로 만들었으니 이제 Route 53의 별칭 레코드를 업데이트해 새 CloudFront 배포를 가리키게 해요.

별칭 레코드를 업데이트해 CloudFront 배포를 가리키게 하는 방법은 다음과 같아요.

  1. https://console.aws.amazon.com/route53/에서 Route 53 콘솔을 열어요.
  2. 왼쪽 탐색에서 Hosted zones를 선택해요.
  3. Hosted Zones 페이지에서 하위 도메인을 위해 만든 호스팅 영역(예: www.example.com)을 선택해요.
  4. Records 아래에서 하위 도메인을 위해 만든 A 레코드를 선택해요.
  5. Record details 아래에서 Edit record를 선택해요.
  6. Route traffic to 아래에서 Alias to CloudFront distribution을 선택해요.
  7. Choose distribution 아래에서 CloudFront 배포를 선택해요.
  8. Save를 선택해요.
  9. 루트 도메인을 CloudFront 배포로 리디렉션하려면 루트 도메인(예: example.com)에 대해 이 절차를 반복해요. 레코드 세트 업데이트는 2~48시간 안에 적용돼요.
  10. 새 A 레코드가 적용되었는지 확인하려면 웹 브라우저에 하위 도메인 URL(예: http://www.example.com)을 입력해요. 브라우저가 더 이상 루트 도메인(예: http://example.com)으로 리디렉션하지 않으면 새 A 레코드가 적용된 거예요. 새 A 레코드가 적용되면 새 A 레코드가 CloudFront 배포로 라우팅하는 트래픽은 루트 도메인으로 리디렉션되지 않아요. http://example.com이나 http://www.example.com으로 사이트를 참조하는 방문자는 가장 가까운 CloudFront 에지 위치로 리디렉션되어 더 빠른 다운로드 시간의 혜택을 받아요. 팁: 브라우저는 리디렉션 설정을 캐시할 수 있어요. 새 A 레코드 설정이 적용되었어야 한다고 생각하는데 브라우저가 여전히 http://www.example.com을 http://example.com으로 리디렉션한다면, 브라우저 기록과 캐시를 지우거나 브라우저 애플리케이션을 닫았다 다시 열거나 다른 웹 브라우저를 사용해 보세요.

(선택 사항) 3단계: 로그 파일 확인 (Step 3: Check the log files)

액세스 로그는 웹사이트를 방문하는 사람 수를 알려줘요. 또한 Amazon EMR 같은 다른 서비스로 분석할 수 있는 유용한 비즈니스 데이터를 담아요.

CloudFront 로그는 CloudFront 배포를 만들고 로깅을 활성화할 때 선택한 버킷과 폴더에 저장돼요. CloudFront는 해당 요청이 이루어진 시점부터 24시간 안에 로그 버킷에 로그를 기록해요.

웹사이트의 로그 파일을 보는 방법은 다음과 같아요.

  1. https://console.aws.amazon.com/s3/에서 Amazon S3 콘솔을 열어요.
  2. 웹사이트의 로깅 버킷 이름을 선택해요.
  3. CloudFront 로그 폴더를 선택해요.
  4. CloudFront가 기록한 .gzip 파일을 열기 전에 다운로드해요. 웹사이트를 학습 목적으로만 만들었다면 요금이 더 이상 발생하지 않도록 할당했던 리소스를 삭제할 수 있어요. 그렇게 하려면 예제 리소스 정리를 참고하세요. AWS 리소스를 삭제하면 웹사이트는 더 이상 사용할 수 없어요.

더 알아보기 (Learn more)