본문 바로가기
CS

CDN이란 무엇일까요?

by 너츠너츠 2023. 8. 15.

CDN (Content Delivery Network: 콘텐츠 전송 네트워크)란 무엇일까?

AWS 공식 문서에 의하면 다음과 같습니다.

콘텐츠 전송 네트워크 (cdn)는 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속조를 높이는 상호 연결된 서버 네트워크입니다. 사용자가 웹 사이트를 방문할 때 해당 웹 사이트 서버의 데이터는 사용자의 컴퓨터에 도달하기 위해 인터넷을 통해 이동해야 합니다. 사용자는 해당 서버에서 멀리 떨어져 있는 경우 도영상 또는 웹 사이트 이미지와 같은 대용량 파일을 로드하는 데 시간이 오래 걸립니다. 대신 웹 사이트 컨텐츠는 지리적으로 사용자와 가까운 CDN 서버에 저장되며 훨씬 빨리 도달합니다.

즉, CDN은 최종 사용자와 가까운 곳에  콘텐츠를 캐시하는 지리적으로 분산된 서버 그룹입니다. CDN의 주 목적은 대기 시간을 줄이거나 네트워크 설계로 인해 발생하는 통신 지연을 줄이는 것입니다. 인터넷의 글로벌하고 복잡한 특정으로 인해 웹 사이트와 사용자 간의 통신 트래픽은 아주 먼 물리적 거리를 이동해야 합니다. CDN은 클라이언트와 웹 사이트 서버 간에 중간 서버를 두어 효율성을 높입니다. 이러한 CDN 서버는 클라이언트- 서버 통신의 일부를 관리합니다. 웹 서버에 대한 웹 트래픽을 줄이고, 대역폭 소비를 줄이며, 애플리케이션의 사용자 환경을 개선합니다.

 

CDN이 가지는 이점

1) 페이지 로드 시간 단축

지리점 이점과 CDN 서비스에서 제공하는 캐싱 파일로 웹 사이트의 로딩 시간이 단축됩니다. 페이지 로드 시간이 너무 느리면 웹 사이트 트래픽이 감소할 수 있는데 CDN은 클라이언트와 웹 사이트 서버 간에 중간 서버로서 활용되어 효율성을 높입니다.

 

2) 대역폭 비용 절감

들어오는 모든 웹 사이트 요청은 네트워크 대역폭을 사용하기 때문에 대역폭 비용이 상당히 높습니다. 캐싱 및 기타 최적화를 위해 CDN은 Origin 서버가 제공해야 하는 데이터의 양을 줄여 웹 사이트 소유자의 호스팅 비용을 절감할 수 있습니다.

 

3) 콘텐츠 가용성 제고

한 번에 너무 많은 방문자가 방문하거나 네트워크 하드웨어 오류가 발생하면 웹 사이트가 중단될 수 있습니다. CDN 서비스는 더 많은 웹 트래픽을 처리하고 웹 서버의 로드를 줄일 수 있습니다. 또한 하나 이상의 CDN 서버가 오프라인으로 전환되면 다른 운영 서버가 해당 서버를 대체하여 서비스가 중단되지 않도록 할 수 있습니다

 

4) 웹 사이트 보안 강화

분산 서비스 공격(DDOS) 공격은 대량의 가짜 트래픽을 웹 사이트로 전송하여 애플리케이션이 작동 중지되도록 만들려고 시도합니다. CDN은 여러 중간 서버 간에 로드를 분산하여 Origin 서버에 미치는 영향을 줄임으로써 이러한 트래픽 급증을 처리할 수 있습니다.

 

5) 지리적 이점

Origin 서버와 떨어져 있어도 클라이언트가 웹 사이트에 접속했을 때 들어온 콘텐츠 요청은 가까운 CDN 서버에서 캐싱된 데이터를 전송하게 되어 빠른 전송이 가능합니다. 웹 페이지 파일과 이미지, 비디오 파일 등의 콘텐츠를 사용자의 물리적 위치 근처 프록시 서버에 캐시하기 때문에 빠른 속도를 내는 것이 특징입니다.

CDN을 통해 전송할 수 있는 인터넷 콘텐츠

정적 콘텐츠

사용자 간에 변경되지 않는 웹 사이트 데이터입니다. 웹 사이트, 헤더 이미지, 로고 및 글꼴 스타일은 모든 사용자에게 동일하게 유지되며 기업이 자주 변경하지 않습니다. 정적 데이터는 수정, 처리 또는 생성할 필요가 없으며 CDN에 저장하는데 데 이상적입니다.

 

동적 콘텐츠

소셜 미디어 뉴스 피드, 날씨 보고서, 로그인 상태 및 채팅 메시지와 같은 동적 콘텐츠는 웹 사이트 사용자마다 다릅니다. 이 데이터는 사용자의 위치, 로그인 시간 또는 사용자 기본 설정에 따라 변경되며 웹 사이트는 모든 사용자와 모든 사용자 상호 작용에 대한 데이터를 생성해야 합니다.

 

CDN은 어떻게 작동할까?

CDN은 여러 지리적 위치에 접속 지점(POP) 또는 CDN 엣지 서버 그룹을 설정하는 방식으로 작동합니다. 지리적으로 분산된 이 네트워크는 캐싱, 동적 가속 및 엣지 로직 계산의 원리를 기반으로 작동합니다.

