[AWS] CDN, Amazon CloudFront

CDN(Contents Delivery Network)

콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템을 말한다. CDN을 통해 온라인 상의 대용량 콘텐츠를 저렴한 비용으로 빠르게 전송하도록 한다.

주요 ISP(Internet Services Provider)의 CDN 서버에 콘텐츠를 분산시키고 유저의 네트워크 경로 상 가장 가까운 곳이 서버로부터 콘텐츠를 전송받도록 하여 트래픽이 특정 서버에 집중되지 않고 각 지역 서버로 분산되도록 하는 기술이다.

  • CDN 사용 사례 : 전세계로 모바일 게임과 같은 서비스를 제공하기 위해서는 서버 인프라와 함께 게임을 위한 프로그램 및 게이머를 대상으로 데이터를 제공 가능한 환경이 필요하다. 100MB – 1GB 이상 많은 양의 파일과 데이터를 전세계로 제공하기 위해서는 CDN 서비스가 필수 사항이다.

CDN 동작 원리

PC나 모바일 기기의 웹 브라우저에서 URL을 이용하여 웹 사이트에 접속을 시도하게 되면, 사용자에게 웹 페이지를 제공하기 위해 필요한 콘텐츠(HTML, 이미지, CSS, JS 등)를 서버에 요청한다.

대부분의 CDN 서비스는 콘텐츠에 대한 요청이 발생하게 되면 사용자(End-User)와 가장 가까운 위치에 배치된 CDN 서버로 사용자를 접속시키게 되며, CDN 서버는 요청된 파일의 캐싱된(사전 저장된) 콘텐츠를 사용자에게 전달하게 된다.

서버가 파일을 찾는데 실패했거나 콘텐츠가 너무 오래된 경우에는 오리진(원본) 서버에서 파일을 조회하여 사용자에게 전달하며, 이후 동일한 콘텐츠를 요청받게 되면 캐싱된 데이터에서 콘텐츠를 전송하므로 보다 빠르게 전달할 수 있다.

CDN 캐싱 방식의 종류

CDN 캐싱 방식의 종류는 크게 Static Caching과 Dynamic Caching으로 나눌 수 있다.

Static Caching

사용자의 요청이 없어도 Origin Server에 있는 Contents를 운영자가 미리 Cache Services에 복사함으로써 사용자가 Cache 서버에 접속하여 Contents를 요청하면 Cache 서버가 콘텐츠를 전달하는 방식이다. 국산 CDN 업체에서 주로 제공하는 서비스 Pooq 동영상 서비스 및 넥슨, 엔씨소프트 게임 다운로드 등이다.

Dynamic Caching

최초에는 Cache 서버에 콘텐츠가 없으나, 사용자가 콘텐츠를 요청하면 Cache 서버에 콘텐츠가 있는지 여부를 확인한다. 없으면 오리진(Origin) 서버에서 다운로드 받아 사용자에게 전달하고, 이후 동일 요청을 받게 되면 캐싱된 콘텐츠를 사용자에게 제공하게 된다. 콘텐츠는 일정시간(TTL)이 지나면 캐싱된 파일이 삭제될 수 있지만, 필요한 경우 다시 오리진 서버에서 콘텐츠를 확인 후 계속 가지고 있을 수 있다. Akamai, Amazon, CDNetwors 등과 같은 글로벌 CDN 업체에서 이 방식을 지원한다.

Amazon CloudFront

짧은 지연 시간과 빠른 전송 속도로 최종 사용자에게 데이터, 동영상, 애플리케이션 및 API를 안전하게 전송하는 글로벌 콘텐츠 전송 네트워크(CDN) 서비스이다.

CloudFront는 AWS와 통합되며, 여기에서 AWS에는 AWS 글로벌 인프라와 직접 연결된 물리적 위치뿐만 아니라 DDoS와 같은 외부 공격을 완화하는 AWS Shield, 애플리케이션의 오리진인 Amazon S3, 애플리케이션의 오리진으로의 Amazon EC2 또는 Elastic Load Balancing, 최종 사용자와 가까운 위치에서 사용자 정의 코드를 실행하도록 지원하는 Lambda@Edge 등의 서비스와 원활하게 연동되는 소프트웨어가 포함된다.

