
cdn이란 웹사이트나 앱의 콘텐츠를 이용자와 가까운 여러 지역의 서버에 나누어 저장해 두었다가, 접속하는 위치에서 가장 가까운 서버가 응답하도록 만든 전송 체계를 가리키는 말이다. Content Delivery Network의 줄임말로, 홈페이지 로딩 속도를 개선하거나 접속자가 한꺼번에 몰릴 때 서버 부담을 나누기 위한 목적으로 도입한다. 이 글은 cdn 뜻이 정확히 무엇인지, cdn 서버가 어떤 구조로 작동하는지, cdnjs 같은 서비스는 어떤 방식으로 쓰이는지, 그리고 도입 전이나 문제가 생겼을 때 무엇부터 확인해야 하는지를 차례로 정리한다.
cdn 뜻과 기본 구조
웹사이트를 하나의 서버에만 두면, 그 서버와 물리적으로 먼 곳에 있는 이용자는 데이터가 오가는 거리만큼 응답이 늦어진다. cdn은 이 원본 서버의 콘텐츠 가운데 이미지, 스타일 파일, 자바스크립트 파일처럼 자주 바뀌지 않는 자원을 여러 지역의 중계 서버에 미리 복사해 두는 방식으로 이 문제를 줄인다. 이용자가 사이트에 접속하면 가장 가까운 중계 서버가 대신 응답하므로, 원본 서버까지 왕복하는 거리와 시간이 줄어든다.
이렇게 콘텐츠를 미리 복사해 두는 동작을 캐싱이라 부르고, 캐싱을 담당하는 지역별 서버를 흔히 엣지 서버라 부른다. 원본 서버는 콘텐츠가 새로 바뀔 때만 각 엣지 서버에 갱신된 내용을 내려보내고, 평소에는 엣지 서버가 대부분의 요청을 대신 처리한다. 결국 cdn은 새로운 콘텐츠를 만드는 장치가 아니라, 이미 만들어진 콘텐츠를 더 가까운 곳에서 더 빠르게 내보내 주는 배달 구조에 가깝다.
cdn 서버는 왜 필요한가
cdn을 도입하는 가장 직접적인 이유는 로딩 속도다. 같은 사이트라도 원본 서버에서 먼 지역의 방문자는 응답이 느리게 느껴질 수 있는데, 지역별 엣지 서버를 거치면 이 체감 속도 차이가 줄어든다. 특히 이미지나 동영상처럼 용량이 큰 자원이 많은 사이트일수록 효과가 두드러지는 편이다.
또 하나의 이유는 트래픽 분산이다. 특정 시점에 방문자가 갑자기 몰리면 원본 서버 하나로는 요청을 감당하지 못해 응답이 느려지거나 접속이 끊길 수 있다. cdn을 쓰면 여러 엣지 서버가 요청을 나누어 처리하므로 원본 서버에 걸리는 부담이 줄어들고, 갑작스러운 방문자 증가에도 비교적 안정적으로 대응할 수 있다. 아울러 엣지 서버가 일부 요청을 걸러 주는 구조 자체가 비정상적으로 많은 요청이 원본 서버까지 그대로 도달하는 것을 막는 효과도 낸다.
cdnjs 같은 서비스와 실제 활용
cdn이 활용되는 대표적인 방식 가운데 하나가 자바스크립트 라이브러리나 스타일 파일을 공개된 저장소에서 불러오는 방법이다. cdnjs는 이렇게 많이 쓰이는 공개 라이브러리 파일들을 모아 두고, 개발자가 자신의 서버에 직접 파일을 두지 않고도 주소만 연결해 불러 쓸 수 있게 해 주는 공개 저장소로 알려져 있다. 이런 방식을 쓰면 같은 라이브러리를 이미 다른 사이트에서 내려받은 적 있는 이용자의 경우, 파일이 브라우저에 남아 있어 다시 내려받지 않아도 되는 경우가 생기기도 한다.
다만 이런 공개 저장소를 쓸지, 직접 자원을 준비해 자체 cdn을 구성할지는 사이트의 성격과 운영 방식에 따라 달라진다. 방문자가 대부분 특정 지역에 몰려 있는 사이트라면 굳이 여러 지역에 걸친 cdn이 필요하지 않을 수도 있고, 반대로 여러 지역의 이용자를 상대하는 서비스라면 지역별 엣지 서버의 효과가 크게 나타난다. 어떤 방식을 택하든 콘텐츠가 실제로 얼마나 자주 바뀌는지, 얼마나 다양한 지역에서 접속이 이루어지는지를 먼저 살펴보는 것이 판단의 출발점이 된다.
cdn 차단과 확인해야 할 순서
사이트 운영자나 이용자 입장에서 종종 마주치는 문제가 cdn 차단이다. 회사나 학교처럼 관리되는 네트워크 환경에서는 특정 외부 도메인으로 나가는 연결을 막아 두는 경우가 있는데, 이 목록에 cdn 주소가 포함되어 있으면 그 cdn을 거쳐 불러오는 글꼴이나 스크립트, 이미지가 깨져 보이거나 아예 나타나지 않는다. 이용자 쪽 브라우저 확장 프로그램이 특정 요청을 차단하는 경우에도 비슷한 증상이 나타날 수 있다.
이런 증상이 나타나면 먼저 브라우저 개발자 도구에서 어떤 주소로 나가는 요청이 실패했는지를 확인하는 것이 순서다. 실패한 요청이 cdn 주소로 향하고 있다면, 그다음으로는 같은 페이지를 다른 네트워크나 다른 기기에서 열어 보아 특정 환경에서만 생기는 문제인지 가려낸다. 특정 환경에서만 문제가 생긴다면 그 네트워크의 차단 목록을 살펴봐야 하고, 모든 환경에서 똑같이 나타난다면 사이트 쪽에서 참조하는 cdn 주소 자체나 파일 경로에 문제가 있는지를 확인해야 한다.
한편 cdn과 이름이나 발음이 비슷해 혼동되는 말들이 있다. cdna는 유전 물질을 다루는 생물학 분야에서 쓰이는 용어로, 이 글에서 다루는 웹 전송 기술의 cdn과는 전혀 다른 개념이며 cdna synthesis kit 역시 실험에 쓰는 도구를 가리키는 말이라 홈페이지 제작과는 관련이 없다. 또한 cdns stock처럼 관련 업종 기업의 주가를 가리키는 검색어도 있으나, 이는 투자와 관련된 별도의 주제이므로 이 글에서 다루는 웹사이트 속도 개선 목적의 cdn 설명과는 구분해서 볼 필요가 있다.
| 구분 | 내용 |
|---|---|
| 원본 서버 | 사이트의 실제 콘텐츠가 저장되는 서버, 콘텐츠가 바뀌면 이곳부터 갱신된다 |
| 엣지 서버 | 원본 콘텐츠를 지역별로 미리 복사해 두고 가까운 이용자에게 대신 응답하는 서버 |
| 캐싱 | 자주 바뀌지 않는 자원을 엣지 서버에 미리 저장해 두는 동작 |
| cdn 차단 확인 | 네트워크 차단 여부, 브라우저 확장 프로그램, 사이트 쪽 주소 경로 순서로 살펴본다 |
cdn을 도입할지, 어떤 방식으로 구성할지는 사이트의 방문자 분포와 콘텐츠 특성에 따라 달라지는 문제이므로, 실제로 적용하기 전에는 자신이 쓰는 홈페이지 제작 도구나 서버 환경에서 제공하는 공식 안내 문서를 통해 지원 여부와 설정 방법을 확인하는 것이 순서다. 속도 문제나 화면이 깨지는 증상이 있다면 앞서 살펴본 확인 순서대로 요청 실패 주소부터 짚어 보면 원인을 좁혀 나갈 수 있다.
· · · · · · · · · ·
스페셜타임스는 AI 기술의 도움을 받아 더 빠르고 다양한 뉴스를 독자에게 전달하기 위해 노력하고 있습니다.
