Content Delivery Network
CDN은 Content Delivery Network의 약자로서 지리적인 제약 없이 전 세계 사용자에게 빠르고 안전하게 컨텐츠 전송을 할 수 있는 기술을 말한다. 이를 통해서 컨텐츠의 병목현상을 피할 수 있다.
delivery란 웹페이지나 이미지 동영상 같은 것들을 서버에서 사용자에게로 전송하는 것
인터넷망을 통해 - 서버랑 클라이언트랑 이미 연결 되어 있는거 아님?
cdn 없이도 온라인 서비스들이 동작을하지만
사용하는덴 이유가 있어
서버도 결국 컴퓨터야
유튜브나 구글등 큰 서버들은 전세계에서 무지막지한 요청이 들어옴
크게 두 문제가 있는데
1. 물리적 거리 - 전세계 각지에서 사람들이 방문하면 멀리서 접속하는 사람은 느려!! 외국 사이트 들어가면 느린 것처럼 .
이건 사용자 입장. 서버는 서버의 문제가 있음
2. 수많은 요청 감당 - 과부하
기계자체도 좋은 걸 쓰지만 가장 좋은 방법은
이런 요청들을 여러곳에다 분산시킴 !!!!
여기에 쓰이는 대표적 기술이 바로 cdn
사용자의 요청 처리를 여러군데 둬서 나눠서 처리한다~
서버를 미국에도 하나도고 유럽에도 하나두고?
이런 방법도 있음
그런 거를 미러 사이트 라고 함
근데 cdn은 서버 전체 기능을 똑같이 따라하는 게 아니라,
컨텐츠 전달이라는 용도에 특화된 것
근데 사람들이 어떤 사이트 주소를 치면
그 주소가 어떤 서버 ip랑 매칭이 돼있는 건지 dns에서 찾아보고 그 아이피로 찾아가는 거잖아 ?
cdn을 둬서 그리로 요청을 받는 다는 것은
dns에서 그 주소를 원본이 있는 서버가 아니라 cdn으로 연결을 시켜주도록 바꿔줘야함
이제 전화번호부에 본사 전화번호 대신 체인점을 총괄하는 부서 cdn의 번호를 적는 것 !
정적캐싱 - 캐싱할 것들을 미리 각 엣지에 보내는 것
동적 캐싱 - 사용자가 요청을 보낼 때마다 보낼 컨텐츠가 엣지에 있는지 확인한 다음에 있으면 (이걸 cache hit이라고 함) 바로 사용자에게 보내고 없으면 미스일때 그때 서버에 요청해서 받아 옴!
대역폭 - 주어진 시간 안에 데이터가 얼마나 많이 실려서 보내질 수 있는지
cdn 보안과도 관련 있음
디도스 공격(서버과부하)이 오면 여기저기 분산된 cdn이 몸빵(?) 해주기 때문에 잘 안먹힘
컨텐츠 암호화도 cdn을 통해 향상시킬 수 있음!