API, AWS Management Console, AWS CloudFormation, CLI 및 SDK와 같이 이미 익숙한 AWS 도구를 사용하여 몇 분 만에 CloudFront를 시작할 수 있다. CloudFront는 선결제 금액이나 장기 약정 없이 사용량에 따라 지불하는 간편한 요금 모델을 제공하며, CloudFront에 대한 지원은 기존 AWS Support 구독에 포함되어 있다.

구분내용
서비스명Amazon CloudFront
설명고도로 프로그래밍 가능하고 안전한 콘텐츠 전송 네트워크(CDN)
주요 특징– 정적/동적 콘텐츠 가속 서비스
– HTTP/HTTPS 서비스, Custom SSL 지원
– 커스텀 오류 응답
– 쿠키/헤더 오리진 서버 전달
– 다양한 통계 보고서
– 콘텐츠 보안 : Signed URL, Signed Cookie
– API 호출 감사 : CloudTrail 연계
– 업로드 가속
프리티어 (Free Tier)데이터 송신 50GB와 HTTP/S 요청 2백만 건
Amazon CloudFront

CloudFront 특징

1. Amazon CloudFront Global Edge 서비스

Amazon CloudFront는 글로벌 사용자를 대상으로 보다 적은 시간으로 콘텐츠를 제공하기 위해 42개국 84개 도시에서 216개 CDN PoP의 글로벌 네트워크를 보유하고 있다.

전세계 모든 글로벌 CDN 서비스 밴더(Vender) 중 가장 빠르게 성장하고 있는 글로벌 CDN 서비스 제공자이다.

2. Amazon CloudFront 연결 가능한 오리진(Origins) 서비스

Amazon CloudFront는 오리진으로 여러 AWS 리소스와 Custom 시스템 사용을 지원한다. 예를 들어, Amazon S3 버킷이나 Amazon EC2 Instance, Elastic Load Balancer 또는 사용자 지정 오리진(다른 위치에서 서비스 중인 HTTP 웹 서버 등)을 지정할 수 있다.

3. CloudFront 콘텐츠 제공 방식

  1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일 같은 하나 이상 객체를 요청한다.
  2. DNS가 요청을 최적으로 서비스할 수 있는 CloudFront 엣지 로케이션으로 요청을 라우팅한다. 이 위치는 일반적으로 지연 시간과 관련해 가장 가까운 CloudFront 엣지 로케이션이며, 요청을 해당 위치로 라우팅한다.
  3. 엣지 로케이션에서 CloudFront는 해당 캐시에 요청된 파일이 있는지 확인한다. 파일이 캐시에 있으면 CloudFront는 파일을 사용자에게 반환한다. 파일이 캐시에 없으면 다음을 수행한다.
  • CloudFront는 배포의 사양과 요청을 비교하고 파일에 대한 요청을 해당 파일 형식에 적절한 오리진 서버(ex. 이미지 파일 Amazon S3 버킷, HTML 파일은 HTTP 서버)로 전달한다.
  • 오리진 서버는 파일을 다시 CloudFront 엣지 로케이션으로 보낸다.
  • 오리진에서 첫 번째 바이트가 도착하면 CloudFront가 파일을 사용자에게 전달하기 시작한다. CloudFront는 다른 사용자가 해당 파일을 요청할 때 엣지 로케이션의 캐시에 파일을 추가한다.

CloudFront 주요 기능

1. 정적 콘텐츠에 대한 캐싱 서비스와 비디오 스트리밍 서비스

CloudFront는 전세계를 대상으로 온디맨드 미디어 스트리밍 서비스를 제공할 수 있다. 온디맨드 스트리밍 서비스를 위해 CloudFront를 사용하면 MPEG, DASH, Apple HLS, Microsoft Smooth Streaming, CMAF 등과 같은 일반적인 형식의 동영상 스트리밍 서비스를 제공할 수 있으며, Amazon Elemental Media Cenvert와 같은 서비스를 사용하여 라이브 스트리밍 서비스를 제공할 수 있다.

