CloudFront 최적화 방안
CloudFront에서 Cache 적용 순서
1. CloudFront > Popular Object에서 Cache 적용할 C.F를 선택 후 조회합니다.
2. 조회 내역 중 Request 횟수가 높은 Object 위주로 정렬합니다.
3. 개발부서와 협의해서 해당 Object 중 Cache가 가능한 Objec를 대상으로 각각 Behaviors 생성합니다.
정적 리소스와 동적 리소스가 혼재되어 있을 경우에는 Behaviors를 세분화하는 것이 좋습니다.
4. Behaviors는 낮은 Procedence에서 높은 Procedence 순으로 Cache을 진행합니다. ex) 0->10
※ Popular Object에서 Request가 많은 정적 요청부터 Behaviors를 설정하고 제일 마지막 순서에 모든 것을 통과할 수 있는 Behaviors를 설정하는 방법으로 구성
CloudFront 주요 설정 설명
1. Origins Protocol Policy
CloudFront에서 Origin 서버로 통신할 프로토콜을 설정합니다. 보통 Origin에 SSL 적용을 하기 때문에 주로 HTTPS Only를 선택합니다만 서버 구성 및 프로그램 설정에 따라 다를 수 있습니다.
- HTTP Only : CloudFront에서 Origine 서버로 접속 시 HTTP를 이용합니다.
- HTTPS Only : CloudFront에서 Origine 서버로 접속 시 HTTPS를 이용합니다.
- Match Viewer : CloudFront에서 Origine 서버로 접속 시 브라우저에서 선택한 프로토콜(HTTP or HTTPS)을 이용합니다.
2. Behaviors 주요 설정 설명
CloudFront에서는 Behaviors에 설정된 정보를 토대로 Cache를 하며 Behaviors가 맞는 정보가 없을 경우, Origin 서버에서 데이터를 가져옵니다.
1) Path Pattern
패턴으로 Cache 하여, 설정된 패턴으로 요청이 올 경우, 해당 패턴으로 Cache 정보를 확인합니다.
Popular Object의 request가 많은 주요 Object들을 확인 후 Cache가 가능한 Object를 패턴으로 구성할 수 있습니다.
/static/* 으로 설정할 경우, static 이하 경로들은 모두 Cache 하게 됩니다.
2) Viewer Protocol Policy
Client에서 CloudFront에 접속하는 방식을 나타냅니다.
- HTTP and HTTPS : Client에서 CloudFront 접속 시 HTTP와 HTTPS 접속 모두 허용합니다.
- Redirect HTTP to HTTPS : Client에서 CloudFront 접속 시 HTTP로 접속할 경우 HTTPS로 Redirect 합니다. CloudFront에
서 Origin으로 접속 시 HTTPS로만 통신할 경우 선택하면 됩니다.
- HTTPS Only : Client에서 CloudFront 접속 시 HTTPS 접속만 허용합니다.
3) Allowed HTTP Methods
Client에서 CloudFront로 접속 시 허용할 HTTP Method를 나타냅니다.
- [GET, HEAD], [GET, HEAD, OPTIONS] : 주로 조회와 같은 정적 콘텐츠 요청 시 선택합니다.
- [GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE] : 조회 외에 회원정보 수정, 저장과 같은 동적 콘첸츠 요청 시 선택합니다.
주로 정적 콘텐츠 대해 Cache를 하기 때문에
css, text, image 와 같은 정적 파일을 Cache 할 경우에는 [GET, HEAD], [GET, HEAD, OPTIONS] 을 선택합니다.
자바스크립트 같은 동적 리소스 요청 시에는 [GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE]을 선택합니다.
4) Cache Based on Selected Request Headers
Cache 할 기본 HTTP Header 방식을 선택합니다.
- None(Improves Caching) : HTTP Header를 전송하지 않는다는 것으로 Origin으로 전송 시 HTTP 방식일 경우에만 선택이 가능
합니다.
- Whitelist : CloudFront를 통해 Cache 또는 통신을 허용할 HTTP Header를 선택할 수 있습니다.
HTTP Header 중 Host의 경우 실제 요청 도메인 주소를 가지고 있기 때문에 정적 파일 Cache 시에는 기본으로 host를 선택니다.
그 외에 필요에 의해서 refer, origin 와 같은 Header를 추가할 수 있습니다.
. refer : Referer 로깅은 웹사이트 및 웹 서버가 홍보 또는 통계 목적으로 어디에서 방문했는지 식별하는데 사용됩니다. CORS 체크
시에도 사용
. origin : Referer와 비슷하지만 refer와 달리 전체 경로를 공개하지는 않습니다.
- All : HTTP Header 모두를 허용 또는 Cache 한다는 뜻으로 실제로 All을 선택하게 되면 Cache가 되지 않습니다. 주로 특정
Behaviors를 설정한 후 제일 마지막에 모든 트래픽을 허용하게 할 Behaviors에 All로 설정을 합니다.