본문 바로가기

Dot Computer Science/Cloud

[Cloud] CDN에 대해 알아보자 (AWS CloudFront vs Cloudflare 비교)

    서버 성능 개선하는 방법

    IT 서비스를 추상적으로 그려보면 ComputingDelivery로 이루어져 있다고 볼 수 있다. 즉, 앱 혹은 웹 서비스는 연산과 전달(요청, 응답)을 반복하는 작업이라는 뜻이다. 웹 서비스 성능을 개선하기 위해서는 이 두 가지 작업을 최대한 빠르고 효율적으로 처리해줘야 한다.

     

    서버와 클라이언트 DB를 간략하게 추상화해서 그려보면 클라이언트 요청으로부터 응답까지 걸리는 시간을 응답시간이라 할 수 있다. 응답 시간을 다시 서버를 기준으로 나눠보면 대기 시간, 처리 시간으로 분류할 수 있다. 그리고 이러한 요청을 초당 몇 개 처리하는 지에 대한 단위를 TPS라고 한다.

     

    서버 성능을 개선하기 위해서 가장 중요한 지표 2가지는 응답 시간처리량이다. 

     

    응답 시간은 클라이언트가 어떤 요청을 해서 그 요청에 대한 처리 결과를 받을 때 까지의 시간을 의미한다. 응답 시간은 서버에서 요청을 처리하는 시간 + 클라이언트와 서버 간의 데이터 전달 시간(대기 시간)으로 구성되어 있다.

     

    처리량은 흔히 TPS(Transaction Per Second; 초당 처리할 수 있는 요청 개수)라는 수치로 많이 표현하는 데, 이 수가 높을 수록 많은 요청을 처리한다고 보면 된다.

     

    응답 시간 = 대기 시간 + 처리 시간이므로,  성능을 올리기 위해서 처리 시간 혹은 대기 시간을 줄여줘야 한다.

    • 처리 시간을 줄이기 위해서는 쿼리 튜닝, 캐시, 하드웨어 업그레이드 등의 방법이 있다.
    • 대기 시간을 줄이기 위해서는 응답 크기 줄이기, 트래픽 분리하기, 대역폭 늘리기 등이 있다.

     

    여기서 CDN은 트래픽을 분리해서 대기 시간을 줄여준다.

     

    CDN

    세계는 지금 넷플릭스, 왓챠를 비롯해 유튜브, 틱톡 등 끊임없이 쏟아지는 콘텐츠 홍수 속에 살고 있다. OTT 서비스는 전례 없는 호황기를 맞았고, AI, 사물인터넷, 자율 주행 등 대용량의 데이터를 주고받는 신기술이 하루가 멀다고 등장하고 있다.

     

    이렇게 폭발적으로 증가한 데이터를 지연 없이 처리하기 위해서는 데이터를 분산해서 전달하는 기술이 필수적이다. 이에 지리적으로 먼 거리에 떨어져 있는 사용자에게 지연 없이 콘텐츠를 분산해 전달할 수 있는 CDN 서비스가 등장하였다.

     

     

    CDN 이란?

    CDN(Contents Delivery Network)은 웹 페이지, 이미지, 비디오 등의 정적 콘텐츠를 유저의 물리적 위치와 가까운 프록시 서버에 캐싱하여 전송 속도를 높여준다. 이들은 지리적으로 분산된 여러 개의 서버를 가지고 있다. 전 세계 데이터센터에 파일 복사본을 임시로 저장한다. 따라서 유저는 가까운 서버를 통해 콘텐츠가 로딩될 때까지 기다릴 필요 없이 영상 감상, 소프트웨어 다운로드, SNS 포스팅 등 다양한 작업을 원활하게 진행할 수 있다. 

     

    쉽게 ATM을 생각해도 된다. 여러 곳에 ATM을 설치하면 은행에서 긴 줄을 서서 기다릴 필요없이 가까운 곳에 있는 ATM을 사용하여 유저는 빠르고 효율적으로 현금을 찾을 수 있다.

     

    또한 CDN은 보안을 강화해 DDos 공격과 같은 보안 문제와 악의적 공격자를 차단하는 기능도 제공해준다.

     

    CDN 활용 사례

    온라인 동영상 스트리밍 서비스를 제공하는 넷플릭스(Netflix)는 전 세계의 사용자들에게 안정적인 서비스를 제공하기 위해 2011년에 자체 CDN을 구축했다. 넷플릭스의 서비스 범위가 전 세계에 걸쳐 있고, 구독자의 절반 이상이 미국 외의 지역에 분포하고 있어 콘텐츠를 안정적이고 빠르게 세계 각지로 전달하기 위해서는 CDN 기술이 필수적이기 때문이다.

     

    이와 더불어 세계 최대 숙박 공유 서비스인 에어비앤비(Airbnb) 또한 CDN 기술을 활용해 전 세계 고객에게 언제 어디서나 숙박 시설과 각종 액티비티를 예약할 수 있는 서비스 환경을 구축했다.

     

    국내에서는 NC소프트나 카카오게임즈 같은 온라인 게임 기업이 CDN을 활용, 북미나 유럽과 같이 지리적으로 먼 지역의 사용자에게 안정적이고 빠른 게임 플레이 환경을 제공하고 있다.

     

    AWS CloudFront vs CloudFlare

    두 서비스의 비교는 아래 블로그 글을 번역하였습니다. 

     

    Cloudflare vs. Amazon CloudFront: Which CDN is right for you? | TechTarget

    Follow this Cloudflare vs. Amazon CloudFront comparison of CDN services. Evaluate functionality, setup processes and use cases.

    www.techtarget.com

     

    대표적은 CDN 클라우드 서비스로는 Cloudflare와 AWS에서 제공하는 CloudFront가 있다. 이 둘은 CDN 기능을 제공하지만 근본적으로 다른 방식으로 작동한다.

     

    Cloudflare 및 AWS CloudFront는 데이터 사본을 배포하기 위해 대규모 데이터 센터 네트워크를 제공하고 있다. Cloudflare는 150대가 위치해 있는 반면 AWS CloudFront는 140대가 위치해 있다.

     

    데이터 전달

    Cloudflare는 역방향 프록시(Reverse Proxy) 아키텍처를 사용하여 데이터를 관리한다. 클라우드 공급자의 기본 이름 서버를 사용하는 대신 웹과 앱은 Cloudflare의 이름 서버를 사용하도록 설정해줘야 한다. 데이터 요청은 트래픽 라우팅을 방법을 결정하는 Cloudflare 서버를 통과하게 된다.

     

    AWS CloudFront에서는 이름 서버 설정에 대한 설정이 따로 필요없다. 기본 이름 서버를 사용하면 된다. 대신 배포하려는 데이터 복사본을 설정해줘야 한다. 데이터 배포에 Special URL이 있으며 관리자는 이 URL을 사용하여 CloudFront CDN으로 요청을 보낼 수 있다. 이 툴은 데이터 요청의 지리적 출처에 따라 CloudFront URL 요청에 응답해야 하는 네트워크 내의 서버를 결정한다.

     

    URL을 통한 접근성 

    Cloudflare에는 Special URL이 필요하지 않지만 Amazon CloudFront 콘텐츠는 구성된 URL을 통해서만 액세스할 수 있다. 이는 Cloudflare가 CDN을 통해 "example.com"과 같은 사이트에 대한 요청을 라우팅할 수 있음을 의미한다. Amazon CloudFront를 사용하면 CDN을 통해 라우팅되도록 요청이 "alongurlfullofrandomcharacters.example.com"과 같은 항목으로 대신 전달된다. 

     

    이러한 Special URL 구성으로 인해 Amazon CloudFront는 Cloudflare보다 설정이 더 복잡하다. Cloudflare는 이름 서버를 올바른 위치로 지정하는 것 외에는 거의 필요하지 않다.

     

    분산 서비스 거부(DDoS) 보호

    Cloudflare는 기본 CDN 기능뿐만 아니라 Magic Transit 기능을 통한 Anit-DDoS 보호와 같은 추가 기능을 제공한다. Amazon CloudFront는 DDoS 보호 서비스로 설계되지 않았다. 대신 AWS Shield를 사용해야 한다.

     

    표로 정리해보면 다음과 같다. Cloudflare 프리 티어는 대역폭에 제한이 없다. 어떻게 무제한으로 제공할 수 있냐는 질문에 대한 Cloudflare CEO의 답변을 보면 여러 이유를 나열해놨지만 경쟁력을 높이고 홍보하기 위함이 커보인다.

     

      Cloudflare AWS CloudFront
    네트워크 아키텍처 리버스 프록시 전통적인 CDN
    기본 설정 방법 Nameserver Special URLs
    서버 개수 대략 150대 (21년 기준) 대략 140대 (21년 기준)
    주요 기능 CDN과 Ddos 방어 CDN
    마켓 포지셔닝 Standalone 플랫폼 AWS 클라우드 서비스 중 일부
    freetier 무제한 대역폭 비용 무료 매달 1TB 데이터 전송, 천만건 요청, 2백만건 함수 호출 무료 (참고)

     

    무엇을 선택할까?

    AWS CloudFront

    일반적으로 CloudFront는 다음과 같은 경우에 사용하면 좋다.

    • 이미 다른 AWS 서비스를 사용 중이다.
    • CDN으로 일부 데이터만 처리하면 된다.
    • 그리고 사용자가 "ugly" CloudFront URL을 볼 수 없도록 설정할 수 있다.

     

    Cloudflare

    Cloudflare는 다음과 같은 경우에 사용하면 좋다.

    • 간단한 설정이 좋다.
    • CDN으로 거의 모든 콘텐츠를 관리한다.
    • CDN 이상의 추가 네트워킹 및 보안 기능이 필요하다.

     


    참고

    CDN 기술의 이해

    https://library.gabia.com/contents/infrahosting/8985/