정적인 콘텐츠(이미지, CSS, HTML, JavaScript 등)에 대해 전송 속도를 높일 수 있도록 Amazon 글로벌 백본 네트워크와 Edge 서버를 활용하여 해당 웹 사이트에 방문하는 사용자에게 빠르고 안전한 환경을 제공할 수 있다.

Amazon S3 버킷을 사용하여 정적 콘텐츠 서비스를 제공할 수 있으며, OAI(Origin Access ID)를 이용하여 콘텐츠에 대한 접근을 손쉽게 제한할 수 있다.

2. 동적 콘텐츠에 대한 캐싱 서비스

CloudFront는 웹 사이트의 전체 서비스에 해당하는 이미지, 동영상 등의 정적 파일 외에도 동적인 파일에 대해서도 Caching 할 수 있다. 이중 빈번하게 갱신되거나 동적인 업데이트가 필요한 페이지나 콘텐츠에 대해서도 TTL을 설정하여 캐싱을 지원한다.

3. 다양한 보안 서비스

웹 사이트를 오픈하게 되면 해외의 불특정 다수 국가에서 사이트에 접속을 시도하거나 초당 몇 백 번 접속 시도를 통한 DDoS 공격을 받는다는 말을 자주 듣는다. 이런 경우 CloudFront를 사용하는 것만으로 DDoS 공격을 차단할 수 있다. CloudFront는 웹 서비스 및 콘텐츠에 대한 다양한 보안 서비스를 제공한다.

  • Amazon Shield(Layer 3/4 단계 보호)를 통한 DDoS 공격 차단(무료)
  • Amazon CloudFront를 사용하면 기본으로 Amazon Shield를 사용하게 되며, 외부로부터 일반적인 공격 유형(Syn/UDP Floods, Reflection Attacks 등)에 대한 방어 및 자동 탐지/대응 지원
  • Amazon WAF(Layer 7 단계 보호)를 통해 웹 트래픽 모니터링 및 차단(유료)
  • AWS WAF는 CloudFront로부터 전달되는 HTTP/HTTPS 요청을 모니터링하여 웹 트래픽에 대해 모니터링과 사용자 정의에 따른 규칙을 지정하여 웹 트래픽을 차단할 수 있는 웹 애플리케이션 방화벽 서비스 제공
  • Signed URL/Cookie를 통한 콘텐츠 보호
  • 인터넷을 통해 제공되는 콘텐츠에 대해 유료 사용자나, 특정 인증을 통과한 사용자에게만 콘텐트를 제공하기 위해 Amazon Signed URL/Cookie를 통해 프라이빗 콘텐츠에 대해서만 안전하게 접근할 수 있도록 서비스 구성
  • HTTPS Redirection과 SSL 인증서 연동 서비스
  • CloudFront는 콘텐츠에 대한 보안을 위해 SSL을 통한 HTTPS 환경을 구성할 수 있으며, Customer의 SSL 인증서를 등록하거나, Amazon에서 제공하는 자체 SSL 서비스인 Amazon ACM(AWS Certificate Manager)과 연동하여 추가적인 SSL 인증서의 구매 비용 없이 무료로 제공하므로 ELB에서도 사용 가능하며, 등록/업데이트 갱신은 모두 AWS 내부에서 무료 제공

4. 비용 최적화를 통한 비용 절감

S3 Bucket, EC2 Instance, Elastic Load Balancer와 같은 서비스를 사용하게 되면 사용자에게 데이터를 전송하는 데 필요한 Network Out 비용을 지불하게 된다. 다만 Amazon CloudFront를 사용하게 되면 기존 S3 Bucket, EC2 Instance, Elatic Load Balancer와 같은 서비스에서 사용자에게 데이터를 전송할 때 지불되는 네트워크 Out에 대한 데이터 전송 비용을 지불하지 않으며, CloudFront 사용료에 대한 부분만 지불하게 된다.

이렇게 오리진이 Amazon 내에 있는 경우 네트워크 Out에 대한 비용을 지불하지 않게 되며, 기존 네트워크 Out보다 저렴하게 제공된다. 이렇게 CloudFront를 사용함으로써 네트워크 사용료에 대한 최적화를 통해 비용 절감이 가능하다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다