강좌 강좌
CDN 입문: 사용자 가까이에서 콘텐츠 사본을 전달하기
웹사이트가 뜨는 속도는 데이터를 보내는 서버와 사용자 사이의 거리에 영향을 받습니다. CDN(콘텐츠 전달 네트워크, Content Delivery Network)은 콘텐츠 사본을 사용자 가까이에 두어 이 거리 문제를 완화하려는 구조입니다.
한 문장으로 이해하기
CDN은 여러 위치에 분산된 서버들이 데이터 사본을 저장해 두고, 사용자와 가까운 서버가 요청에 응답하도록 하는 구조입니다.
이 강좌를 마치면 두 가지를 할 수 있습니다. 첫째, CDN이 무엇이고 왜 쓰는지 자기 말로 설명할 수 있습니다. 둘째, CDN이 도움이 되는 상황과 주의해야 할 한계를 구분할 수 있습니다. 사전에 알아 두면 좋은 것은 웹 브라우저가 서버에 파일을 요청하고 응답을 받는다는 기본 개념 정도입니다.
왜 필요한가
한국의 사용자가 멀리 있는 해외 서버에서 파일을 내려받는다고 생각해 봅시다. 지리적 거리는 지연 시간(latency, 요청을 보내고 응답을 받기까지 걸리는 시간)에 영향을 줍니다. CDN 서버는 웹사이트를 운영하는 조직의 자체 서버보다 사용자에게 지리적으로 가까울 수 있으므로, 가까운 서버가 응답하면 지연을 줄이는 데 도움이 될 수 있습니다.
또 하나의 이유는 자체 서버의 부담입니다. CSS·JavaScript 같은 정적 파일을 CDN이 대신 제공하면, 자체 서버로 오는 요청 부담을 줄일 수 있습니다.
어떻게 이루어지는가
CDN이 콘텐츠를 전달하는 기본 흐름은 다음과 같습니다.
- 웹사이트 운영자가 제공하려는 파일의 사본을 CDN에 둡니다. CDN은 여러 위치에 분산된 서버들로 이루어져 있고, 정적 파일을 위한 캐시(cache, 임시 저장 사본) 설정이 이미 구성되어 있을 수 있습니다.
- 사용자가 브라우저에서 해당 파일을 요청합니다.
- 여러 위치의 CDN 서버 중 사용자와 가까운 서버가 저장된 사본으로 응답합니다.
- 그만큼 자체 서버가 직접 처리해야 할 요청 부담이 줄 수 있습니다.
정적 HTML·CSS·JavaScript 파일로만 구성된 웹사이트라면, 사이트 전체를 CDN에서 제공하는 것도 가능합니다.
하나의 예시로 따라가기
가상 예시입니다. 한국 스타트업 A사가 웹페이지에 쓰는 CSS 파일을 자체 한국 서버에서 직접 제공하고 있다고 가정합니다.
이 상태에서는 전 세계 어디의 사용자든 모두 A사의 한국 서버에 파일을 요청합니다. 멀리 있는 사용자일수록 지리적 거리 때문에 지연 시간이 커질 수 있고, 모든 요청이 A사 서버 한 곳으로 모입니다.
A사가 이 CSS 파일의 사본을 CDN에 두면 상황이 달라집니다. 독일의 사용자가 A사 웹페이지를 열면, 여러 위치에 분산된 CDN 서버 중 그 사용자와 가까운 서버가 CSS 사본으로 응답할 수 있습니다. 가까운 서버가 응답하므로 지연을 줄이는 데 도움이 될 수 있고, A사의 자체 서버는 그 파일 요청을 직접 처리하지 않아도 되므로 요청 부담이 줄 수 있습니다.
언제 쓰고 언제 쓰지 않는가
CDN이 도움이 될 수 있는 경우는 다음과 같습니다. 여러 지역의 사용자에게 같은 정적 파일을 제공할 때, 그리고 자체 서버로 오는 정적 파일 요청 부담을 줄이고 싶을 때입니다. 요청을 CDN이 나눠 처리하는 만큼, 높은 트래픽의 영향을 덜 받을 수 있습니다.
반면 주의해야 할 한계도 있습니다.
- 제3자 의존 위험: 외부 CDN 서비스가 중단되거나, 특정 지역에서 차단되거나, 영구 종료되면 이를 사용하는 웹사이트가 오작동할 수 있습니다.
- 보안 위험: CDN이 침해되면 악성 콘텐츠가 사용자에게 전달될 수 있습니다. 이에 대응하는 수단 중 하나가 SRI(Subresource Integrity)로, 브라우저가 받은 외부 파일이 변조되지 않았는지 무결성을 확인하는 방법입니다.
- 성능이 오히려 낮아질 수 있는 경우: 제3자 CDN 도메인에 연결하려면 추가 DNS 조회와 콘텐츠 협상 등의 과정이 필요해 성능이 오히려 낮아질 수 있습니다. 또한 현대 브라우저는 개인정보 보호를 위해 출처가 다른 사이트끼리 동일한 리소스의 캐시를 공유하지 않으므로, 사용자가 같은 파일을 다시 내려받을 수 있습니다.
핵심 정리와 확인문제
CDN은 여러 위치에 분산된 서버에 콘텐츠 사본을 두고 사용자와 가까운 서버가 응답하게 하는 구조로, 지연과 자체 서버의 요청 부담을 줄일 수 있습니다. 다만 제3자 의존, 보안 위험, 일부 환경에서의 성능 저하라는 한계를 함께 이해해야 합니다.
확인문제 1. CDN에서 사용자와 가까운 CDN 서버는 어떤 역할을 하나요?
정답과 해설: 여러 위치에 분산된 CDN 서버들은 데이터 사본을 저장하고 있으며, 그중 사용자와 가까운 서버가 요청에 응답합니다. 지리적 거리는 지연 시간에 영향을 주므로, 가까운 서버의 응답은 지연을 줄이는 데 도움이 될 수 있습니다.
확인문제 2. CDN이 웹사이트 운영 조직의 자체 서버 부담을 줄일 수 있는 이유는 무엇인가요?
정답과 해설: CDN이 정적 파일 요청을 대신 처리할 수 있어, 자체 서버로 오는 요청 부담이 줄 수 있기 때문입니다.
확인문제 3. 제3자 CDN 연결이 성능을 오히려 낮출 수 있는 이유로 본문에서 설명한 것은 무엇인가요? ① 추가 DNS 조회와 콘텐츠 협상 등의 과정이 필요하다 ② 파일 크기가 자동으로 커진다 ③ 정적 파일을 저장할 수 없다
정답과 해설: 정답은 ①입니다. 제3자 CDN 도메인에 연결하려면 추가 DNS 조회와 콘텐츠 협상 등이 필요해 성능이 오히려 낮아질 수 있습니다. ②와 ③은 본문에서 설명한 내용이 아닙니다.