실제 서비스에서 자주 사용되는 CDN과 Cloudflare에서 CDN이 어떻게 사용되는지 정리해보았다.
CDN의 필요성
CDN은 content delivery network의 약자로 사용자에게 콘텐츠를 빠르게 전달하기 위해 전 세계 여러 지역에 분산되어 있는 서버 네트워크이다.
일반적인 구조에서 클라이언트가 요청을 보내면 하나의 origin 서버까지 해당 요청을 전송하고, 다시 응답을 보내야 한다.
이 경우 서버와 사용자의 물리적 거리가 멀수록 RTT가 증가하여 지연 시간이 증가하게 된다.
CDN의 기본 개념은 요청을 받는 서버를 세계 이곳저곳에 둬서 사용자가 그 중 빠르게 요청을 보낼 수 있는 서버에 요청을 보내 이런 지연 시간을 줄이는 것이다.
origin 서버를 세계 여러곳에 두는 것은 비효율적인 경우가 많기 때문에 CDN은 리버스 프록시 구조 위에서 동작한다.
리버스 프록시 서버를 세계 여러곳에 둔 후, 그 중 클라이언트가 빠르게 요청을 보낼 수 있는 리버스 프록시 서버가 요청을 받는 방식이다.
CDN의 핵심은 캐싱이다.
이미지나 정적 파일의 경우 CDN의 Edge 서버가 해당 내용을 캐싱해둔다.
이후 같은 요청이 들어온다면 origin 서버까지 요청이 가지 않고, 캐싱해둔 내용을 바로 응답한다.
굳이 멀리 있는 origin 서버까지 가지 않아도 가까운 Edge 서버에서 요청과 응답을 처리해줘 지연시간이 줄어든다
Edge Server
Edge Server는 전 세계에 분산되어 있는 리버스 프록시 역할을 하는 서버들이다.
이 들은 모두 같은 IP를 광고할 수 있고, 사용자가 요청을 보내면 이 중 하나의 Edge Server로 연결된다.
Cloudflare와 같은 서비스들은 미리 전 세계 주요 도시에 Edge Server를 분산시켜 두었고, 클라이언트가 이 중 가장 유리한 Edge Server를 통해 origin 서버와 통신할 수 있게 한다.
CDN 동작 흐름
- 사용자가 도메인으로 요청을 보낸다
- DNS는 CDN 서버의 IP를 반환한다 (Origin 서버 IP가 아님. 리버스 프록시 서버이기 때문)
- 클라이언트는 가장 유리한 CDN Edge 서버에 연결된다
- CDN이 캐시가 있다면 바로 응답한다
- 캐시가 없다면 Edge 서버가 대신 Origin 서버에 요청을 전달하고, 응답을 받아 사용자에게 전달한다
Anycast
상식적으로 각각의 네트워크 장비는 다른 IP를 가지고 있어야 한다.
하지만 CDN의 Edge Server들은 모두 같은 IP를 공유한다.
그렇다면 클라이언트는 이 중 어떤 Edge Server에 요청을 보내는 것일까?
앞에선 가장 유리하다거나 가장 가까운 Edge Server라고 표현했지만 엄밀히 말하면 정확한 표현은 아니다
Edge Server를 선택하는 방식엔 Anycast가 사용된다
Anycast는 하나의 IP를 여러 서버가 동시에 사용하는 방식이다
이 경우 사용자가 해당 IP로 요청을 보내면 네트워크가 직접 여러 Edge Server로 갈 수 있는 여러 경로 중 하나를 선택한다.
이것은 물리적인 거리 뿐만 아니라 각 ISP(SKT, KT 등)의 라우팅 정책, 피어링 상태, 네트워크 경로 상태 등에 영향을 받는다.
즉 여러 Edge Server들이 같은 IP를 공유하고, 클라이언트가 요청을 보내면 같은 IP를 가진 여러 Edge Server 중에서 Anycast 방식으로 네트워크가 직접 선택한 하나의 Edge Server로 요청이 전송된다
'back-end > 🐾 삼냥이즈 기술노트' 카테고리의 다른 글
| pnpm의 동작 원리와 장점 (0) | 2026.04.02 |
|---|---|
| Proxy&Reverse Proxy 동작 방식 (0) | 2026.03.26 |
| DNS의 동작 원리와 조회 과정 (0) | 2026.03.25 |