이번 5월에 참가했던 aws 컨퍼런스에서도 그렇고 회사 업무 중에도 '서비스에서 사용자 환경을 개선하기 위해 CDN이 사용된다.'는 이야기를 자주 접하게 되었는데요. CDN이란 무엇인지, 어떻게 사용되는지가 궁금하여 정리한 내용입니다.
CDN이란 무엇인가?
CDN이란 콘텐츠 전송 네트워크(Content Delivery Network)의 약자로 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술(콘텐츠 전송 네트워크)을 말합니다.
CDN의 주요 역할은 콘텐츠가 저장된 서버와 사용자의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화하는 것인데요.
많은 산업들의 디지털화가 증가되고 또 글로벌한 서비스들이 늘어남에 따라 CDN의 시장 규모는 점점 더 증가하고 있는 추세입니다.
(대표적인 CDN 솔루션으로는 Cloudflare, Akamai, CloudFront, Fastly가 있습니다.)
CDN의 활용 사례
CDN의 원리에 대한 이해를 돕기 위해 CDN이 활용되고 있는 사례를 살펴보면, 먼저 온라인 동영상 스트리밍 서비스를 제공하는 넷플릭스(Netflix)가 있는데요.
넷플릭스의 경우 전 세계 사용자를 대상으로 서비스를 하고 있기 때문에 빠르고 안전한 콘텐츠 전송을 위해서는 CDN이 필수적이며, 때문에 2011년 자체 CDN을 구축하여 서비스를 제공하고 있습니다.
이처럼 넷플릭스 외에도 글로벌 숙박 공유 서비스인 에어비앤비(Airbnb), 멀티플레이어 온라인 배틀 아레나 게임 리그 오브 레전드(League of Legends)의 개발사 라이엇 게임즈 등의 서비스에서도 CDN이 활용되고 있습니다.
CDN의 작동 원리
(CDN을 사용하지 않고 Origin Server 하나만을 사용하는 예시입니다.)
(각 지역에 CDN Server를 사용하는 예시입니다.)
이미지로 보는 것과 같이 CDN은 각 지역에 캐시 서버(PoP, Point of presence)를 분산 배치하여 사용자의 요청에 대해 Origin 서버가 아니라 CDN 서버를 통해 콘텐츠를 전달하는 방식인데요.
사용자는 지리적으로 가까운 CDN 서버에서 콘텐츠를 가져오기 때문에 Origin 서버에 비해 훨씬 더 빠른 속도로 콘텐츠를 사용할 수 있게 됩니다.
* 이때 CDN 서버의 경우 콘텐츠 전송에 목적을 둔 서버이며, 엣지 서버라고도 이야기합니다.
CDN을 통해 전송할 수 있는 인터넷 콘텐츠로는 iamge, video, audio, html, css, js 등의 정적 콘텐츠와 사용자의 요청에 따라 매번 데이터가 바뀌는 동적 콘텐츠 두 가지 유형이 있으며, CDN 서버에서 콘텐츠를 저장(캐싱)하는 방법으로도 정적 캐싱과 동적 캐싱 두 가지 방법이 있는데요.
Origin 서버에서 CDN 서버로 콘텐츠를 미리 보내는 것을 정적 캐싱(static caching)이라고 하며, 거의 변경되지 않는 정적 콘텐츠의 경우 정 캐싱 방법이 많이 사용됩니다.
동적 캐싱(dynamic caching)의 경우 CDN 서버로 사용자의 요청이 왔을 때, 해당 요청에 대한 콘텐츠가 CDN 서버에 저장되어 있는 경우(cache hit) 사용자에게 콘텐츠를 바로 반환하고, 저장되어 있지 않은 경우(cache miss) Origin 서버에서 해당 콘텐츠를 받아오는(받아와서 저장) 방식인데요.
요청마다 데이터가 바뀔 수 있는 동적 콘텐츠의 경우 바이트 단위의 분석을 통해 바뀐 부분만 받아오거나, 데이터 압축, 통신 간소화 등의 방법으로 발생할 수 있는 문제점을 보완하고 있습니다.
* 특정 국가나 특정 지역만을 타깃으로 하는 서비스의 경우에는 CDN을 활용할 필요가 없습니다.
CDN 활용 시 주요 장점
'페이지 로드 시간 단축'
페이지 로드 시간 단축은 CDN 활용에서 가장 주된 장점으로 볼 수 있는데요.
가까운 CDN 서버에서 콘텐츠를 전송해 주기 때문에 페이지 로드 시간이 단축되며, 이는 사용자의 이탈률을 줄이는 효과로 이어져 사용자가 사이트에서 보내는 시간이 더 길어지게 됩니다.
'트래픽 급증에 대한 처리'
CDN은 로드를 여러 서버에 분산하는 분산 처리로 Origin 서버에 미치는 영향을 줄이기 때문에 DDoS 공격 등의 트래픽 급증을 처리할 수 있습니다.
또한 하나의 CDN 서버가 오프라인으로 전환되었을 때, 다른 CDN 서버가 해당 서버를 대체하여 서비스가 중단되지 않도록 할 수도 있습니다.
* DDoS(Distributed Denial of Service)는 서비스 중단을 목적으로 표적이 되는 웹 사이트 또는 네트워크에 악성 트래픽을 대량으로 보내려고 시도하는 사이버 공격의 형태입니다.
'대역폭 사용량 및 비용 절감'
웹 사이트에 들어오는 모든 요청은 네트워크 대역폭을 사용하는데요.
CDN 서버의 캐싱으로 콘텐츠의 복사본을 저장해 놓는 방식으로 인해 Origin 서버로부터 전송되어야 하는 데이터의 양이 줄어들어 Origin 서버에서의 대역폭 사용량 및 비용이 절감되게 됩니다.
< 참고 자료 >
https://mysterlee.tistory.com/72
https://code-lab1.tistory.com/261
'Programming > Web' 카테고리의 다른 글
JWT 인증 단점과 중복 로그인 관련 해결 방안 (0) | 2023.08.04 |
---|---|
스트랭글러 패턴(Strangler Pattern) 개념 정리 (0) | 2023.05.31 |
무료 ssl 인증서 적용하는 방법(Let's Encrypt) (0) | 2023.04.15 |
OAuth, OAuth2 개념과 동작 방식 정리 (0) | 2023.03.22 |
(spring boot) RedisRepository 사용하는 방법, @RedisHash (0) | 2023.03.07 |