콘텐츠를 좀더 빠르고 효율적으로 제공하기 위해 등장한 서비스
CDN의 특징
Content Delivery Network는 콘텐츠를 좀더 빠르고 효율적으로 제공하기 위해 등장했다
세계 곳곳에 분포하는 데이터 센터에 콘텐츠를 저장해 둔다
이후 콘텐츠 요청을 받으면 지리적으로 가장 가까운 데이터 센터에서 콘텐츠를 제공해주는 방식이다
데이터 센터가 지도와 같이 위치하고 있다고 가정하자
원본 서버는 원본을 저장하고 있고, S3와 같이 CDN에 속하지 않은 외부의 서버다
이때 한국에서 콘텐츠 요청을 받는다고 가정하고 어떤 흐름을 통해 콘텐츠를 제공하는지 하기와 같다
CDN 네트워크는 요청한 곳과 가장 가까운 데이터 센터가 해당 콘텐츠를 저장하고 있는지 확인한다
지도와 같은 경우라면 중국에 위치한 데이터 센터가 확인하게 된다
만약 해당 데이터 센터가 전달해야할 콘텐츠를 가지고 있지 않다면, 다른 데이터센터가 해당 콘텐츠를 가지고 있는지 확인해야 한다
이때 콘텐츠가 없는 데이터센터를 제외한 나머지중 지리적으로 가장 가까운 데이터 센터를 선택한다
모든 데이터센터가 콘텐츠를 가지고 있지 않다면 원본이 저장된 원본 서버에서 콘텐츠를 제공해야 한다
이런 경우에는 콘텐츠를 데이터 센터에 저장하게 된다
마찬가지로 요청한곳과 가장 가까운 데이터 센터에서 콘텐츠를 저장한다
하지만 이번에는 지리적으로 가장 가까운 데이터 센터가 해당 콘텐츠를 가지고 있다
해당 데이터센터는 즉시 요청받은 콘텐츠를 제공해 준다
콘텐츠를 요청한 곳은 미국에 위치한 원본 서버에서 콘텐츠를 받아오지 않고 상대적으로 가까운 중국에서 콘텐츠를 제공받게 된다
내용이 거의 변하지 않는 콘텐츠
1. HTML 파일, 동영상과 같은 콘텐츠
2. 변화가 없는 콘텐츠
3. 개인화되지 않은 대중적인 콘텐츠
(CDN의 캐시 서버에 저장하기 적합)
CDN이 다룰수 있는 콘텐츠의 종류는 정적 콘텐츠와 동적 콘텐츠로 구분할 수 있다
정적 콘텐츠는 동영상, HTML 파일과 같이 변화가 거의 없는 콘텐츠와 더불어
뉴스 기사등 개인화 되지 않은 대중적인 콘텐츠에 해당한다
이런 콘텐츠들은 변화가 거의 없기때문에 CDN의 캐시 센터에 저장하는것이 적합하다
접속할때 마다 내용이 바뀌거나 사용자 마다 다른 내용을 보여주는 콘텐츠
하지만 동적콘텐츠는 정적콘텐츠와 성격이 전혀 다르다
동적콘텐츠는 위치, IP 주소등 접근할때 마다 내용이 달라지는 콘텐츠다
또한 카드번호, 전화번호등 개인화된 정보 관련 콘텐츠가 해당된다
CDN에 저장되어 있는 콘텐츠들은 내용이 바뀔때마다 CDN 서버들에도 변경내용이 전파되어야 한다
그렇기 때문에 내용이 자주 바뀌는 동적 콘텐츠 자체는 CDN 네트워크가 지원하기 어렵다
따라서 동적 컨텐츠 자체를 저장하기 보다는 공통적인 HTML 파일부분을 저장한다
1. DDoS 공격에 대해 어느정도의 대응이 가능하다
2. 로딩속도 감소로 인한 사용자 경험 향상
3. 트래픽 분산으로 인한 트래픽 관련 비용 절감
한곳의 서버가 DDoS 공격을 받아 사용불가하다면, 지리적으로 가까운 다른 서버에서 콘텐츠 제공
첫째. DDoS 공격에 대응이 가능하다
분산 서비스 거부 공격(Distributed Denial of Service attack, DDoS) 는 서버의 수용량보다 훨씬 많은 요청을 보내 서버를 사용 불가능하게 만든다
만약 CDN의 데이터 센터중 하나가 이런 이유로 사용이 불가능 해졌다고 했다고 가정해 보자
하나의 데이터 센터를 사용하지 못한다고 하더라도 다른 데이터 센터는 여전히 동작하고 있으므로, 다른 데이터센터에서 콘텐츠를 제공받으면 그만이다
게다가 데이터센터들은 거대한 컴퓨팅 능력을 가지고 있기때문에 DDoS 공격으로 서비스 장애가 발생하기 어렵다
둘째. 사용자 경험의 향상이다
만약 어떠한 사이트가 로딩이 완료되기까지 10초정도 소요된다고 한다면 어떤 행동을 취하게 될지 생각해 보자
기다리는 사람도 분명 있겠지만, 대부분은 해당 사이트를 떠나는것이 일반적이다
그러면 이제 사이트를 이용하는 유저의 수가 적다는 것은 어떤 의미를 가지는지 생각해 보자
사용자의 수가 적다는 것은 그만큼 잠재고객의 수가 적다는 의미로 해석될수도 있다
잠재 고객이 적어진다는 의미는 그만큼 수익을 내기 힘들어진다는 뜻과 일치하다
따라서 수익과 연관되는 사용자 경험을 높이는것이 중요하다
모든 요청을 하나의 서버에서 담당한다면, 고성능의 서버 및 고성능의 인터넷 수용력이 필요하다
고성능은 엄청난 비용이 발생한다
셋째. 비용의 절감
세계 곳곳에서 여러 서비스 요청이 발생하는 가운데, 모든 요청을 한곳에서 처리한다고 가정해 보자
그렇다면 과연 어떤것이 필요하게 될까?
바로 매우 높은 성능의 서버와 이를 감당할수 있는 인터넷 회선이다
그러나 두가지만 필요로 하지 않는다
높은 성능을 내야 한다면 그만큼 소모되는 전력도 많다
또한 인터넷 회선도 엄청난 요청을 감당해야 하기 때문에 높은 비용을 지불 해야 한다
이때 비용은 절대 선형으로 증가하지 않는다
즉 한곳에서 모든 요청을 처리한다면 엄청난 비용이 발생하게 됩된다
서버를 세계 곳곳으로 분배
낮은 성능의 인터넷, 서버로 감당가능
사용자 경험 향상 및 비용 절감 효과
하지만 서버들을 세계 곳곳에 분산시킨다면,
지역에 맞게 서버의 성능과 인터넷의 성능을 낮춘다 해도 무리 없이 서비스를 제공할 수 있다
또한 외국에 있는 사용자들의 로딩 시간을 단축시킬 수 있다
따라서 사용자 경험 향상 및 비용 절감의 효과를 볼 수 있다
최대한 낮은 응답시간에 집중
1. 세계 곳곳에 최대한 많은 캐시 서버를 제공
2. 낮은 수용량의 데이터 센터 및 캐시 서버
3. 매우 높은 관리비용 및 사용자 요금
4. 연결 수요가 적은 지역 대상으로 적절한 방식
CDN이 서버를 분산하는 방식은 크게 Scattered방식과 Consolidated 방식 을 사용한다
하지만 한가지 방식만 사용하는 것은 아니며, 필요에 따라 Scattered 혹은 Consolidated 방식을 선택하여 사용한다
Scattered 방식은 최대한 빠른 응답속도를 목표로 하고있다
따라서 세계 곳곳에 비교적 낮은 성능의 데이터 센터를 구성하고 연결해 두어야 한다
해당 방식은 관리해야 하는 데이터센터의 수가 많기 때문에 데이터 센터 유지 비용 또한 높다
따라서 클라우드 제공자는 관리비용을 사용자에게 전가한다
그렇기 때문에 사용 요금이 매우 높다
그렇다고 해서 지금은 사용되지 않는 방식은 아니다
수요가 적은 지역에 데이터 센터를 세워야 할때는 해당 방식이 유리하다
여려 서버를 통합하며 운용하는 방식
1. 다수의 고성능 서버로 통합하여 운용하는 방식
2. 응답시간 증가, 하지만 관리 및 유지 비용이 낮아진다
3. 연결 수요가 많은 지역 대상으로 적할한 방식
다른 방식인 Consolidated 방식이다
기존의 Scattered 방식과 다르게 데이터 센터들을 통합하여 운용하는 방식이다
따라서 Scattered 방식에서 사용했던 낮은 성능 대신 고성능의 데이터 센터들을 운용해야 한다
비록 응답시간이 증가 하지만 데이터 센터의 수가 줄어듦으로 데이터 센터의 관리 및 유지 비용을 절감할수 있다
유지 관리 비용이 적어진다는 것은 사용자들에게 전가되는 요금이 줄어든다는 의미이다
따라서 데이터 센터 통합하면 할수록 사용자들의 부담이 줄어든다
해당 방식은 연결 수요가 많은 지역에 데이터 센터를 설립해야 한다면 적절한 방식이다
초기에는 응답 속도에 중점을 두었다
따라서 Scattered 방식, 정적 컨텐츠 CDN이 주류였다
그렇기 때문에 응답속도는 매우 높았지만 사용자에게 전가되는 비용이 매우 높았다
하지만 점차 동적 컨텐츠를 지원하고 데이터센터를 통합하기 시작했으며,
관리하는 데이터센터의 수가 줄어들기 때문에 사용자에게 전가되는 비용은 줄어들고 있다
또한 DDoS 공격등 사이버 공격에 대응하고 어느 상황에서도 콘텐츠를 제공할수 있도록 보안과 안정성에 집중하고 있다