※ POP (Point Of Presence): 전 세계에 분산되어 있는 데이터 센터의 지점

 

캐싱

캐싱은 더 빠른 데이터 엑세스를 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스입니다. CDN 에서의 캐싱은 네트워크의 여러 서버에 정적 웹 사이트 콘텐츠를 저장하는 프로세스를 의미합니다.

 

1. 지리적으로 멀리 떨어진 웹 사이트 방문자는 사이트에서 정적 웹 콘텐츠를 처음 요청합니다.

2. 요청이 웹 애플리케이션 서버 또는 Origin 서버에 도달합니다. Origin 서버는 원격 방문자에게 응답을 보냅니다. 또한 해당 방문자와 지리적으로 가장 가까운 CDN POP에 응답 복사본을 보냅니다.

3. CDN POP 서버는 복사본을 캐싱된 파일로 저장합니다.

4. 다음에 해당 방문자 또는 해당 위치에 있는 다른 방문자가 동일한 요청을 하면, 오리진 서버가 아닌 캐싱 서버가 응답을 보냅니다.

 

동적 가속

동적 가속은 웹 애플리케이션과 클라이언트 사이의 중개 CDN 서버로 인해 발생하는 동적 웹 콘텐츠 요청에 대한 서버 응답 시간을 단축하는 것입니다. 사용자 요청이 있을 때마다 콘텐츠가 변경될 수 있기 때문에 동적 웹 콘텐츠에서는 캐싱이 제대로 작동하지 않습니다. CDN 서버는 모든 동적 요청에 대해 Origin 서버와 다시 연결해야 하지만 자신과 오리진 서버 간의 연결을 최적화하여 프로세스를 가속화합니다.

 

클라이언트가 인터넷을 통해 웹 서버로 직접 동적 요청을 보내는 경우 네트워크 지연 시간으로 인해 요청이 손실되거나 지연될 수 있습니다. 보안 검증을 위해 연결을 열고 닫는 데에도 시간이 걸릴 수 있습니다. 반면, 근처의 CDN 서버가 요청을 오리진 서버로 전달할 경우, 신뢰할 수 있는 지속적인 연결이 이미 설정되었을 것입니다. 예를 들어 다음과 같은 기능을 통해 이들 간의 연결을 더욱 최적화할 수 있습니다.

  • 지능형 라우팅 알고리즘
  • 오리진에 대한 지릭적 접근성
  • 클라이언트 요청을 처리할 수 있으므로 클라이언트 요청을 줄일 수 있습니다.

엣지 로직 계산

클라이언트와 서버 간의 통신을 단수화하는 논리적 계산을 수행하도록 CDN 엣지 서버를 프로그래밍할 수 있습니다. 예를 들어 이 서버는 다음을 수행할 수 있습니다.

  • 사용자 요청을 검사하고 캐싱 동작을 수정합니다.
  • 잘못된 사용자 요청을 확인하고 처리합니다.
  • 응답하기 전에 콘텐츠를 수정하거나 최적화합니다.

웹 서버와 네트워크 엣지 간에 애플리케이션 로직을 배포하면 개발자가 오리진 서버의 컴퓨팅 요구 사항을 오프로드하고 웹 사이트 성능을 높이는 데 도움이 됩니다.

 

CDN이 사용되는 대표적인 예시들

고속 콘텐츠 전송

정적 및 동적 인터넷 콘텐츠 전송을 결합하여 CDN을 사용하여 고객에게 글로벌 고성능 전체 사이트 환경을 제공할 수 있습니다.

 

실시간 스트리밍

CDN은 고품질의 풍부한 미디어 파일을 안정적이고 비용 효율적으로 제공할 수 있도록 지원합니다. 비디오 및 오디오를 스트리밍하는 기업은 CDN을 사용하여 대역폭 비용 절감, 확장성 향상, 제공 시간 단축이라는 세 가지 과제를 해결합니다.

 

다중 사용자 확장

CDN은 다수의 동시 사용자를 지원하는 데 도움이 됩니다. 웹 사이트 리소스는 한 번에 제한된 수의 클라이언트 연결만 관리할 수 있습니다. CDN은 애플리케이션 서버에서 로드 일부를 가져옴으로써 이 수를 빠르게 확장할 수 있습니다. 

 

참고

https://www.uknew.co/cdn%EC%9D%B4%EB%9E%80-cdn-%EC%82%AC%EC%9A%A9-%EC%9D%B4%EC%9C%A0%EC%99%80-%EC%9D%B4%EC%A0%90-5%EA%B0%80%EC%A7%80/

https://aws.amazon.com/ko/what-is/cdn/

https://www.cloudflare.com/ko-kr/learning/cdn/cdn-benefits/

https://learn.microsoft.com/ko-kr/azure/architecture/best-practices/cdn

반응형

'CS' 카테고리의 다른 글

[CS] 운영체제 - 메모리 관리  (0) 2023.10.02
DNS란 무엇일까?  (0) 2023.08.19
함수형 프로그래밍이란?  (0) 2023.08.05
[알고리즘] Dynamic Programming (동적 계획법)  (0) 2023.02.12
[디자인 패턴] 싱글톤(Singleton) 패턴  (0) 2023.02.08

댓글