Amazon CloudFront와 CDN 정리

1023·2026년 9월 27일
post-thumbnail

CDN

CDN(Content Delivery Network)은 콘텐츠를 효율적으로 전달하기 위해 여러 지역에 분산된 노드(엣지 로케이션)에 데이터를 캐싱해두는 네트워크다. 사용자가 요청할 때마다 매번 본래 서버(오리진)까지 갔다 오는 게 아닌 사용자와 가장 가까운 엣지 로케이션에 미리 저장해둔 데이터를 빠르게 내려주는 방식이다.

[CDN 없이]
사용자(한국) ──────(먼 거리)──────▶ 오리진 서버(미국)

[CDN 사용]
사용자(한국) ──(가까움)──▶ 엣지 로케이션(한국 인근) ──(캐시 없을 때만)──▶ 오리진 서버(미국)

Amazon CloudFront란

CloudFront는 AWS가 제공하는 CDN 서비스로 짧은 지연 시간과 빠른 전송 속도로 데이터/동영상/API를 전 세계 사용자에게 전달한다. 오리진으로 S3 버킷(정적 콘텐츠), EC2/ELB(동적 콘텐츠), 심지어 AWS 외부의 HTTP 서버까지 지정할 수 있다.

EX) S3에 정적 파일을 저장해두고 그 앞단에 CloudFront를 붙이면 전 세계 어디서 접속해도 가까운 엣지 로케이션에서 빠르게 받아볼 수 있는 구조가 되는 것이다.

작동 방식

요청 처리 흐름

Client ──요청──▶ EdgeServer ──캐시 여부 확인──┬─[캐시 있음]──▶ 바로 응답
                                              └─[캐시 없음]──▶ OriginServer에 요청 포워딩
                                                              ──데이터 획득──▶ 캐싱 후 응답

첫 요청이 들어오면 엣지 로케이션에 캐시가 있는지 먼저 확인하고 없으면 그때서야 오리진 서버까지 가서 데이터를 받아와 캐싱한 뒤 응답한다. 그 다음부터 같은 콘텐츠를 요청하는 사용자는 오리진까지 갈 필요 없이 엣지에 저장된 캐시로 바로 응답받는다.

캐시 무효화(Invalidation)

CloudFront는 캐시된 콘텐츠를 TTL(Time to Live) 동안 유지하는데 TTL을 길게 설정해두면 오리진의 콘텐츠가 바뀌어도 그 변경이 사용자에게 바로 반영되지 않는다. 이럴 때 무효화(Invalidation)를 통해 특정 파일이나 경로의 캐시를 강제로 삭제하면 다음 요청부터는 캐시가 없는 상태이므로 오리진에서 최신 콘텐츠를 다시 가져와 캐싱한다.

S3에 새 이미지 업로드 → CloudFront에 Invalidation 요청 → 기존 캐시 삭제 → 다음 요청 시 최신 이미지로 재캐싱

캐싱을 오래 유지할수록 속도는 빨라지지만 최신 데이터 반영은 늦어지고 반대로 TTL을 짧게 잡거나 자주 무효화하면 최신성은 확보되지만 캐싱의 이점이 줄어드는 균형점을 찾아야 하는 것 같다.

다른 서비스와의 관계

CloudFront는 통합 보안 기능(AWS Shield, WAF, SSL/TLS)도 제공하고, CloudWatch와 연동한 로그/모니터링도 지원한다고 한다. 저번에 정리했던 ELB와 비교해보면 ELB는 여러 백엔드 서버 사이의 부하를 분산하는 서비스고, CloudFront는 사용자와 가까운 곳에 콘텐츠 자체를 캐싱해서 오리진까지 가는 요청 자체를 줄여주는 서비스라는 차이가 있다. 트래픽을 다루는 위치가 서로 다른 것. (ELB는 오리진 쪽(서버들 사이)에서, CloudFront는 사용자와 가장 가까운 엣지 쪽에서 트래픽을 처리)


📍 출처: 패스트캠퍼스 강의 - 실전 DevOps의 모든 것

0개의 댓글