티스토리 뷰

CDN(Content Delivery Network, 콘텐츠 전송 네트워크)

웹 캐시 서버들을 전 세계에 분산 배치하고 원본 서버의 콘텐츠들을 웹 캐시 서버에서 캐시해 사용자들에게 서비스함으로써 사용자 기기나 브라우저가 웹 콘텐츠를 보다 빠르게 다운로드 할 수 있도록 하는 기술

 

CDN 이점

  • 성능 및 안정성 보장
    • CDN 서비스 업체들은 일반 호스팅 업체에 비해 많은 수의 PoP(Point of Presence, 상호 접속 위치, 데이터를 캐시함)를 보유하고 있어 인터넷 병목 구간을 피할 수 있어 더 빠르게 콘텐츠 전송이 가능하며 몇 개의 PoP에 장애가 나도 다른 PoP에서 서비스 할 수 있기때문에 끊김 없는 서비스 제공이 가능하다.
  • 아키텍처 단순화
    • CDN을 사용하면 아키텍처를 특별히 변경하지 않아도 된다.
  • 높은 비즈니스 투자 수익
    • CDN은 사용한 트래픽만큼 비용을 지불하고 원가가 저렴하기 때문에 투자대비 효율성이 높다. 또한 하드웨어나 네트워크 유지 보수를 위한 별도의 비용이 필요하지 않고 언제든 사용을 중지할 수 있어 융통성 있게 시스템을 운영 가능하다.

 

CDN 특징

  • 동적 콘텐츠 가속
    • 동적 콘텐츠 가속의 핵심은 네트워크 혼잡 구간을 어떻게 회피하느냐인데 CDN제공자들은 더 많은 ISP 업체와 파트너십을 강화하고 전체 네트워크 구간을 모니터링해 고유 알고리즘으로 최적의 경로를 선택하는 등 다양한 방식으로 문제를 해결하고 있다.
  • 프런트엔드 최적화
    • CDN제공자들은 프런트엔트 최적화 모범 사례들을 에지 서버상에 자동화하여, 원본 서버에서 최적화를 구현하지 않아도 손쉽게 웹 사이트 로딩 속도를 향상시킬 수 있는 방안을 제공한다.
  • 동영상 또는 라이브 스트리밍 서비스
    • CDN제공자들은 HTTP 프로토콜 기반에 스트리밍 영상을 전송할 수 있는 HLS, HDS, MPEG-DASH 같은 기술 프로토콜을 지원한다. 또한 플레이어와 연동하여 사용자의 네트워크 품질에 따라 영상의 비트 전송율을 조정하여 끊김없는 영상을 지원한다.
  • 클라우드 보안
    • 사용자와 인터넷의 접점에 위치한 CDN의 에지 서버들이 DDoS나 악의적인 개별 공격을 선제 차단한다. 대형 CDN 업체들은 보안 분야까지 사업을 확대하여 DDoS 방어서비스, 웹 애플리케이션 방화벽(WAF) 서비스 등을 제공한다.

대표적 CDN 업체들: Akamai Technologies, CDNetworks, Amazon CloudFront, Limelight Networks, Microsoft Azure, Cloudflare

 

CDN의 원리

CDN 서비스 아키텍처

CDN 서비스는 콘텐츠를 제공하는 원본 서버와 실제 인터넷을 통해 콘텐츠를 사용하려는 최종 사용자들 사이에서 리버스 프록시 서버 형태로 존재한다. 사용자와 가장 가까운 곳에 위치한 서버들을 에지서버라고 부르며 CDN 업체들은 전 세계 또는 특정 지역에 여러 개의 PoP를 만들어 에지 노드들을 구성한다.

CDN 동작 방법

사용자가 주소창에 URL을 입력하면 브라우저는 가장 먼저 DNS로부터 웹 사이트의 IP 주소를 조회한다. 그럼 웹 사이트를 호스팅하는 조직의 DNS가 서버 도메인 명에 대한 IP주소를 반환한다. 그 후 브라우저는 그 IP주소로 웹 콘텐츠를 요청한다. 만약 사용자가 웹 사이트 호스팅 서버와 지리적으로 먼 곳에 있다면 응담이 올 때까지의 시간(RTT)이 오래 걸린다.

반면 CDN을 사용하면 브라우저가 웹 사이트 IP주소를 조회할때 DNS서버는 자사 서버의 IP 대신 CDN 서비스 제공자의 도메인명을 반환한다. 이 경우 사용자 브라우저는 CDN 서비스 제공자의 DNS 서버에 해당 도메인명에 대한 IP를 다시 요청하고 CDN 업체의 DNS서버는 사용자와 가장 가까이 위치한 에지서버의 IP를 최종 반환한다. 에지 서버의 IP를 받은 브라우저는 에지 서버로 웹 콘텐츠를 요청한다. 에지 서버는 캐시된 콘텐츠를 사용자에게 빠르게 반환하거나 캐시되어 있지 않은 경우 원본 서버에서 콘텐츠를 받아와서 캐시한 후 브라우저에 응답한다.

 

