웹서비스에 필수! CDN이 뭔가요?

KIM YONG GU·2023년 9월 17일

얄팍한코딩사전

목록 보기
19/23

CDN(Content Delivery Network)

CDN 없이도 네트워크 접속이 가능하지만 굳이 사용하는 이유는?

1. CDN의 개념

  • 웹 페이지나 이미지, 동영상 등의 콘텐츠를 서버에서 사용자에게로 전송하는 걸 딜리버리라고 함
  • CDN 없이도 온라인 서비스들이 동작은 하지만 많은 서비스들이 cdn을 사용하는 데는 이유가 있음
  • 서버라는 것도 결국 컴퓨터인데 누군가 얄코 사이트에 접속한다는 건 야코 사이트를 제공하는 서버 컴퓨터에 방문자의 컴퓨터로부터 요청이 들어오고 그 요청에 따라 서버가 콘텐츠를 보내주는 것임
  • 서버는 사용자의 요청을 처리하는 곳을 여러 군데에 분산시키는 것이 가장 좋은 방법인데 대표적인 기술이 CDN임
  • DNS에서 ip요청을 원본서버가 아니라 클라이언트에 가장 빠르게 연결될 수 있는 다른서버(엣지)에 연결해 주는 것.

*CDN은 미러사이트처럼 서버 전체 기능을 따라하는 것이 아니라 컨텐츠 전달이라는 용도에 특화된 것임

2. 동적 콘텐츠의 캐싱

  • CDN에 캐싱되는 주기는 설정하기에 따라 다름. 정적 캐싱과 정적 캐싱으로 나뉨.

  • 정적 캐싱은 캐싱할 리소스를 미리 엣지에 보내는 것.

  • 동적 캐싱은 사용자가 요청을 보낼때마다 보낼 컨텐츠가 엣지에 있는지 먼저 확인하고 있으면 (Cash hit) 바로 보내고 없으면 (Cash miss) 본 서버에 요청해서 받아오는 것.

  • 동적 콘텐츠는 캐싱하기 까다로운 대상임

  • 정적 콘텐츠는 캐싱하면 되는 정적 콘텐츠와는 달리 API 요청의 결과 같은 동적 콘텐츠는 캐싱해두기 까다로운 대상임

  • 대표적인 CDN 업체로 Cloudflare나 Akamai, AWS의 CloudFront, Azure의 CDN 서비스처럼 여러 방법을 고안해서 동적 컨텐츠 전달속도를 높이는 곳들도 있음.

  • 동적 콘텐츠를 바이트 단위로 분석해서 딱 바뀐 부분만 새로 받아오도록 해서 속도를 높이기도 하고, 서버에서 사용자까지 전달되는 경로를 최적화하기도 하고, 데이터를 압축하거나 핸드셰이크 등의 과정을 간소화하기도 함

  • 또한, 동적 콘텐츠의 특성이나 필요에 따라서는 지정된 시간에 한해서 캐싱되도록 할 수도 있음

  • 추가로 데이터가 캐시가 얼마나 남아있을지 사라지는 시간을 지정하는 값을 TTL(Time-To-Live)라고 함.

  • 같은 사이트에서도 컨텐츠에 따라 TTL을 다양하게 설정할 수 있음. 좋은 CDN 서비스 일수록 다양한 기능을 제공함.

  • 또한 CDN에 쓰는 비용이 본서버를 유지하는 비용보다 상대적으로 저렴함.

  • 본 서버에 도달하는 비용보다, 각 지사에 도달하는 비용이 저렴하며 추가적으로 가용성과 안정성도 향상됨

3. 전송 속도와 대역폭

  • 전송 속도는 물리적 거리를 얼마나 빠르게 이동을 하는가임 (도로의 제한속도)
  • 대역폭은 동시에 얼마나 많은 데이터가 오고 갈 수 있는가임 (도로의 n차선, 도로폭)
  • 둘이 다 빠르면 되게 빠른 것임

4. CDN의 역할

  • 헬스 체크를 한다는 게 엣지들이 잘 돌고 있는지 꾸준히 확인하고 관리를 해준다는 것임
  • CDN은 보안에 있어서도 도움이 됨
  • DDOS 공격은 여러 유형들이 있어서 표적이 되면 하나하나를 방지하고 대응하기가 까다로움
  • 좋은 CDN 업체들은 DDOS를 효과적으로 막아내는 방법에 대한 노하우를 가지고 있음

5. CDN의 보안성

  • CDN을 통해 향상시킬 수 있는 콘텐츠의 암호화도 보안 측면에서 충분한 역량을 갖췄는지도 꼼꼼히 따져볼 필요가 있음
  • CDN을 해킹해서 악성 코드를 유포하는 등의 공격도 있기 때문에 사용할 CDN 회사가 보안 측면에서 충분한 역량을 갖췄는지도 따져볼 필요가 있음
  • 국제적인 서비스와 국내에 특화된 CDN 서비스 업체가 있을 수 있음. 필요에 따라 선택할 것.
profile
Engineer, Look Beyond the Code.

0개의 댓글