CDN이란? 우리 서비스에 필요한가

요약

이미지·동영상이 많은 서비스라면 CDN은 거의 필수입니다. 전 세계에 콘텐츠 복사본을 두고 사용자와 가장 가까운 서버에서 전송해 로딩 속도를 줄입니다. Cloudflare·CloudFront·Fastly가 주력 옵션이고, 비용은 트래픽 규모에 비례합니다.

서비스를 런칭하고 사용자가 늘어나면 속도에 대한 이야기가 나옵니다. 특히 이미지나 동영상이 많은 서비스라면 "CDN을 붙여야 하지 않나요?"라는 질문을 자주 받게 됩니다. CDN이 정확히 무엇이고, 우리 서비스에 정말 필요한 것인지, 비용은 얼마나 드는지. 비개발자도 이해할 수 있도록 정리해 보겠습니다.

CDN은 전 세계에 퍼진 복사본 서버입니다

CDN(Content Delivery Network)은 여러분의 웹사이트 콘텐츠 복사본을 전 세계 곳곳의 서버에 미리 저장해두고, 사용자와 물리적으로 가장 가까운 서버에서 콘텐츠를 전송하는 시스템입니다. 서울에 서버가 있다고 가정해 보겠습니다.

부산 사용자가 접속하면 약 50ms의 지연이 발생합니다. 미국 LA의 사용자가 접속하면 태평양을 건너야 하므로 200ms 이상의 지연이 생깁니다. CDN을 사용하면 미국 사용자는 미국에 있는 엣지 서버에서 콘텐츠를 받으므로 10ms에서 30ms 수준으로 줄어듭니다.

빛의 속도에도 한계가 있기 때문에, 물리적 거리에서 오는 지연은 서버 성능을 아무리 올려도 해결할 수 없습니다. CDN은 이 근본적인 문제를 콘텐츠를 미리 가까운 곳에 배치하는 방식으로 해결합니다.

CDN에 올려야 하는 것과 올리면 안 되는 것

CDN은 정적 자산(Static Assets)에 적합합니다. 이미지, CSS 파일, JavaScript 파일, 웹 폰트, 동영상 등 변경 빈도가 낮고 모든 사용자에게 동일하게 제공되는 파일들입니다. 이런 파일들은 한 번 캐싱하면 수천 명의 사용자에게 원본 서버 부담 없이 제공할 수 있습니다.

반대로 동적 API 응답은 CDN에 캐싱하면 안 됩니다. 사용자마다 다른 데이터, 예를 들어 로그인 정보, 주문 내역, 개인 설정 같은 것을 캐싱하면 A 사용자가 B 사용자의 주문 내역을 보게 되는 심각한 보안 사고가 발생할 수 있습니다.

인증이 필요한 콘텐츠, 실시간으로 변하는 데이터도 마찬가지입니다.

비용은 생각보다 저렴합니다

Cloudflare는 무료 플랜에서도 전 세계 CDN을 제공합니다. 트래픽 제한 없이 기본적인 CDN 캐싱과 DDoS 방어를 무료로 사용할 수 있어서 스타트업이나 소규모 서비스에 이상적입니다. Google Cloud Storage(GCS)도 CDN 기능을 내장하고 있어서 버킷에 파일을 올리는 것만으로도 전 세계에서 빠른 속도로 파일을 제공할 수 있습니다.

AWS CloudFront는 매월 1TB 전송량과 1,000만 건의 HTTP 요청까지 무료입니다. 소규모에서 중규모 서비스라면 CDN 비용이 월 몇천 원에서 무료 수준이라고 봐도 됩니다.

프로덕트 메이커의 CDN 전략

저희는 클라이언트가 이미 쓰고 있거나 비용 효율이 가장 좋은 클라우드를 기준으로 CDN을 구성합니다. GCP 환경이면 Cloud Storage와 Cloud CDN, AWS 환경이면 S3와 CloudFront, 그 외에는 Cloudflare를 주로 활용합니다. 어느 쪽이든 프론트엔드 빌드 결과물(JavaScript·CSS·이미지·폰트)을 클라우드 스토리지에 올리고 전 세계 엣지 서버에서 서빙하는 구조 자체는 동일합니다.

배포 파이프라인 단계에 정적 자산 업로드를 포함해두면 배포할 때마다 CDN이 자동 갱신됩니다. 동적 API는 사용자 위치에 가까운 리전 서버에서 직접 서빙하고, 정적 자산만 CDN으로 전 세계에 배포하는 하이브리드 구조가 가장 일반적입니다. 이 구조는 프론트엔드 프레임워크나 백엔드 언어가 무엇이든 그대로 적용할 수 있습니다.

두코 디지털 카탈로그 프로젝트에서도 이 구조를 적용해 고해상도 제품 이미지를 빠르게 로딩했습니다.

CDN이 필요 없는 경우도 있습니다

국내 전용 서비스이면서 트래픽이 적은 경우, 예를 들어 사내 관리자 도구나 소규모 B2B 서비스라면 CDN 없이도 충분합니다. 한국은 전 세계에서 인터넷 인프라가 가장 뛰어난 나라 중 하나로, 서울 리전 서버 하나만으로도 전국 어디서든 30ms 이내의 응답 속도를 제공할 수 있습니다.

일 방문자가 1,000명 미만인 서비스라면 CDN의 효과를 체감하기 어렵습니다. 기술은 필요할 때 도입해야 합니다. 프로덕트 메이커는 2주 단위 스프린트로 서비스를 점검하면서 실제 속도 문제가 발생하는 시점에 CDN 도입 여부를 클라이언트와 함께 결정합니다.

