개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

CloudFront — CDN 서비스

2026년 3월 11일
AWSCloudFrontCDNEdge Location

AWS CloudFront는 전 세계 엣지 로케이션(Edge Location)에 콘텐츠를 캐싱하여 사용자에게 가장 가까운 위치에서 빠르게 제공하는 콘텐츠 배포 네트워크(CDN) 서비스입니다. 이미지, CSS, JavaScript 같은 정적 파일부터 동영상 스트리밍, API 응답까지 다양한 콘텐츠를 배포할 수 있습니다. 오리진 서버의 부하를 낮추고 글로벌 사용자에게 낮은 지연 시간을 제공하는 것이 핵심 목적입니다.

CDN(Content Delivery Network): 콘텐츠를 사용자와 지리적으로 가까운 서버에 분산 저장하여 전송 속도를 높이고 오리진 서버 부하를 줄이는 네트워크.

Edge Location

Edge Location은 CloudFront가 콘텐츠를 캐싱하는 전 세계 분산 거점입니다. 2024년 기준 90여 개국 450개 이상의 위치에 운영됩니다. 서울에서 미국 오리진 서버에 직접 요청하면 수백 밀리초가 걸리지만, 서울 Edge Location에 캐시가 있으면 수 밀리초로 단축됩니다.

사용자 (서울)
    |
    v
[Edge Location - 서울]  -- Cache Hit --> 즉시 응답
    |
    | Cache Miss
    v
[Origin - 미국 S3]  --> 콘텐츠 반환 --> Edge에 저장

Origin

Origin은 CloudFront가 콘텐츠를 원본으로 가져오는 소스입니다. Edge에 캐시가 없거나 만료되었을 때 Origin에 요청합니다.

지원하는 Origin 유형은 다음과 같습니다.

Origin 유형설명
S3 Bucket정적 파일, 웹사이트
ALB동적 웹 애플리케이션
EC2커스텀 서버
API GatewayREST/HTTP API
외부 HTTP 서버AWS 외부 서버도 가능

하나의 CloudFront 배포에 여러 Origin을 등록하고, URL 경로에 따라 다른 Origin으로 요청을 분기할 수 있습니다.

Cache 동작

CloudFront는 Cache Key를 기준으로 캐시를 관리합니다. 기본 Cache Key는 URL 경로이며, 쿼리 파라미터, 헤더, 쿠키를 포함하도록 설정할 수 있습니다.

TTL은 캐시 항목의 유효 시간입니다. Origin의 응답 헤더(Cache-Control, Expires)를 우선 적용하며, 없으면 CloudFront의 기본값(24시간)을 사용합니다.

캐시 무효화(Invalidation)는 Origin의 파일이 변경되었을 때 Edge의 오래된 캐시를 강제로 제거하는 작업입니다.

aws cloudfront create-invalidation \
  --distribution-id XXXXX \
  --paths "/images/*" "/index.html"

파일 이름에 버전 해시를 포함하는 방식(예: app.a1b2c3.js)을 사용하면 무효화 없이도 항상 최신 파일을 제공할 수 있어 더 효율적입니다.

S3와 함께 쓰는 패턴

CloudFront + S3 조합은 정적 웹사이트 호스팅의 표준 패턴입니다. S3 Bucket을 퍼블릭으로 열지 않고 OAC(Origin Access Control)를 사용하면 CloudFront를 통해서만 S3 파일에 접근할 수 있어 보안이 강화됩니다.

사용자
  |
[CloudFront]  <-- HTTPS, 글로벌 캐싱
  |
[S3 Bucket]   <-- OAC로 직접 접근 차단, 퍼블릭 차단

React, Next.js 정적 빌드 파일을 S3에 업로드하고 CloudFront를 앞에 두는 구성이 대표적입니다.

ALB와 함께 쓰는 패턴

동적 콘텐츠와 정적 콘텐츠를 CloudFront에서 경로로 분기하는 패턴도 자주 사용됩니다.

사용자
  |
[CloudFront]
  |
  |-- /api/*       --> Origin: ALB (동적 처리)
  |-- /static/*    --> Origin: S3 (정적 파일 캐싱)

ALB Origin에 대해서는 캐싱을 비활성화(TTL=0)하거나 짧은 TTL을 설정하고, S3 Origin의 정적 파일은 긴 TTL로 캐싱합니다. 이 구성은 동적 API 응답은 항상 최신 값을 유지하면서 정적 파일은 CloudFront에서 빠르게 서빙하는 효율적인 아키텍처입니다. 또한 ALB를 외부에 노출하지 않고 CloudFront에서만 접근을 허용하면 DDoS 방어와 보안 향상 효과도 얻을 수 있습니다.

← 이전 글Route 53 — DNS 서비스
다음 글 →Lambda — 서버리스 함수 실행