본문 바로가기

Infrastructure/Cloud Computing

[AWS] CloudFront

CDN이란?

CDN(Contents Delivery Network or Contents Distribution Network)은 클라이언트에게 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템을 말한다. 주요 ISP(Internet Services Provider)의 CDN 서버에 콘텐츠를 분산시키고 클라이언트의 요청이 들어오면 가장 가까운 서버로부터 콘텐츠를 전송받도록 하여 트래픽을 분산시킨다. 이러한 특성을 통해 클라이언트는 더 빠르게 자신의 요청에 대한 결과를 얻을 수 있다. 최근 많이 사용하는 Netflix의 본사는 미국에 있지만 우리는 원하는 영상을 선택하였을 때 바로 영상이 시청이 가능하다. 이러한 응답속도 또한 CDN을 통한 결과물이다.

그림1, CDN 사용 전

그림2, CDN 사용 후

CDN의 동작원리

우리가 Netflix 통해서 영상을 볼 때 영상 파일이 본사인 미국에만 있다면 과연 우리는 끊김없이 영상을 시청할 수 있을까? 당연히 그렇지 않다. Netflix또한 실제 영상을 가지고 있는 Original Server를 가지고 있으며 전세계에 데이터를 캐싱하고 있는 Edge Server를 두고 있다. 우리가 Netflix의 영상을 선택하면 한국 또는 한국에서 가까운 곳에 위치한 Edger Server에 있는 영상을 보게 되는 것이다. 일반적으로 클라이언트의 요청이 들어오면 Edge Server는 자신이 보유한 컨텐츠인지를 확인하고 보유하고 있지 않다면 Original Server에 요청하여 콘텐츠를 가져오고 가져온 컨텐츠를 캐싱하고 있다. 만약 동일한 요청이 들어오면 Original Server에 요청하지 않고 자신이 캐싱하고 있는 콘텐츠를 클라이언트에게 제공한다.

CDN 캐싱 방식의 종류

CDN은 크게 정적 캐싱(Static Caching)과 동적 캐싱(Dynamic Caching)으로 나눌 수 있다. 정적 캐싱의 경우 클라이언트의 요청이 들어오기 전에 운영자가 미리 Edge Server에 캐싱을 해두는 방식이다. 이러한 경우 Edge Server에 처음으로 요청하는 클라이언트도 빠르게 콘텐츠를 이용할 수 있다. 동적 캐싱의 경우 Edge Server가 미리 콘텐츠를 캐싱하고 있지 않다가 클라이언트의 요청이 오면 최초 Original Server에게 콘텐츠를 요청하고 이 때 응답받은 콘텐츠를 캐싱하고 이후 동일한 요청에 캐싱된 콘텐츠를 응답하는 방식이다.


CloudFront란?

Amazon CloudFront는 짧은 지연 시간과 빠른 전송 속도로 최종 클라이언트에게 콘텐츠 및 API 요청을 안전하게 전송하는 Amazon의 CDN 서비스다. CloudFront는 DDos(Distributed Denial of Services)와 공격을 막아주는 AWS Shield, Amazon S3, Amazon EC2, Elastic Load Balancing 등의 서비스를 최종 클라이언트와 가까운 위치에서 원활하게 사용될 수 있도록 해준다.

CloudFront의 특징

Amazon CloudFront는 작성일 기준 전세계 310개 이상의 POP(상호 접속 위치)을 보유하고 있다. 이렇게 많이 분포되어 있는 POP을 통하여 클라이언트에게 빠른 응답속도를 보장한다.

그림4

이러한 CloudFront에 연결 가능한 Origin Service는 EC2 인스턴스 뿐만 아니라 Amazon S3, Elastic Load Balancer도 연결이 가능하다.
우리가 S3에 올려둔 콘텐츠 또한 전세계에 퍼져있는 Edge Server에 캐싱해두고 빠르게 클라이언트에게 콘텐츠를 제공할 수도 있다.

그림5
  1. 사용자가 웹 사이트 또는 애플리케이션에 액세스하고 이미지 파일 및 HTML 파일과 같은 하나 이상의 파일을 요청한다.
  2. DNS가 요청을 최적으로 서비스할 수 있는 CloudFront POP(Edge Location)로 요청을 라우팅 한다. 이 위치는 일반적으로 지연 시간과 관련해 가장 가까운 CloudFront POP이다.
  3. POP에서 CloudFront는 해당 캐시에 요청된 파일이 있는지 확인한다. 파일이 캐시에 있으면 CloudFront는 파일을 사용자에게 반환한다. 파일이 없다면 아래의 작업을 수행한다.
    a. CloudFront는 배포의 사양과 요청을 비교하여 파일에 대한 요청을 해당하는 파일 형식으로 사용자의 Origin Server(예: 이미지 파일의 경우 Amazon S3 버킷 및 HTML 파일의 경우 HTTP 서버)에 전달한다.
    b. Origin Server는 파일을 다시 Edge Location으로 전송한다.
    c. Origin Server에서 첫 번째 바이트가 도착하면 CloudFront는 파일을 사용자에게 전달하기 시작한다. CloudFront는 다음에 다른 사용자가 해당 파일을 요청할 때 Edge Location의 캐시에 파일을 추가한다.

그림6

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

그림7

보안 서비스

CloudFront를 사용하면 웹 서비스 및 콘텐츠에 대한 다양한 보안 서비스를 제공한다.

  • Amazon Shield(Layer 3, 4 단계 보호)를 통한 DDoS 공격과 같은 일반적인 공격 유형(Syn/UDP Floods, Reflection Attacks 등)을 방어 및 자동 탐지해준다.

  • Amazon WAF(Layer 7 단계 보호)를 통해 웹 트래픽 모니터링 및 차단. CloudFront로부터 전달되는 HTTP, HTTPS 요청을 모니터링하여 트래픽에 대한 모니터링과 사용자 정의에 따른 규칙을 지정하여 웹 트래픽을 차단할 수 있는 방화벽 서비스를 제공한다.

  • Signed URL/Cookie를 통해 특정 인증을 통과한 사용자에게만 프라이빗 콘텐츠를 제공하도록 서비스를 구성할 수 있다.

  • HTTPS Redirection과 SSL 인증서 연동이 가능하다. Amazone에서 제공하는 자체 SSL 서비스인 Amazon ACM(AWS Certificate Manager)과 연동하여 SSL 인증서 구매 비용 없이 무료로 인증이 가능하다.

비용 최적화

만약 CloudFront가 아닌 다른 CDN서비스를 사용한다면 Amazone 서비스에서 외부 CDN으로 전달되는 콘텐츠에 대한 인터넷 비용을 지불해야한다.
추가로 외부 CDN에서 클라이언트에게 전달되는 인터넷 비용도 발생하게 된다.

그림8, 외부 CDN 사용

CloudFront를 사용하게 되면 Amazon 서비스에서 CloudFront로 전달되는 인터넷 비용을 절감할 수 있다. 외부 CDN서비스를 사용하면서 지불하는 사용료 또한 절약된다.

그림9, CloudFront 사용

이 글은 아마존 웹 서비스 AWS Discovery Book 도서와 AWS 공식문서를 참고하여 작성하였다.

이미지 출처:

'Infrastructure > Cloud Computing' 카테고리의 다른 글

[AWS] Lightsail  (0) 2022.02.19
[AWS] IAM  (0) 2022.02.18
[AWS] Auto Scaling  (0) 2022.02.17
[AWS] ELB  (0) 2022.02.17
[AWS] Route53  (0) 2022.02.16