본문 바로가기
  • 실행력이 모든걸 결정한다
AWS/CloudFront

[CloudFront] CloudFront 기본 사용법

by 김코더 김주역 2021. 12. 27.
반응형

1. CDN과 CloudFront

1) CDN이란?

- CDN은 Content Delivery Network의 줄임말로, 콘텐츠 전송 네트워크를 의미한다.

- 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장(캐싱)하여 제공하는 시스템이다.

- 먼 지역에서 내 서비스에 접근하는 사용자에게도 컨텐츠를 빠른 속도로 제공해줄 수 있다.

- 인터넷 서비스 제공자에 직접 연결되어 데이터를 전송하기 때문에 병목 현상이 발생하지 않는다.

 

 

2) CloudFront란?

- CloudFront는 AWS에서 운영하는 콘텐츠 전송 네트워크(CDN)로, Cache 서버로써의 역할을 제공한다.

- AWS는 전 세계에 서버가 흩어져 있기 때문에 CDN으로써 동작할 수 있는 것이다.

- 직접 Cache 설정을 해야할 수도 있기 때문에 Cache에 대한 이해가 필요하다. 아래 포스팅을 통해 Cache에 대해 가볍게 이해하고 오는 것을 권장한다.

https://kimcoder.tistory.com/382

 

HTTP Cache 기초

1. HTTP Cache란? - Cache는 데이터나 값을 미리 복사해 놓는 임시 장소 또는 중간 버퍼다. - 애플리케이션상에서 이전에 사용했던 리소스들을 재사용함으로써 접근시간을 줄이고, 이에 따라 성능도

kimcoder.tistory.com

 

 

 

 

2. 배포 생성

- CloudFront 서버를 생성하는 작업으로, CloudFront 서버를 Distribution(배포)라고도 부른다.

- CloudFront 서버는 이제 클라이언트와 해당 웹 서버(origin)의 매개체 역할을 하게 될 것이다. 즉, 클라이언트와 웹 서버가 직접적으로 통신하지 않고 중간에 CloudFront를 거친다는 의미다.

- CloudFront가 이미 원하는 정보를 가진다면, 웹 서버에 접근할 필요가 없을 것이다.

 

1) 배포

- CloudFront 콘솔의 [배포]로 들어가서 [배포 생성]을 누른다.

 

 

2) Origin 세팅

- 원본 도메인에는 여러분이 운영하는 Domain Name을 기입하면 된다.

- 원본 도메인의 종류에 따라 설정 화면이 달라지므로 자세한 설명은 생략한다. 프로토콜, 포트, SSL 등에 관한 설정이 있다면 여러분의 프로젝트 성격에 맞게 진행하면 된다.

- 캐시 설정은 특별히 수정해야 할 캐시 정책이 없다면, 단순히 기본값을 사용해도 무방하다.

 

- 다시 한번 [배포 생성]을 누르면 CloudFront 배포가 생성된다.

 

- Distribution의 [일반] 메뉴에 있는 배포 도메인 이름은 클라이언트와 웹 서버의 매개체 역할을 하는 CloudFront의 도메인 주소이다. 여러분들은 클라이언트에게 이 주소로 요청을 보내도록 지시하면 된다.

 

 

3. Cache 설정

- 현재 상태로써의 이 CloudFront 서버는 웹 서버(origin)의 변경 사항을 바로 반영하지 못한다. 왜냐하면, CloudFront의 기본 Cache의 수명은 24시간으로 설정되어 있기 때문이다.

- 이제부터, 이러한 문제점을 해결하기 위해 캐시를 어떻게 설정해야 할지 알아보도록 하자.

 

1) 무효화

- 먼저, CloudFront의 기본 Cache를 무효화 해야 한다. [무효화] 메뉴에서 무효화를 생성하자.

- CloudFront의 기본 Cache를 무효화 하는 것이지, 웹 서버(origin)의 Cache를 무효화 하는 것이 아님에 유의하자.

 

- 객체 경로에는 Domain Name의 뒷부분에 해당하는 파일의 경로를 명시하면 되는데, 모든 파일을 뜻하는 와일드카드(*) 문법이 허용된다.

