
CloudFront는 정적데이터 동적데이터 모두 처리 가능하다.
CDN이면 '캐시서버'아닌가? 그럼 정적 파일만 해당하는거 아닌가?
로그인 API, 게시글 조회 같은 동적 요청은 캐싱도 못 하는데
그럼 CloudFront를 왜 쓰는 거지?
결론부터 말하자면,
CloudFront는 동적 데이터를 캐싱하지 않는다.
대신 동적 데이터를 가장 빠른 네트워크 경로로 전달해준다.
CloudFront는 단순한 “캐시 서버”가 아니다.
실제로는 두 가지 모드로 동작한다.
| 구분 | 역할 |
|---|---|
| Cache 모드 | 정적 파일을 Edge Location에 저장 |
| Proxy 모드 | 동적 요청을 가장 빠른 경로로 Origin까지 전달 |
👉 동적 콘텐츠는 Cache 모드가 아니라 Proxy 모드로 처리된다.
예를 들어, 사용자가 아래 API를 호출한다고 해보자.
https://www.example.com/api/posts
한국 → 미국 리전 ALB → EC2 → DB → 다시 한국
사용자
→ 가장 가까운 CloudFront Edge
→ AWS 전용 글로벌 네트워크
→ Origin(ALB)
사용자와 먼 서버 사이를 이미 뚫려있는 전용 고속도로를 이용해 빠르게 접근할 수 있다.
📌 이 방식을 Dynamic Content Acceleration이라고 부른다.
가장 큰 차이는 TCP/IP 핸드셰이크가 어디서 일어나느냐다.
CloudFront 미사용
사용자 ↔ 멀리 있는 원본 서버
TCP 핸드셰이크 + TLS 설정을 먼 거리에서 수행
사용자가 전 세계 어디에 있든 멀리 떨어진 원본 서버(서울, 미국 등)와 직접 "연결할 준비가 됐니?"(TCP Handshake)라며 서너 번의 신호를 주고받아야 합니다. 거리가 멀수록 이 과정에서 시간이 많이 걸립니다.
CloudFront 사용
사용자 ↔ 가장 가까운 Edge Location
물리적 거리가 짧아 초기 연결이 매우 빠름
사용자는 가장 가까운 곳에 있는 CloudFront 엣지 로케이션과 즉시 연결을 맺습니다. 엣지까지의 거리는 매우 가깝기 때문에 초기 연결 속도가 압도적으로 빠릅니다. 그 이후 엣지와 원본 서버 사이는 이미 연결이 뚫려 있는 '고속도로'를 이용하게 됩니다.
👉 즉, 사용자는 가까운 엣지 로케이션과 핸드셰이크(연결)하면된다.
엣지 로케이션은 멀리떨어진 원본서버와 미리 연결되어있는 상태다. (이미 뚫려있는 ‘고속도로’)
이 부분이 성능 향상의 숨은 주역이다.
일반적인 서버 통신
요청마다 연결 생성 → 종료 반복
일반적으로 서버와 통신할 때는 데이터를 주고받을 때마다 연결을 맺고 끊는 과정이 반복됩니다.
CloudFront
Edge ↔ Origin(ALB/EC2) 사이에
이미 수많은 연결을 미리 유지
하지만 CloudFront 엣지 서버는 원본 서버(ALB/EC2)와 이미 수많은 연결을 미리 맺어놓고 유지(Connection Pooling)하고 있습니다.
사용자의 요청이 들어오면, 새로 연결을 만드는 시간을 낭비하지 않고 이미 열려 있는 통로에 데이터를 바로 실어 보냅니다. 이로 인해 왕복 시간(RTT)이 획기적으로 줄어듭니다.
👉 새로 연결을 만드는 시간이 0이다. 이미 뚫려 있는 통로에 요청을 바로 실어 보낸다
데이터가 이동하는 “길” 자체가 다르다.
공용 인터넷
수많은 통신사(ISP)를 거치며 복잡하게 얽혀 있습니다. 트래픽이 몰리는 구간에서 병목 현상이 발생하거나 경로가 길어질 수 있습니다.
AWS 전용 네트워크
CloudFront 엣지에서 원본 서버까지는 전 세계에 깔린 AWS 전용 광섬유 네트워크를 통해 이동합니다. 전용 고속도로를 타는 것과 같아서 지연 시간(Latency)이 일정하고, 공용 인터넷보다 훨씬 안전하고 빠릅니다.
👉 전용 고속도로를 타는 것과 같다.
CloudFront는 네트워크 상태를 실시간으로 감시한다.
개발자가 직접 제어하기 어려운 영역을
AWS가 인프라 레벨에서 대신 처리해준다.
동적 데이터는 반드시 Origin까지 가야 한다.
캐싱이 안 되기 때문이다.
그럼에도 CloudFront가 효과적인 이유는 명확하다.
“동적 데이터라도
체감 응답 속도는 확실히 빨라진다.”