최근 본 글

    웹사이트가 빨라지는 원리 CDN

    미국 서버에 있는 사이트가 한국에서 빠르게 열리는 비밀

    CDN이란? 웹사이트가 빨라지는 원리 쉽게 이해하기

    유튜브 영상은 전 세계 어디서 틀어도 금방 재생되고, 해외 쇼핑몰도 생각보다 빠르게 열리죠. 그런데 서버가 지구 반대편에 있다면 데이터가 바다 건너 오가는 데만 시간이 꽤 걸릴 텐데, 어떻게 이렇게 빠를까요?

    그 비밀이 바로 CDN(Content Delivery Network, 콘텐츠 전송 네트워크)이에요. 저도 블로그를 운영하면서 이미지가 많은 글이 유독 느리게 열리는 문제로 고민하다가 CDN을 알게 됐는데, 원리를 이해하고 나니 “아, 이래서 큰 사이트들이 다 쓰는구나” 싶더라고요. 이 글에서는 CDN이 무엇이고, 어떤 원리로 웹사이트를 빠르게 만드는지 쉽게 정리해 볼게요.

    택배로 이해하는 CDN

    온라인 쇼핑몰에서 물건을 주문했다고 해볼게요. 만약 모든 물건이 경기도에 있는 본사 창고 한 곳에만 있다면, 제주도나 부산에 사는 사람은 배송을 오래 기다려야 하겠죠. 주문이 몰리면 본사 창고도 감당을 못 하고요.

    그래서 큰 쇼핑몰들은 전국 곳곳에 물류 거점을 두고, 잘 팔리는 물건을 미리 옮겨둬요. 부산 사람이 주문하면 부산 근처 거점에서 바로 보내주니 빠르고, 본사 창고의 부담도 줄어들죠.

    CDN도 똑같은 원리예요. 웹사이트의 원래 서버(본사 창고)는 한 곳에 있지만, 전 세계 곳곳에 있는 CDN 서버(물류 거점)에 이미지, 영상, 파일 같은 콘텐츠를 미리 복사해 둬요. 그리고 방문자가 사이트에 접속하면 가장 가까운 CDN 서버가 대신 콘텐츠를 전달해 주는 거예요.

    CDN을 이해하는 핵심 용어

    오리진 서버(Origin Server)는 웹사이트의 원본 데이터가 있는 진짜 서버예요. 택배 비유에서 본사 창고에 해당해요.

    엣지 서버(Edge Server)는 전 세계 곳곳에 흩어져 있는 CDN 서버예요. 사용자와 가까운 “가장자리(edge)”에 있다고 해서 이렇게 불러요. 물류 거점 역할이죠.

    PoP(Point of Presence)는 엣지 서버들이 모여 있는 거점 위치를 말해요. 큰 CDN 업체들은 세계 주요 도시마다 PoP를 두고 있어요.

    캐시(Cache)는 자주 쓰는 데이터를 가까운 곳에 임시로 저장해 두는 것을 말해요. CDN이 오리진 서버의 콘텐츠를 엣지 서버에 복사해 두는 게 바로 캐싱이에요.

    CDN은 이렇게 동작해요

    한국에 사는 사용자가 미국에 서버가 있는 웹사이트에 접속하는 상황으로 흐름을 따라가 볼게요.

    [CDN 없이]
    한국 사용자 ───── 태평양 건너 ─────> 미국 오리진 서버
              <──── 태평양 건너 ──────
              (멀어서 느리고, 모든 요청이 한 서버로 몰림)
    
    [CDN 사용]
    한국 사용자 ──> 서울 엣지 서버 (캐시 있음) ──> 바로 응답!
                         │
                         └─ 캐시 없을 때만 ──> 미국 오리진 서버

    1단계. 가장 가까운 엣지 서버로 연결

    사용자가 사이트 주소를 입력하면, CDN은 사용자의 위치를 파악해서 가장 가깝거나 가장 빠르게 응답할 수 있는 엣지 서버로 연결해 줘요. 주로 도메인 주소를 IP 주소로 바꿔주는 DNS 단계에서 이 작업이 이뤄지거나, 여러 서버가 같은 IP 주소를 공유하면서 네트워크상 가장 가까운 곳으로 자연스럽게 연결되는 방식(애니캐스트)을 써요.

    2단계. 캐시에 있으면 바로 전달 (캐시 히트)

    서울 엣지 서버에 요청한 이미지가 이미 저장돼 있다면, 미국까지 갈 필요 없이 서울에서 바로 전달해요. 이걸 캐시 히트(Cache Hit)라고 해요. 이동 거리가 확 줄어드니 로딩 속도가 빨라지죠.

    3단계. 캐시에 없으면 오리진에서 가져오기 (캐시 미스)

    엣지 서버에 아직 저장된 게 없다면, 엣지 서버가 오리진 서버에 가서 콘텐츠를 가져와요. 이걸 캐시 미스(Cache Miss)라고 해요. 이때 가져온 콘텐츠를 엣지 서버에 저장해 두기 때문에, 다음 사용자부터는 캐시 히트로 빠르게 받을 수 있어요. 그래서 첫 방문자만 조금 느리고, 이후 방문자들은 빨라지는 구조예요.

    4단계. 정해진 시간이 지나면 새로 가져오기

    캐시에 한 번 저장했다고 영원히 그 데이터를 쓰면, 원본이 바뀌어도 사용자는 옛날 버전을 보게 되겠죠. 그래서 캐시에는 유효 기간(TTL, Time To Live)이 있어요. 유효 기간이 지나면 엣지 서버는 오리진 서버에 최신 버전을 다시 확인해요.

    이 유효 기간은 보통 웹 서버가 응답할 때 보내는 HTTP 헤더로 정해요. 예를 들어 아래처럼 설정하면 “이 파일은 1년 동안 캐시해도 된다”는 뜻이에요.

    Cache-Control: public, max-age=31536000

    로고 이미지처럼 거의 바뀌지 않는 파일은 유효 기간을 길게, 자주 바뀌는 파일은 짧게 설정하는 게 일반적이에요. 급하게 파일을 바꿔야 할 때는 CDN 관리 화면에서 캐시를 강제로 지우는 퍼지(Purge) 기능을 쓰면 돼요.

    CDN을 쓰면 좋아지는 점

    속도가 빨라져요. 가장 큰 장점이에요. 데이터가 이동하는 물리적 거리가 줄어들면서 페이지 로딩 시간이 짧아져요. 방문자는 느린 사이트에서 금방 떠나기 때문에, 속도는 곧 방문자 체류 시간과 검색 노출에도 영향을 줘요.

    서버 부담이 줄어요. 이미지나 파일 요청의 상당 부분을 엣지 서버가 대신 처리하니까, 오리진 서버는 꼭 필요한 요청만 처리하면 돼요. 서버 사양을 무리하게 올리지 않아도 더 많은 방문자를 감당할 수 있어요.

    트래픽 폭주에 강해져요. 글 하나가 갑자기 화제가 돼서 방문자가 몰려도, 요청이 전 세계 엣지 서버로 분산되니 사이트가 쉽게 다운되지 않아요.

    보안이 강화돼요. 많은 CDN이 대량의 트래픽을 보내 사이트를 마비시키는 DDoS 공격을 막아주는 기능을 함께 제공해요. 또 오리진 서버의 실제 주소를 숨길 수 있어서 서버가 직접 공격받을 위험도 줄어들어요.

    HTTPS 적용이 쉬워져요. 상당수 CDN이 SSL 인증서를 자동으로 발급하고 관리해 줘요. HTTPS가 왜 중요한지는 이전 글 “HTTP와 HTTPS의 차이점 및 SSL 보안 인증서가 필수인 이유”에서 자세히 다뤘어요.

    데이터 전송 비용을 아낄 수도 있어요. 클라우드 서버는 서버에서 밖으로 나가는 데이터에 요금이 붙는 경우가 많은데, CDN이 대부분의 전송을 대신 처리하면 이 비용이 줄어들 수 있어요. 클라우드 요금 구조는 “클라우드 서버 추천 총정리” 글에서 설명했어요.

    CDN이 잘하는 것과 못하는 것

    CDN은 누가 봐도 똑같은 콘텐츠, 즉 정적 콘텐츠를 전달할 때 가장 효과가 커요. 이미지, 동영상, CSS와 자바스크립트 파일, 폰트, 다운로드 파일 같은 것들이죠.

    반대로 사람마다 다르게 보여줘야 하는 동적 콘텐츠는 캐시하기 어려워요. 로그인한 사용자의 마이페이지, 장바구니, 실시간 주식 가격 같은 건 사용자마다 다르고 계속 바뀌니까, 결국 오리진 서버가 직접 처리해야 해요. 요즘 CDN은 이런 요청도 최적화된 경로로 빠르게 전달하는 기능을 제공하지만, 정적 콘텐츠만큼 극적인 효과를 기대하긴 어려워요.

    참고로 채팅처럼 실시간 양방향 통신을 하는 웹소켓 연결도 CDN을 통과시킬 수 있는데, CDN마다 지원 여부와 조건이 다르니 확인이 필요해요. 웹소켓의 원리는 “웹소켓과 HTTP 통신의 차이점” 글에서 정리했어요.

    대표적인 CDN 서비스

    전 세계적으로 많이 쓰이는 CDN으로는 클라우드플레어(Cloudflare), 아카마이(Akamai), AWS의 클라우드프론트(CloudFront), 패스틀리(Fastly) 등이 있어요. 구글 클라우드나 애저 같은 클라우드 업체들도 자체 CDN을 제공하고, 국내 클라우드 업체들도 CDN 상품을 운영해요.

    개인 블로그 운영자에게 가장 많이 쓰이는 건 클라우드플레어예요. 무료 요금제가 있어서 부담 없이 시작할 수 있고, 도메인의 네임서버만 바꿔주면 CDN과 기본 보안 기능이 함께 적용돼요.

    워드프레스 블로그에 CDN 적용할 때 팁

    먼저 호스팅을 확인하세요. 요즘은 호스팅 업체가 CDN을 기본으로 포함하거나 버튼 하나로 켤 수 있게 해주는 경우가 많아요. 따로 설정하기 전에 호스팅 관리 페이지부터 살펴보세요.

    캐시 플러그인과 함께 쓰면 효과가 커요. 워드프레스는 페이지를 매번 새로 만들어 보여주는 방식이라, 캐시 플러그인으로 페이지 자체를 저장해 두고 CDN으로 이미지와 파일을 전달하면 체감 속도가 확 달라져요.

    관리자 페이지는 캐시하지 마세요. 로그인 페이지나 관리자 화면이 캐시되면 다른 사람에게 내 화면이 보이는 사고가 날 수도 있어요. 대부분의 CDN과 플러그인은 기본적으로 이런 페이지를 제외하지만, 설정을 바꿀 때는 꼭 확인하세요.

    글을 수정했는데 반영이 안 된다면 캐시 때문일 가능성이 커요. 플러그인과 CDN 양쪽에서 캐시를 비워보세요.

    CDN이 만능은 아니에요. 이미지 용량 자체가 너무 크거나 무거운 플러그인이 잔뜩 설치돼 있다면 CDN만으로는 한계가 있어요. 이미지를 적당한 크기로 줄이고 WebP 같은 가벼운 형식으로 바꾸는 것, 불필요한 플러그인을 정리하는 것도 함께 해주세요.

    마치며

    정리하면, CDN은 웹사이트의 콘텐츠를 전 세계 곳곳의 물류 거점에 미리 복사해 두고, 방문자와 가장 가까운 곳에서 전달해 주는 서비스예요. 덕분에 사이트는 빨라지고, 서버는 덜 힘들고, 트래픽 폭주와 공격에도 강해져요.

    우리가 매일 쓰는 유튜브, 넷플릭스, 쇼핑몰이 빠르게 느껴지는 데에는 이런 보이지 않는 인프라가 숨어 있었던 거죠. 블로그를 운영 중이라면 무료 CDN부터 한번 적용해 보세요. 궁금한 점은 댓글로 남겨주세요!

    ※ CDN 서비스별 요금제와 기능은 수시로 바뀔 수 있으니, 적용 전 각 서비스의 공식 안내를 확인해 주세요. 네임서버 변경 등 설정 작업 전에는 사이트 백업을 권장해요.

    댓글 0

    댓글 남기기