불필요한 인프라에 돈을 쓰는 것보다, 그 예산으로 사용자 경험을 개선하는 것이 더 나은 투자입니다.

다른 포스팅

CDN이란? 우리 서비스에 필요한가

서비스를 런칭하고 사용자가 늘어나면 속도에 대한 이야기가 나옵니다. 특히 이미지나 동영상이 많은 서비스라면 "CDN을 붙여야 하지 않나요?"라는 질문을 자주 받게 됩니다. CDN이 정확히 무엇이고, 우리 서비스에 정말 필요한 것인지, 비용은 얼마나 드는지. 비개발자도 이해할 수 있도록 정리해 보겠습니다.

CDN은 전 세계에 퍼진 복사본 서버입니다

CDN(Content Delivery Network)은 여러분의 웹사이트 콘텐츠 복사본을 전 세계 곳곳의 서버에 미리 저장해두고, 사용자와 물리적으로 가장 가까운 서버에서 콘텐츠를 전송하는 시스템입니다. 서울에 서버가 있다고 가정해 보겠습니다.

부산 사용자가 접속하면 약 50ms의 지연이 발생합니다. 미국 LA의 사용자가 접속하면 태평양을 건너야 하므로 200ms 이상의 지연이 생깁니다. CDN을 사용하면 미국 사용자는 미국에 있는 엣지 서버에서 콘텐츠를 받으므로 10ms에서 30ms 수준으로 줄어듭니다.

빛의 속도에도 한계가 있기 때문에, 물리적 거리에서 오는 지연은 서버 성능을 아무리 올려도 해결할 수 없습니다. CDN은 이 근본적인 문제를 콘텐츠를 미리 가까운 곳에 배치하는 방식으로 해결합니다.

CDN에 올려야 하는 것과 올리면 안 되는 것

CDN은 정적 자산(Static Assets)에 적합합니다. 이미지, CSS 파일, JavaScript 파일, 웹 폰트, 동영상 등 변경 빈도가 낮고 모든 사용자에게 동일하게 제공되는 파일들입니다. 이런 파일들은 한 번 캐싱하면 수천 명의 사용자에게 원본 서버 부담 없이 제공할 수 있습니다.

반대로 동적 API 응답은 CDN에 캐싱하면 안 됩니다. 사용자마다 다른 데이터, 예를 들어 로그인 정보, 주문 내역, 개인 설정 같은 것을 캐싱하면 A 사용자가 B 사용자의 주문 내역을 보게 되는 심각한 보안 사고가 발생할 수 있습니다.

인증이 필요한 콘텐츠, 실시간으로 변하는 데이터도 마찬가지입니다.

비용은 생각보다 저렴합니다

Cloudflare는 무료 플랜에서도 전 세계 CDN을 제공합니다. 트래픽 제한 없이 기본적인 CDN 캐싱과 DDoS 방어를 무료로 사용할 수 있어서 스타트업이나 소규모 서비스에 이상적입니다. Google Cloud Storage(GCS)도 CDN 기능을 내장하고 있어서 버킷에 파일을 올리는 것만으로도 전 세계에서 빠른 속도로 파일을 제공할 수 있습니다.

AWS CloudFront는 매월 1TB 전송량과 1,000만 건의 HTTP 요청까지 무료입니다. 소규모에서 중규모 서비스라면 CDN 비용이 월 몇천 원에서 무료 수준이라고 봐도 됩니다.

프로덕트 메이커의 CDN 전략

저희는 클라이언트가 이미 쓰고 있거나 비용 효율이 가장 좋은 클라우드를 기준으로 CDN을 구성합니다. GCP 환경이면 Cloud Storage와 Cloud CDN, AWS 환경이면 S3와 CloudFront, 그 외에는 Cloudflare를 주로 활용합니다. 어느 쪽이든 프론트엔드 빌드 결과물(JavaScript·CSS·이미지·폰트)을 클라우드 스토리지에 올리고 전 세계 엣지 서버에서 서빙하는 구조 자체는 동일합니다.

배포 파이프라인 단계에 정적 자산 업로드를 포함해두면 배포할 때마다 CDN이 자동 갱신됩니다. 동적 API는 사용자 위치에 가까운 리전 서버에서 직접 서빙하고, 정적 자산만 CDN으로 전 세계에 배포하는 하이브리드 구조가 가장 일반적입니다. 이 구조는 프론트엔드 프레임워크나 백엔드 언어가 무엇이든 그대로 적용할 수 있습니다.

두코 디지털 카탈로그 프로젝트에서도 이 구조를 적용해 고해상도 제품 이미지를 빠르게 로딩했습니다.

CDN이 필요 없는 경우도 있습니다

국내 전용 서비스이면서 트래픽이 적은 경우, 예를 들어 사내 관리자 도구나 소규모 B2B 서비스라면 CDN 없이도 충분합니다. 한국은 전 세계에서 인터넷 인프라가 가장 뛰어난 나라 중 하나로, 서울 리전 서버 하나만으로도 전국 어디서든 30ms 이내의 응답 속도를 제공할 수 있습니다.

일 방문자가 1,000명 미만인 서비스라면 CDN의 효과를 체감하기 어렵습니다. 기술은 필요할 때 도입해야 합니다. 프로덕트 메이커는 2주 단위 스프린트로 서비스를 점검하면서 실제 속도 문제가 발생하는 시점에 CDN 도입 여부를 클라이언트와 함께 결정합니다.

불필요한 인프라에 돈을 쓰는 것보다, 그 예산으로 사용자 경험을 개선하는 것이 더 나은 투자입니다.

다른 포스팅