사용자의 위치, 콘텐츠 원본 서버, 에지 서버위치를 기준으로 사용자의 가장 가까운 위치의 서버에서 콘텐츠를 제공하여 대기시간을 줄이는 것을 목표로 하는 분산노드로 구성된 네트워크
나의 쇼핑몰이 한국에 있고 카페 24의 서버에 호스팅 되어있다고 가정
호스팅된 공간에 내 홈페이지 이미지가 있고 미국에 거주하는 이용자가 사이트를 접속했을 때 서버는 미국이용자의 요청을 받아서 이미지를 한국에 있는 서버에서 호출을 하고 이미지를 보여주게 됩니다.
하지만 물리적인 거리가 있어서 이미지 로딩에 지연이 발생합니다.
이를 보완하기 위해 CDN은 서버 자체를 여러곳에 두고 이용자가 요청했을 때 제인 근접한 서버에서 처리함으로써 지연되는 시간을 줄여줍니다. 여러곳에 캐시서버를 분산해서 한개의 서버가 다운되더라도 다른 서버에서 이미지를 제공받을 수 있습니다.
➕ CDN 노드
- 콘텐츠를 캐싱할 수 있는 캐시 기능을 갖추고 있으며 최종 사용자와 가까운 위치에서 사용자에게 콘텐츠를 제공할 수 있음
- CDN노드는 CDN제공업체에 의해 여러 지역에 구축되고 여러 ISP네트워크에 걸쳐 배포될 수 있음
위에서 예시를 든것과 같이 CDN을 사용하면 서버에서 멀리 떨어져 있기 때문에 속도가 느려지는 사람들의 웹페이지를 더 빨리 로드할 수 있습니다. 하지만 이외에도 CDN을 사용해야하는 장점들이 있습니다.
1. 서버의 과부하를 막아준다.
서버의 과부하가 생기면 처리속도가 느려져서 사용자도 답답해하고 심하면 서버가 다운되서 웹사이트를 이용조차 못하는 상황이 생길 수 있습니다. 그렇다고 많은 요청을 처리하기 위해서 성능이 좋은 서버를 이용한다면 성능에 비례해서 비용이 상승할 것입니다.
저렴한 서버를 이용하고 트래픽에 따라 서버를 복제해주는 Autoscale을 사용해도 트래픽이 발생하는 만큼 비용을 지불해주어야하고 하나의 서버로 모든 요청을 처리하면 대역폭을 넓혀야해서 또 비용이 발생합니다.
CDN에서는 엣지(Edge)를 이용해서 과부하를 막아줍니다.
엣지(Edge)란
업체가 CDN서비스를 운영하기 위해서 세계 각지에 설치한 각 서버를 의미합니다. 컨텐츠를 전송하는데 특화된 서버로 내 서버에서 제공하고자 하는 컨텐츠들을 각국의 edge에 캐싱해서 요청이 일어난 지역의 응답을 edge가 대신하도록 합니다.
따라서 내 서버로 몰릴 트래픽이 각 edge로 분산되어서 내 서버의 과부하를 막을 수 있습니다.
2. 물리적 거리로 인한 속도저하를 막아준다.
edge가 세계각지에 설치되어 있기 때문에 요청한 지역에서 가까운 edge가 내 서버 대신 저장해둔 컨텐츠를 응답해 속도 저하를 극복합니다.
3. 보안상의 이점이 있다.
1) 보안등급 상승
내 서버의 인증서 보안등급이 낮아도 CDN은 최신의 검증을 받은 인증방식들을 사용하기때문에 CDN을 이용하는 것만으로도 보안등급이 올라갑니다.
2) DDos에 대한 방어책
➕ DDos?
서버에 과부하가 걸리도록 의도적으로 트래픽 폭격을 가하는 공격으로 방어하기 까다로움
CDN을 이용하면 최전선의 edge가 DDos공격의 타겟이 되므로 업체들을 노하우로 자신들의 edge를 보호합니다.
비정상적인 요청을 분별하고 집중된 요청을 여러 edge로 분산시켜 트래픽을 낮춥니다. 과도한 트래픽으로 인해서 상태가 좋지 않은 edge들은 걸러내고 가까운 edge가 대신 요청을 처리하도록 해서 안정성을 높여줍니다.
특정 국가나 지역만을 타깃으로 하는 웹 서비스를 운영하는 경우에 CDN을 사용한다면 오히려 불필요한 연결지점이 늘어나 웹사이트의 성능저하를 불러옵니다.
CDN을 위한 Cache Server들이 많이 보유되지 않거나 성능이 안정적이지 않다면 최악의 경우 SPOF문제가 발생할 수 있습니다.
➕ SPOF (단일 장애점)
한 군데가 중단되면 전체 시스템이 중단되어버리는 현상
⭐️ Static Caching
사용자의 요청이 없어도 Origin Server에 있는 콘텐츠를 운영자가 미리 Cache Server에 복사해두어서 사용자는 Cache Server에 접속해서 여기서 콘텐츠를 전달받는 방식
⭐️ Dynamic Caching
최초에는 Cache Server에는 콘텐츠가 없으나 사용자가 콘텐츠를 요청하면 Cache Server에 콘텐츠가 있는지 확인하고 없으면 Origin Server에서 받아서 사용자에게 전달하고 그 이후에 동일한 요청이 오면 Cache Server에서 제공하는 방식으로 일정시간이 지나면 Cache Server에서 삭제되었을 수도 있음
📑 References