4. • 대규모 / 고성능 Super Pop Architecture
• 단순 적용만으로도 글로벌 서비스 배포 성능 향상
Amazon CloudFront : Global Infra
30개국 / 69개 도시 / 180개 Edge (169개 Edge Location & 11개 Regional Edge Caches)
CloudFront를 활용한 서비스 성능 향상01 |
VPC
ALB
EC2 EC2
Amazon CloudFront
※ 2019년 6월 기준
5. ※ 2019년 6월 기준
• 대규모 / 고성능 Super Pop Architecture
• 단순 적용만으로도 글로벌 서비스 배포 성능 향상
Amazon CloudFront : Global Infra
30개국 / 69개 도시 / 180개 Edge (169개 Edge Location & 11개 Regional Edge Caches)
CloudFront를 활용한 서비스 성능 향상01 |
VPC
ALB
EC2 EC2
Amazon CloudFront
10ms
Amazon CloudFront
90ms
지리적으로 가까운~
CDN X
100ms
아주 먼 !!!
ORIGIN
10. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시
콘텐츠 특징에 따른 유형 분류 및 TTL(Time To Live)정의
Long-lived
*.css, *.js, *.jpg, *.png
소프트웨어 다운로드,
이미지 파일,
VOD Manifests
• 높은 TTL 사용
• 버전관리를 통해 갱신된
객체 전달
Static Contents Dynamic Contents
Always Updated
항상 최신화
캐싱이 불가능한 객체
• 빈번한 업데이트가
발생하는 리소스
• 요청마다 다르게 응답하는
콘텐츠
• 매우 낮거나 0 TTL 사용
Short-lived
Landing pages – index.jsp
뉴스, 날씨 등
Live Streaming manifests
• 낮은 TTL 사용,
주기적 업데이트 사용
• 원본 부하 최소화
11. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.1. Static Contents
콘텐츠 특징에 따른 유형 분류 및 TTL(Time To Live)정의
Long-lived
*.css, *.js, *.jpg, *.png
소프트웨어 다운로드,
이미지 파일,
VOD Manifests
• 높은 TTL 사용
• 버전관리를 통해 갱신된
객체 전달
Static Contents Dynamic Contents
Always Updated
항상 최신화
캐싱이 불가능한 객체
• 빈번한 업데이트가
발생하는 리소스
• 요청마다 다르게 응답하는
콘텐츠
• 매우 낮거나 0 TTL 사용
Short-lived
Landing pages – index.jsp
뉴스, 날씨 등
Live Streaming manifests
• 낮은 TTL 사용,
주기적 업데이트 사용
• 원본 부하 최소화
12. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.1. Static Contents
객체별 오리진 Cache-control header 예시
• Long-Lived, High TTL
Cache-control :
max-age=31536000; (브라우저)
s-maxage=86400 (엣지캐시)
• Short-Lived, Low TTL
Cache-control :
public;
max-age=60
Amazon
CloudFront
10ms
Cache
Hit
13. 성능 최적화 설정방안02 |
Login Pages
Index.html
Cache-Control:
no-cache;
max-age=30
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.1. Static Contents
Static Assets
*.css, *.js, images,
Software Downloads
Cache-Control:
Public;
Max-age=31536000
Static Contents Cache-Control Header 예시
Live Streaming
*.m3u8
Cache-Control:
public;
max-age=2
Media Fragment
*.ts
Cache-Control:
public;
max-age=31536000
14. 성능 최적화 설정방안02 |
Amazon
CloudFront
10ms
Cache
Hit
• Origin 캐시 헤더와 다른 CloudFront Edge Cache TTL 정의
CloudFront Min, Max, Default TTL 활용하여 Edge Cache TTL 재정의
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.1. Static Contents
15. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.2. Dynamic Contents
콘텐츠 특징에 따른 유형 분류 및 TTL(Time To Live)정의
Long-lived
*.css, *.js, *.jpg, *.png
소프트웨어 다운로드,
이미지 파일,
VOD Manifests
• 높은 TTL 사용
• 버전관리를 통해 갱신된
객체 전달
Static Contents Dynamic Contents
Always Updated
항상 최신화
캐싱이 불가능한 객체
• 빈번한 업데이트가
발생하는 리소스
• 요청마다 다르게 응답하는
콘텐츠
• 매우 낮거나 0 TTL 사용
Short-lived
Landing pages – index.jsp
뉴스, 날씨 등
Live Streaming manifests
• 낮은 TTL 사용,
주기적 업데이트 사용
• 원본 부하 최소화
16. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.2. Dynamic Contents
• 0초 TTL 사용으로 항상 새로운 객체 전달
Cache-control :
no-cache;
max-age=0;
private (브라우저캐시)
Cache-Control:
public; (엣지캐시)
max-age=0;
객체별 Cache-control header를 이용한 Dynamic Contents 전송
10ms
Origins
Cache
Miss
90ms
17. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.2. Dynamic Contents
객체별 Cache-control header를 이용한 Dynamic Contents 전송
• no-cache, max-age=0은 Edge에 캐시됨
두번째 요청이 만료된 객체의 변화 여부를 확인
변화가 없음을 확인했다면 캐싱된 객체 제공
10ms
Origins
Cache
Miss
90ms
18. 성능 최적화 설정방안02 |
1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.2. Dynamic Contents
객체별 Cache-control header를 이용한 Dynamic Contents 전송
• Edge에 캐시 하지 않으려면 (ALL-BYPASS)
Cache-Control : private, no-store
AWS CloudFront Behavior Setting (Custom Origin인 경우에만)
20. 성능 최적화 설정방안02 |
2. 네트워크 최적화 방안
AWS Global Backbone 기본 적용으로 전송성능 향상
Cac
he
Miss
• Region, Edge 간 전용회선
• 이중화된 100GbE 네트워크
• 모든 AWS 리전 간 트래픽은
Amazon Global Backbone
을 사용하도록 설계
• AWS Origin 사용하는 경우
Backbone 활용 극대화
21. 성능 최적화 설정방안02 |
2. 네트워크 최적화 방안
Origin Keep Alive Connection 을 통한 연결 설정 시간 단축
AWS Cloud
VPC
Amazon
EC2
Elastic Load
Balancing (ELB)
10ms
2번째 사용자
130ms
90ms
Amazon
CloudFront
Keep Alive
Connection400ms
1번째 사용자
Origins
기본 5초
~180초 상향
22. 성능 최적화 설정방안02 |
2. 네트워크 최적화 방안
Gzip 압축 기능으로 최대 80%의 속도, 비용 개선
• 1KB ~ 10MB 크기의 파일 압축
• 텍스트위주 js, css 등 효과적
• 웹 페이지 로딩 속도 개선
• 데이터 전송 비용 절감
Accept-
Encoding
:gzip
HTTP
Amazon
CloudFront Origin
Header 포워딩
24. AWS CloudFront 정책 예시03 |
• Ex) www.nam0jae.com 웹사이트 메인 페이지 CloudFront 배포시,
단일 AWS CloudFront Behavior에 콘텐츠 Path(유형)별 정책 적용
• 이 경우 Default(*) 는 Dynamic All By-PASS 로 설정.
Static Contents
Dynamic Content
25. Amazon CloudFront + Amazon Media Service
AWS CloudFront 정책 예시03 |
Amazon
CloudFront
LIVE
VOD
VOD Source
AWS Elemental
MediaConvert
Amazon
S3
Amazon
S3
Transcoding
Transcoded
Media Origin
Content
Delivery
Media
upload
Live Source
AWS Elemental
MediaLive
AWS Elemental
MediaStore
Ingest
Encode
Stream
Content
Delivery
29. 기타 활용 기능04 |
캐싱키 Forwarding 최소화
CloudFront 캐시 Key 가 되는 Request Header Whitelist 적용
• 캐싱키 최소화 지정으로 원본부하감소 및 캐시효율 향상
30. 기타 활용 기능04 |
캐싱키 Forwarding 최소화
• 캐싱키 최소화 지정으로 원본부하감소 및 캐시효율 향상
CloudFront 캐시 Key 가 되는 Cookies, Query String Whitelist 적용
31. 기타 활용 기능04 |
캐싱키 Forwarding 최소화
• GET /index.html HTTP/1.1
Host: www.nam0jae.com
• Connection: keep-alive
• User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/74.0.3729.169 Safari/537.36
• Accept: text/html,application/xhtml+xml,application/xml;
Referer: https://www.google.com/
• Accept-Encoding: gzip, deflate, br
• Accept-Language: ko-KR,ko;
Cookie: _ga=GA1.2.1510404968.1561333683; user-id_=158979;
CloudFront 캐시 Key 가 되는 Value만 Forwarding
32. 기타 활용 기능04 |
Custom Error Page 설정
• Edge 에러페이지 기본 300초 캐시. 에러페이지 빠른 복구시 사용
• 주로 라이브 서비스에는 기본 적용.
사용자 정의 에러페이지 설정 및 TTL 정의
33. 기타 활용 기능04 |
Origin 장애 조치 지원
• Origin Group 내에 2개이상 이상의 Origin 설정
• Primary Origin 장애 감지 시
• Secondary Origin 에서 서비스 제공
• 장애 조치 기준코드 복수 선택
500 Internal Server Error
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
404 Not Found
403 Forbidden
Origin Group
34. 복잡한 원본 환경
어려운 Cache-Control
쉽고 간편한 Amazon CloudFront 적용
어떻게?