- 예를 들어, EC2 Apache의 index.php에서 Cache를 무효화하고 싶다면, "/index.php" 만 명시하면 된다.

 

 

2) Cache 커스터마이징 설정

(1) 웹 서버(origin)에 설정하기

- 아래 포스팅에서 설명했던 방법으로 웹 서버의 Cache에 적당한 수명을 부여하면 된다.

https://kimcoder.tistory.com/382

 

HTTP Cache 기초

1. HTTP Cache란? - Cache는 데이터나 값을 미리 복사해 놓는 임시 장소 또는 중간 버퍼다. - 애플리케이션상에서 이전에 사용했던 리소스들을 재사용함으로써 접근시간을 줄이고, 이에 따라 성능도

kimcoder.tistory.com

※ 이 방법을 사용하지 않고, 파일마다 Cache 설정을 달리 적용할 수도 있다.

예시

header("Cache-Control: max-age=10");

 

(2) 배포에서 설정하기

- Distribution의 [동작] 메뉴로 들어간다.

- 경로 패턴에 '*'로 표시되어 있는 것은 모든 요청에 적용되는 동작이라는 뜻이다. 이 동작을 선택하고 [편집]을 누른다.

 

- 조금 내려보면 "캐시 키 및 원본 요청" 이라는 설정이 있는데, Legacy cache settings의 하위 설정에 있는 객체 캐싱을 Customize로 체크하여 CloudFront Cache를 커스터마이징할 수 있다.

- 최소 TTL : 웹 서버에서 최소 TTL값 이하의 Cache 수명을 지정했다면, 최소 TTL값을 max-age로 설정

- 최대 TTL : 웹 서버에서 최대 TTL값 이상의 Cache 수명을 지정했다면, 최대 TTL값을 max-age로 설정

- 기본 TTL : 웹 서버에서 Cache 수명을 지정하지 않았다면, 기본 TTL값을 max-age로 설정

- 헤더, 쿼리 문자열, 쿠키 : 서로 다른 이들의 값은 서로 다른 캐시로 인식된다.

※ 예를 들어, 쿼리 문자열을 "모두"로 체크했다면, query string이 "?id=1"일 때와 "?id=2"일 때는 Domain Name은 같다고 하더라도 독립적으로 Caching이 이루어지는 것이다.

 

 

 

4. CDN 설정

- 배포의 일반 메뉴에서 설정의 [편집]을 누른다.

 

- 그 중에서 가격 분류 설정을 보면, 기본적으로 전 세계 각지에서 사용될 수 있도록 세팅되어 있다.

 

그러나 모든 엣지 로케이션에서 사용한다면 성능은 최고지만 모든 리전에 대한 요금이 부과된다.

즉, 경제적 조건에 따라 일부의 리전만 사용하는 방법도 고려할 필요가 있는 것이다.

 

 

 

5. 배포 삭제

- 배포를 비활성화해야 [삭제]가 활성화된다.

 

 

 

6. 요금

- CloudFront는 단순히 활성화 해두는 것 만으로는 요금이 부과되지 않고, 사용량에 따라 요금이 부과된다.

https://aws.amazon.com/ko/cloudfront/pricing/

 

CDN 요금 | 프리 티어 자격, 사용량에 따라 지불 | Amazon CloudFront

AWS 프리 티어의 일부로 Amazon CloudFront를 무료로 시작할 수 있습니다. Amazon CloudFront를 사용하면 매월 1TB의 데이터 전송, 10,000,000개의 HTTP 및 HTTPS 요청, 2,000,000개의 CloudFront 함수 호출을 받게 됩니다

aws.amazon.com

 

- 엣지 로케이션의 요청과 응답에 모두 요금이 부과된다.

- 1번은 S3 파일 업로드에 대한 요금, 2번은 리전 데이터를 인터넷으로 전송하는 요금, 3번은 리전 데이터를 오리진으로 전송하는 요금이다.

 

- 모든 HTTP 메서드에 대한 요청 요금 : 클라이언트가 엣지 로케이션으로 요청할 때의 요금이다.

 

 

+ 추가 개념

- AWS Certificate Manager : HTTPS를 사용하기 위한 인증서를 생성해주는 서비스

반응형

댓글