Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

성능 최대화를 위한 CloudFront 설정 Best Practice

1,043 views

Published on

GS네오텍 Amazon CloudFront Day 2019
GS네오텍 - 남영재 SA

Cloud Expert Group - GS네오텍

Published in: Technology
  • Be the first to comment

성능 최대화를 위한 CloudFront 설정 Best Practice

  1. 1. Amazon CloudFront Day 2019 성능 최대화를 위한 CloudFront 설정 Best Practice GS네오텍과 Amazon이 함께하는
  2. 2. 1. CloudFront를 활용한 웹 서비스 성능 향상 2. 성능 최적화 설정방안 및 예시 3. 기타 기능 활용방안 CONTENTS
  3. 3. AWS CloudFront로 웹 서비스 성능 향상은 어떻게?
  4. 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. 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
  6. 6. CloudFront 성능 최적화는 어떻게?
  7. 7. 콘텐츠 유형별 배포정책 설정
  8. 8. 콘텐츠 유형별 배포정책 설정 네트워크 환경 최적화
  9. 9. 콘텐츠 유형별 배포정책 설정 네트워크 환경 최적화
  10. 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. 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. 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. 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. 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. 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. 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. 17. 성능 최적화 설정방안02 | 1. 콘텐츠 유형별 배포정책 설정 및 예시 > 1.2. Dynamic Contents 객체별 Cache-control header를 이용한 Dynamic Contents 전송 • no-cache, max-age=0은 Edge에 캐시됨  두번째 요청이 만료된 객체의 변화 여부를 확인  변화가 없음을 확인했다면 캐싱된 객체 제공 10ms Origins Cache Miss 90ms
  18. 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인 경우에만)
  19. 19. 콘텐츠 유형별 배포정책 설정 네트워크 환경 최적화
  20. 20. 성능 최적화 설정방안02 | 2. 네트워크 최적화 방안 AWS Global Backbone 기본 적용으로 전송성능 향상 Cac he Miss • Region, Edge 간 전용회선 • 이중화된 100GbE 네트워크 • 모든 AWS 리전 간 트래픽은 Amazon Global Backbone 을 사용하도록 설계 • AWS Origin 사용하는 경우 Backbone 활용 극대화
  21. 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. 22. 성능 최적화 설정방안02 | 2. 네트워크 최적화 방안 Gzip 압축 기능으로 최대 80%의 속도, 비용 개선 • 1KB ~ 10MB 크기의 파일 압축 • 텍스트위주 js, css 등 효과적 • 웹 페이지 로딩 속도 개선 • 데이터 전송 비용 절감 Accept- Encoding :gzip HTTP Amazon CloudFront Origin Header 포워딩
  23. 23. Amazon CloudFront 정책 예시
  24. 24. AWS CloudFront 정책 예시03 | • Ex) www.nam0jae.com 웹사이트 메인 페이지 CloudFront 배포시, 단일 AWS CloudFront Behavior에 콘텐츠 Path(유형)별 정책 적용 • 이 경우 Default(*) 는 Dynamic All By-PASS 로 설정. Static Contents Dynamic Content
  25. 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
  26. 26. AWS CloudFront 정책 예시03 | • Cache Behavior (Min, Max, Default TTL)  <0순위> *master.m3u8 (TTL : 86,400 sec)  <1순위> *.m3u8 (TTL : 2 sec, Segment length 2 초 이하인 경우)  <2순위> *.ts (TTL : 86,400 sec) (출력 이름에 $dt$ 사용)  <3순위> Default (*) (TTL : default) Media Contents (LIVE)
  27. 27. AWS CloudFront 정책 예시03 | • Cache Behavior (Min, Max, Default TTL)  <0순위> *.m3u8 (TTL : 86,400 sec)  <1순위> *.ts (TTL : 86,400 sec // 21600 sec ~ 604800 sec)  <2순위> Default (*) (TTL : default) Media Contents (VOD)
  28. 28. 추가! 팁
  29. 29. 기타 활용 기능04 | 캐싱키 Forwarding 최소화 CloudFront 캐시 Key 가 되는 Request Header Whitelist 적용 • 캐싱키 최소화 지정으로 원본부하감소 및 캐시효율 향상
  30. 30. 기타 활용 기능04 | 캐싱키 Forwarding 최소화 • 캐싱키 최소화 지정으로 원본부하감소 및 캐시효율 향상 CloudFront 캐시 Key 가 되는 Cookies, Query String Whitelist 적용
  31. 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. 32. 기타 활용 기능04 | Custom Error Page 설정 • Edge 에러페이지 기본 300초 캐시. 에러페이지 빠른 복구시 사용 • 주로 라이브 서비스에는 기본 적용. 사용자 정의 에러페이지 설정 및 TTL 정의
  33. 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. 34. 복잡한 원본 환경 어려운 Cache-Control 쉽고 간편한 Amazon CloudFront 적용 어떻게?
  35. 35. 감사합니다

×