CDN
Contents Delivery Network
- 인터넷 상에서, 서버로부터 물리적(거리 등)으로 멀리 떨어져 있는 클라이언트에게
기존보다 빠르게 컨텐츠를 제공할 수 있는 기술이다.
- 주로 웹 페이지, 이미지, 동영상 등의 컨텐츠 전송에 사용된다.
- 클라이언트의 요청들을 여러 곳으로 분산 시켜, 나눠서 처리한다.
- 미러 사이트(서버 전체 기능을 복사)를 두는 방식으로 하는 것을 일컫는 건 아니다.
- 컨텐츠 ‘전달’ 이라는 용도에 특화된 것이다.
mechanism
- CDN을 제공하는 플랫폼의 서비스를 이용하는 방식으로 사용한다.
(컨텐츠 제공자는 따로 업체를 두지 않고 자체적으로 CDN을 구축하기도 한다.)
- 해당 플랫폼은 전 세계 곳곳에 서버를 두고 있다. (Edge)
(한국 내에서만 서비스하는 데에 특화된 CDN 플랫폼도 있다)
- 미국의 한 클라이언트가 한국 서버의 사이트에 접속한다고 가정한다면
한국 서버가 아니라, 해당 플랫폼의 미국에 있는 CDN 서버로 요청을 보내게 된다.
- CDN 서버에는 본 서버의 각종 정적 컨텐츠들이 주로 저장 및 캐싱 되어있다.
- CDN 서버에서 요청을 받을 수 있도록 하기 위해 DNS 상에서는,
본 서버가 아니라 CDN 서버로 연결되도록 한다.
- 이에 대한 설정은 보통 도메인을 구매한 곳에서 한다.
- 요청을 받으면, 물리적 거리나 health-check 등을 감안하여
여러 Edge 중에서 가장 빠르게 서비스할 수 있는 곳으로 연결시킨다.
caching
Edge에서의 캐싱 리소스는 본 서버의 서비스에 맞게 설정함에 따라 여러 방식이 있다.
- 정적 캐싱 vs 동적 캐싱: 언제 캐싱할 것인가
- 정적 캐싱: 캐싱할 것들을 미리 각 edge에 보낸다.
- 동적 캐싱: edge에 컨텐츠가 있는지 클라이언트의 요청마다 확인하여,
cache hit 시는 바로 응답하고, cache miss 시는 본 서버에 요청해서 받아온다.
- 용량이 큰 파일은 정적 캐싱이 적절하다.
- 정적 컨텐츠 vs 동적 컨텐츠
- 정적 컨텐츠: HTML, CSS, JS 파일, 이미지 등의 데이터. 그 내용이 고정된 것.
- 동적 컨텐츠: API를 통해 DB를 거치는 등으로 받아오는 데이터. 그 내용이 변할 수 있는 것.
- 동적 컨텐츠는 정적 컨텐츠에 비해 캐싱하기 까다롭다.
이에 따라, 정적 컨텐츠의 캐싱만 제공하는 플랫폼도 있다.
- TTL (Time To Live): 지정한 시간 동안 캐싱되도록 하여, 본 서버의 부하를 줄일 수 있다.
advantages
- 클라이언트 측에서는 느린 로딩 속도에 따른 불편함을 겪지 않을 수 있고,
서버 측에서는 해외의 수많은 요청들을 한 군데서 모두 감당하지 않아도 된다.
- 따라서, 시스템의 가용성(정상적으로 사용 가능한 정도)이 증가한다.
- 본 서버만 있을 때 부하를 감당하기 위해 사용하던 비용보다
CDN을 사용함으로써 아끼는 비용이 더 클 수 있다.
즉, 본 서버로 직접 요청이 오지 않는다는 점에서
대역폭(bandwidth)과 관계하여, 서버의 호스팅 비용이 절감된다.
- 대역폭: 동시에 전송할 수 있는 최대 데이터 양.
네트워크에 사용되는 용어로, capacity에 중점적인 개념이다.
- 전송 속도는 단위 시간 당 전송할 수 있는 데이터 양으로,
velocity에 중점적인 개념이다.
(일반적으로 네트워크 속도라 함은 전송 속도를 말하곤 한다.)
- 데이터 전송량을 측정할 때는
대역폭과 전송 속도 둘 다 고려해서 따져봐야 한다.
- 보안
- DDoS 공격에 대응할 수 있다.
- CDN에서 제공하는 검증된 인증 방식을 통해, 컨텐츠 암호화도 가능하다.