다중 캐시 전략

캐시 축출

CDN의 캐시 서버는 제한된 용량으로 많은 양의 콘텐츠를 캐시해야 하므로 용량이 일정 한계치에 도달하면 캐시된 콘텐츠에 우선순위를 부여해 낮은 순위의 콘텐츠부터 삭제하는데 이를 캐시축출(cache eviction)이라 한다.

우선순위 1. 일정 기간 캐시 적중이 없었던 콘텐츠, 2. 캐시 적중률이 미미한 콘텐츠, 3. 더 오래된 콘텐츠

롱테일 콘텐츠

생성 초기 많이 조회되다가 짧은 시간이 흐른 후 조회 수가 확 줄고 이후 거의 조회되지 않는 콘텐츠를 롱테일 콘텐츠라 한다. 이러한 콘텐츠들은 우선순위가 점점 낮아짐에 따라 캐시에서 축출된다. 이러한 현상은 웹 사이트 내 콘텐츠 종류가 많을수록 그리고 사용자층이 여러 국가에 넓게 퍼져 있을수록 심화된다.

캐시 서버 간 캐시 콘텐츠 공유

사용자가 많을수록 캐시 적중률이 높아지는 것은 사실이지만 콘텐츠들은 여러 지역에 설치되어 있는 에지 서버들에 캐시되어 있으므로 하나의 에지 서버를 기준으로 실제 사용자 방문에 의한 캐시 적중률은 매우 낮다.

에지 서버 간 캐시 공유는 ICP와 같은 특별한 프로토콜을 사용해 빠르게 이루어져야 하기 때문에 동일한 백본 네트워크에 연결된 서버 사이에서만 이루어진다. 일반적으로 동일한 PoP 서버들은 캐시된 콘텐츠를 서로 공유할 수 있다.

다중 계층 캐시

다중 계층 캐시란 에지 서버들과 원본 서버 사이에 추가 캐시 서버 계층(부모 계층)을 두어 같은 콘텐츠를 여러 번 캐시하는 방식이다.

부모 계층은 원본 서버에 가까이 존재해야하며 부모 계층의 캐시 서버수가 자식 계층의 서버 수보다 훨씬 적어야 한다.

효과로는 캐시 적중률 향상, 과도한 트래픽으로부터 원본 서버 보호, 사용자 요청에 대한 응답 속도 향상이 있다.

 

CDN이 대신 제공하는 기본 기능

HTTP 압축

대부분 브라우저는 gzip 압축 방식을 지원하며 HTML, CSS, Javascript, SVG 등의 텍스트 파일을 압축하여 약 75% 정도 크기를 줄인다. 압축을 적용하면 네트워크 대역폭을 절약할 수 있고 사용자가 콘텐츠를 다운로드하는 속도도 빨라진다.

CDN이 제공하는 압축은 에지 서버와 브라우저 네트워크 구간만 적용되니 호스팅 서버와 에지 서버 사이의 네트워크 구간을 가속화하려면 서버 측에서 압축 설정을 해야 한다.

 

브라우저 캐시

사용자가 웹 사이트를 재방문할 때 브라우저는 그간 콘텐츠가 변경되었는지 검사하고 변경된 파일만 다운로드한다. 이러한 기능으로 사용자와 서버 사이 네트워크 대역 사용량을 줄일 수 있고 사용자는 원하는 웹 페이지를 빠르게 로딩할 수 있다.

 

HTML, CSS, Javascript 최소화

소스 코드에 불필요하게 존재하는 공백과 주석문들만 제거해도 전체 전송 사이즈를 줄일 수 있기 때문에 배포 시점에 주석, 공백을 제거하도록 자동화를 하는 것이 좋다. CDN 업체에서는 에지 서버에서 응답 콘텐츠의 공백, 주석 등을 제거해 캐시하는 기능을 제공한다.

 

DNS 프리페치와 프리커넥트

<lint rel="dns-prefetch" href="//example.com">

<link>태그를 사용해 앞으로 사용될 도메인의 IP정보를 미리 쿼리할 수 있다.

Link: <http://example.com>; rel=dns-prefetch

HTTP 응답에 link헤더를 추가해 도메인에 IP를 미리 조회할 수 있다.

Link: <http://example.com>; rel=preconnect

TCP 연결까지 미리 생성할 수 있다.

 

 

 

'프로그래밍 > 데이터통신과 네트워크' 카테고리의 다른 글

네트워크 관련 기초 용어  (0) 2018.04.19
댓글
최근에 올라온 글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30