CDN (Contents Delivery Network)와 CloudFront

ISP(Internet Service Provider)의 CDN 서버에 콘테츠를 분산시키고
유저의 네트워크에서 가장 가까운 곳의 서버로부터 콘텐츠를 전송받도록 하여
트래픽이 특정 서버에 지중되지 않고 분산되도록 합니다.

  • Contents Delivery Network
  • Content Distribution Network

 

동작원리

  • User가 URL를 통해 웹 사이트에 접속
  • User와 가장 가까운 위치에 배치된 CDN 서버로 연결
  • CDN 서버는 요청된 파일의 캐싱된(사전 저장된) 콘텐츠를 사용자에게 전달
    • 콘텐츠가 오래되거나 찾는 파일이 없는 경우
    • origin(원본) 서버에 파일을 조회하여 User에게 전달

CDN 캐싱 방식의 종류

Static Caching

미리 콘텐츠를 저장해 둔다.

사용자의 요청이 없어도 Origin Server에 있는 콘텐츠를 미리 Cache Services에 복사해 둔다.

 

Dynamic Caching

필요할 떄 콘텐츠를 요청하고 저장한다.

최초에는 Cache 서버에 콘텐츠가 없으나, 사용자가 요청하면 Cache 서버에 콘텐츠가 있는지 확인하고 없으면 origin 서버에서 다운로드하여 사용자에게 전달하면서 Cache 서버에도 저장을 합니다.

일정 시간(TTL)이 지나면 캐싱된 파일이 삭제될 수 있고 필요하면 다시 origin에서 가져올 수 있습니다.

 

Amazon CloudFront

프로그래밍 가능하고 안전한 콘텐츠 전송 네트워크(CDN)이라고 합니다.

  • DDos(Distributed Denial of Service)를 방어하는 AWS Shield 기능을 사용
  • Amazon S3, EC2, ELB를 origin 으로 사용
  • 사용자와 가까운 위치에서 사용자 정의 코드를 실행 할 수 있도록 Lambda@Edge 지원

특징

  • 정적/동적 콘텐츠 가속
  • HTTP/HTTPS 서비스, Custom SSL
  • 커스텀 오류 응답
  • 쿠키/헤더 오리진 서버 전달
  • 다양한 통계 보고서
  • 콘텐츠 보안: Signed URL, Signed Cookie
  • API 호출 감사: CloudTrail 연계
  • 업로드 가속

CloudFront 콘텐츠 제공

  1. 사용자가 웹 사이트에 접속
  2. DNS가 지연 시간과 관련해 가장 가까운 CloudFront 엣지 로케이션에 라우팅을 한다.
  3. CloudFront는 캐시에 요청된 파일이 있는지 확인, 캐시가 있다면 사용자에게 반환한다.
  4. 캐시가 없으면 origin 서버에 파일요청을 한다.
  5. origin 서버는 CloudFront로 파일을 보낸다.
  6. CloudFront는 받은 파일을 사용자에게 전달하고 다른 사용자가 같은 파일을 요청하면 엣지 로케이션의 캐시에 파일을 추가한다.

정적 콘텐츠에 대한 캐싱과 비디오 스트리밍을 제공

  • 일반적인 형식의 동영상 스트리밍 서비스를 제공
    또는 Amazon Elemental Media Convert 같은 서비스를 사용하여 라이브 스트리밍 서비스를 제공할 수 있습니다.
  • Amazon S3 버킷을 사용하여 정적 콘텐츠 서비스를 제공, OAI(Origin Access ID)를 이용하여 콘텐츠 접근제한을 할 수 있습니다.

동적 콘텐츠에 대한 캐싱

  • 빈번하게 갱신되거나 동적인 업데이트가 필요한 페이지나 콘텐츠에 대해서 TTL을 설정하여 캐싱을 지원합니다.

보안서비스

  • AWS Shield를 통해 L3,4 단계의 DDoS 공격차단(무료)
  • Amazon WAF를 통해 L7 단계 웹 트래픽 모니터링 및 차단(유료)
    • Singed URL/Cookie를 통해 콘텐츠 보호 및 접근제한
    • HTTPS Redirection과 SSL 인증서 연동

비용최적화

  • 사용자에게 데이터를 전송하는데 필요한 Network Out 비용 발생(S3, EC2, ELB 서비스 사용 시)
  • CloudFront를 사용하면 Network Out 비용이 없고 CloudFront 사용료에 대한 비용만 지불