CDN이란? 콘텐츠 전송 네트워크를 쉽게 설명합니다
CDN(콘텐츠 전송 네트워크)은 여러 도시에 흩어진 서버 네트워크로, 웹사이트의 파일(이미지, 스크립트, 스타일시트, 때로는 페이지 전체)의 사본을 보관합니다. 누군가 사이트에 방문하면 멀리 떨어진 한 서버 대신 가까운 위치에서 파일을 받습니다. 그래서 페이지가 더 빨리 열리고, 내 서버의 부담이 줄며, 트래픽이 갑자기 몰려도 버티기 쉬워집니다.
AI로 만들 때 CDN이 중요한 이유
CDN을 직접 설정할 일은 없을 수 있습니다. 많은 호스팅 플랫폼이 사이트 앞에 CDN을 자동으로 두기 때문입니다. 하지만 그 효과는 분명히 체감하게 됩니다.
- 속도. 페이지가 빨리 열리면 방문자가 머무르고, 검색엔진도 이를 고려합니다. 웹사이트를 더 빠르게 만드는 방법을 참고하세요.
- “왜 변경 사항이 안 보이지?” 업데이트를 게시한 뒤에도 예전 버전의 사본이 잠시 남아 있을 수 있습니다. 이유를 알아두면 헷갈릴 일이 많이 줄어듭니다.
- 개인정보와 정확성. CDN이 잘못된 것을 캐시하면, 예를 들어 한 사용자의 정보가 담긴 페이지를 저장하면, 다음 방문자가 그 정보를 볼 수 있습니다. 무엇을 캐시해도 되고 무엇을 캐시하면 안 되는지 알면 올바른 질문을 할 수 있습니다.
일상 속 비유
전국에 빵을 파는 빵집이 한 곳의 매장에서만 판매한다고 상상해 봅시다. 멀리 사는 손님도 그 한 매장에서 배달받을 때까지 기다려야 하고, 붐비는 날에는 대기 줄이 엄청나게 길어집니다.
CDN은 같은 빵을 전국 곳곳의 동네 가게에도 진열해 두는 것과 같습니다. 손님은 가까운 곳에서 빠르게 빵을 받아 가고, 본점은 가끔 동네 가게에 빵을 보충하기만 하면 됩니다. 다만 주의할 점이 있습니다. 본점이 레시피를 바꿔도 동네 가게는 옛날 빵을 계속 팔다가, 그 빵을 교체하라는 지시를 받거나 재고가 만료될 때까지 기다려야 합니다.
CDN의 작동 방식
- 원본(오리진). 사이트는 본 서버나 호스팅 플랫폼에 있으며, 이를 오리진이라고 부릅니다.
- 엣지 위치. CDN은 여러 곳에 서버를 두는데, 이를 엣지 위치 또는 *PoP(Point of Presence)*라고 부릅니다.
- 라우팅. 방문자가 사이트를 요청하면 DNS나 네트워크 경로가 그를 가까운 엣지로 보냅니다. 도메인과 DNS의 작동 방식을 참고하세요.
- 캐시 적중(Cache hit). 해당 엣지에 최신 사본이 있으면 즉시 응답합니다.
- 캐시 미스(Cache miss). 사본이 없으면 엣지가 오리진에서 파일을 가져와 방문자에게 보내고, 다음 사람을 위해 사본을 보관합니다.
- 만료. 각 사본은 서버가 보내는 캐시 헤더에 따라 정해진 시간 동안 보관되거나, 비워질 때까지 보관됩니다.
실제 예시: 사진이 많은 포트폴리오 사이트
사진작가의 포트폴리오 사이트에는 홈페이지, 큰 이미지 60장이 담긴 갤러리, 문의 양식이 있습니다. 오리진은 유럽에 있습니다. 싱가포르의 방문자가 갤러리를 엽니다.
- CDN이 없을 때: 모든 이미지가 유럽에서 옵니다. 요청마다 지구 반대편을 왕복해야 해서 갤러리가 천천히 채워집니다.
- CDN이 있을 때: 싱가포르 근처에서 처음 방문한 사람 덕분에 그 지역의 엣지가 이미지를 받아 저장합니다. 이후 그 지역의 방문자는 가까운 곳에서 훨씬 빠르게 이미지를 받습니다.
이제 사진작가가 홈페이지의 대표 사진을 바꾸고 다시 게시합니다. 방문자에게 새 사진이 보이는지는 다음과 같이 정해집니다.
/index.html → 짧은 캐시 시간, 자주 확인
/assets/index-3f9a2c.js → 긴 캐시 시간
/assets/hero-8b41d0.jpg → 긴 캐시 시간
Vite를 비롯한 최신 빌드 도구는 hero-8b41d0.jpg처럼 해시가 붙은 이름을 파일에 줍니다. 파일이 바뀌면 이름도 바뀌므로, 페이지는 어떤 캐시도 본 적 없는 새 파일을 요청하게 됩니다. HTML 페이지 자체는 짧게만 캐시되므로 곧바로 새 파일을 가리키게 됩니다. 긴 캐싱과 빠른 업데이트를 동시에 얻는 표준적인 방법입니다.
문의 양식은 다릅니다. 제출된 내용은 매번 서버로 전송되며, 절대 캐시되면 안 됩니다.
무엇을 캐시하고 무엇을 캐시하지 말아야 할까
| 보통 길게 캐시 | 보통 짧게 캐시 | 공유 CDN에서는 캐시하지 않기 |
|---|---|---|
| 이미지, 폰트, 동영상 | 공개 사이트의 HTML 페이지 | 로그인 후 페이지, 대시보드 |
| 해시 이름이 붙은 JavaScript와 CSS | 가끔 바뀌는 공개 API 데이터 | 개인정보가 담긴 모든 것 |
| 거의 바뀌지 않는 다운로드 파일 | 문의 제출, 결제, 모든 POST 요청 |
핵심 용어
| 용어 | 의미 |
|---|---|
| 오리진 | 실제 파일이 있는 본 서버 또는 호스트입니다. |
| 엣지 / PoP | 방문자에게 가까운 곳에서 응답하는 CDN 위치입니다. |
| 캐시 적중 / 미스 | 엣지에 파일이 있었는지, 아니면 오리진에서 가져와야 했는지를 뜻합니다. |
| TTL | Time To Live, 캐시된 사본을 보관하는 시간입니다. |
| Cache-Control 헤더 | 무엇을 얼마나 오래 캐시해도 되는지 알려주는 서버의 지시문입니다. |
| 퍼지 / 무효화 | CDN이 캐시된 사본을 즉시 버리도록 하는 것입니다. |
| 캐시 버스팅 | 파일이 바뀌면 이름이나 URL도 바꿔 캐시가 새 파일을 받도록 하는 것입니다. |
| 지연 시간(Latency) | 거리와 네트워크 구간 때문에 생기는 지연입니다. |
브라우저, 서버, 데이터베이스까지 포함한 캐싱 전반은 캐싱이란 무엇인가를 참고하세요.
흔한 오해
- “CDN을 쓰면 모든 것이 빨라진다.” CDN은 파일을 전달하는 속도를 높여 줄 뿐입니다. 서버의 느린 데이터베이스 쿼리나 느린 AI 호출은 여전히 느립니다.
- “CDN이 호스팅을 대신한다.” CDN은 호스팅 앞에 놓이는 것입니다. 여전히 오리진이 필요합니다.
- “사이트를 업데이트하면 모두가 즉시 본다.” 예전 사본이 CDN과 브라우저에 잠시 남아 있을 수 있습니다. 확인하려면 강력 새로고침을 하고, 해시 파일 이름을 사용하세요.
- “캐싱은 항상 안전하다.” 개인화된 페이지를 공유 캐시에 저장하면 실제 개인정보 위험이 생깁니다. 비공개 응답은 캐시하지 않도록 표시해야 합니다.
- “CDN은 대기업만 쓰는 것이다.” 많은 호스트가 작은 사이트에도 별도의 노력 없이 CDN을 포함해 제공합니다.
AI 빌더에 요청할 내용
- “이 사이트 앞에 CDN이 있나요? 어떤 파일을 얼마 동안 캐시하나요?”
- “빌드된 JavaScript, CSS, 이미지에는 해시 파일 이름과 긴 캐시 시간을, HTML에는 짧은 캐시 시간을 설정해 주세요.”
- “로그인 후 페이지나 개인정보가 담긴 API 응답은 공유 캐시에 저장하지 마세요.”
- “갤러리가 빨리 열리도록 이미지를 압축하고 크기를 줄여 주세요.”
- “업데이트를 게시했는데 예전 버전이 보여요. 브라우저 캐시 문제인가요, CDN 문제인가요?”
Mythex와 CDN
Mythex에 게시하면 정적 프런트엔드는 정적 사이트로 배포되며, 문서에 따르면 업데이트 후 CDN 캐시가 잠시 늦게 반영될 수 있습니다. 재게시한 뒤에도 예전 버전이 보이면 공개 URL에서 강력 새로고침을 하세요. 이를 위해 설정할 것은 없습니다. 도메인의 DNS가 Cloudflare에 있는 커스텀 도메인을 연결한다면, Mythex가 HTTPS를 올바르게 발급할 수 있도록 레코드를 프록시 적용이 아닌 “DNS only”로 설정하라고 문서에 안내되어 있습니다. 자세한 내용은 문서의 게시 방법과 커스텀 도메인을 참고하고, 웹 호스팅 전반은 웹 호스팅이란 무엇인가 가이드를 확인하세요.
자주 묻는 질문
CDN이란 간단히 말해 무엇인가요?
CDN(콘텐츠 전송 네트워크)은 여러 지역에 서버를 두고 웹사이트 파일의 사본을 보관하는 네트워크입니다. 방문자는 본 서버 대신 가까운 위치에서 파일을 받기 때문에 페이지가 더 빨리 열리고, 본 서버의 작업량도 줄어듭니다.
사이트를 업데이트했는데 아직 예전 버전이 보이는 이유는 무엇인가요?
보통 예전 파일의 사본이 캐시에 남아 있기 때문입니다. 캐시는 CDN에도 있고 브라우저에도 있을 수 있습니다. 브라우저 쪽은 강력 새로고침으로 해결할 수 있고, CDN의 사본은 시간이 지나면 만료되거나 직접 비울 수 있습니다. 빌드 도구는 바뀐 파일에 새 이름을 붙여 대부분의 문제를 피합니다.
작은 웹사이트에도 CDN이 필요한가요?
많은 호스팅 플랫폼이 사이트 앞에 CDN을 자동으로 두기 때문에, 직접 고르지 않아도 이미 사용 중일 수 있습니다. 자동으로 적용되지 않았고 방문자가 여러 나라에 흩어져 있다면 추가할 만한 가치가 있습니다.
CDN이 앱의 데이터나 로그인한 페이지도 캐시할 수 있나요?
허용된 것이라면 무엇이든 캐시할 수 있기 때문에 신중하게 설정해야 합니다. 이미지, 스크립트, 스타일 같은 공개 파일이 가장 적합합니다. 개인정보가 담겼거나 로그인 후에만 보이는 콘텐츠는 보통 공유 CDN에 캐시하면 안 됩니다. 그렇지 않으면 한 사용자가 다른 사용자의 데이터를 볼 수 있습니다.