-
[CS] CDN(Contents Delivery Network)CS 2023. 4. 17. 00:03728x90
CDN의 정의
CDN은 컨텐츠 전달 네트워크의 약자로 말 그대로, 컨텐츠를 전달하는 네트워크를 구성하는 것이다.
보통 웹사이트를 로딩할 때는 웹 서버에 HTTP 요청을 하여 리소스를 가져오지만 웹 서버가 아니라 현재 사용자가 접속한 위치에서 가장 가까운 서버에 리소스를 캐싱해놓고 보다 빠르게 가져오는 기법이다.
물론, CDN 네트워크를 구축하기 위해선 해당되는 지역의 ISP(인터넷 제공업체, Internet Service Provider), 네트워크 사업자, 이동통신 사업자에게 서버의 호스팅 비용을 지불해야 한다.
이렇게 네트워크를 구축하게 되면 정적 리소스를 더욱 빠른 속도로 서비스 할 수 있게 되는 것이다.
캐싱
캐싱은 더 빠른 데이터 접근을 위해 동일한 데이터의 여러 복사본을 저장하는 프로세스이다.
CDN 기술에서 캐싱은 네트워크의 여러 서버에 정적 웹 사이트 콘텐츠를 저장하는 프로세스를 의미한다. CDN에서 캐싱은 다음과 같이 동작한다.
- 지리적으로 멀리 떨어진 웹 사이트 방문자가 사이트에 정적 웹 콘텐츠를 요청한다.
- 요청이 웹 애플리케이션 서버 또는 Origin 서버에 도달한다. Origin 서버는 원격 방문자에게 응답을 보낸다. 또한 해당 방문자와 지리적으로 가장 가까운 CDN POP에 응답 복사본을 보낸다.
- CDN POP 서버는 복사본을 캐싱된 파일로 저장한다.
- 다음에 해당 방문자 또는 해당 위치에 있는 다른 방문자가 동일한 요청을 하면, Origin 서버가 아닌 캐싱 서버가 응답을 보낸다.
동적 가속
동적 가속은 웹 애플리케이션과 클라이언트 사이의 중개 CDN 서버로 인해 발생하는 동적 웹 콘텐츠 요청에 대한 서버 응답 시간을 단축하는 것이다.
사용자 요청이 있을 때마다 콘텐츠가 변경될 수 있기 때문에 동적 웹 콘텐츠에서는 캐싱이 제대로 동작하지 않는다. CDN 서버는 모든 동적 요청에 대해 Origin 서버와 다시 연결해야 하지만 자신과 Origin서버 간의 연결을 최적화하여 프로세스를 가속화한다.
장점
- 페이지 로드 시간이 단축된다.
- 가까운 CDN 서버에서 콘텐츠를 전송해주기 때문에 페이지 로드 시간을 단축 할 수 있다.
- 리소스를 캐싱해놓기 때문에 로딩속도가 빨라진다.
- 1개의 웹서버에서만 리소스를 가져오지 않기 때문에 서버의 부하가 줄어든다.
- 보통 1개의 도메인이 10개의 병렬연결을 허용하는데 CDN을 사용하면 병렬연결이 늘어난다.
- 대역폭 비용절감
- CDN은 캐싱 및 기타 최적화를 통해 Origin 서버가 제공해야하는 데이터의 양을 줄여 웹 사이트 소유자의 호스팅 비용을 절감할 수 있다.
- 콘텐츠 가용성 제공
- CDN 서비스는 대용량 트래픽을 처리하고 웹 서버의 부하를 줄일 수 있다.
- 웹 사이트 보안 강화
- DDoS 공격과 같은 가짜 트래픽을 여러 중간 서버 간에 분산하여 Origin 서버에 미치는 영향을 줄일 수 있다.
단점
- 서버를 구축하는 비용 때문에 돈이 더 많이 든다.
- 사용자가 해당되는 CDN을 막아놓으면 리소스 로딩이 막힌다.
- 배포과정이 다소 복잡해질 수 있다.
- 보통 CDN 서비스회사는 각 나라마다의 서버들을 구축해 놓지만, 자신의 나라에 없어서 해외 CDN을 사용하는 경우 더 느려질 수 있다.
참고
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/network/cdn.md
728x90'CS' 카테고리의 다른 글
URI에 네이버를 입력하면 발생하는 일 (0) 2024.06.15 암호화 방식(대칭키, 공개키) (0) 2024.05.27 [CS] Blocking, Non-Blocking, Sync, Async (0) 2023.01.11 [CS] 가상메모리 (1) 2023.01.06 [CS] MVC (0) 2022.12.28