CDN: 전 세계적으로 분산된 서버 네트워크로, 콘텐츠를 사용자와 가까운 위치에서 제공하여 웹사이트나 애플리케이션의 속도, 안정성, 확장성을 개선하는 시스템.
일반적인 웹 사이트:
모든 요청이 중앙 서버 (원본 서버)로 전달된다. 이는 요청 수가 많아질수록 서버의 부담이 커지고 응답속도가 느려진다.
CDN 활용한 웹 사이트:
콘텐츠를 미리 분산된 엣지 서버에 캐싱하여 요청을 처리한다.
유저의 요청은 가장 가까운 엣지 서버에 전달되어 응답시간이 짧다.
작동방식
1-1. 유저가 콘텐츠 요청:
1-2.- 가장 가까운 엣지 서버로 라우팅:
1-3. 캐싱 동작
비용
2-1. 데이터 전송량:
2-2. 요청 수:
2-3. 추가 기능:
CDN의 핵심 구성요소로 전 세계 여러 지역에 분산 배치된 데이터 센터.
유저 요청 처리:
=> 웹 사이트나 애플리케이션에 접속하면, DNS는 유저의 지리적 위치를 기준으로 가장 가까운 엣지 로케이션에 요청을 라우팅한다.
캐싱된 콘텐츠 제공:
=> 엣지 로케이션에 요청한 콘텐츠가 이미 캐싱되어 있다면, 해당 콘텐츠를 즉시 제공(캐시 히트)한다.
원본 서버에서 콘텐츠 가져오기
=> 요청한 콘텐츠가 엣지 로케이션에 없으면, 원본 서버에서 데이터를 가져와 제공한다.
가져온 콘텐츠는 엣지 로케이션에 캐싱되어 이후 요청 시 사용된다.
동적 콘텐츠 요청
=> 일부 동적 콘텐츠 (API응답, 사용자데이터)는 원본 서버와의 통신을 통해 실시간으로 제공되며, 엣지 로케이션은 데이터 전달을 최적화한다.


원본 액세스 설정
실습용이기 때문에 "공개"로 설정하지만 실무에서는 "원본 액세스 제어 설정"으로 한다.
1. 직접 액세스 방지
- OAC를 사용하면 사용자가 S3 버킷에 직접 접근하는 것을 막을 수 있다.
- 모든 요청은 반드시 CloudeFront를 거쳐 가야 한다.
- 보안
- S3 버킷의 콘텐츠를 공개적으로 접근 가능하게 설정할 필요가 없어 잠재적인 보안 위협을 줄일 수 있다.
- 세분화된 접근 제어
- CloudFront를 통해 누가,어떤 조건에 콘텐츠에 접근할 수 있는지 세밀하게 제어할 수 있다.
- HTTPS 강제
- CloudFront를 통해 HTTPS 연결을 강제할 수 있어 데이터 전송 중 보안을 크게 향상시킨다.
- 비용 최적화
- S3에 직접 접근하는 요청을 줄임으로써, 불필요한 데이터 전송비용을 절감한다.
- 지리적 제한
- CloudFront의 지리적 제한 기능을 활용하여 특정 지역에서만 콘텐츠에 접근할 수 있도록 설정할 수 있다.
- 캐싱 효율성
- 모든 요청이 CloudFront를 통과함으로 캐싱 효율성을 극대화할 수 있다.
- 확장성
- Web Application Firewall이나 Lamda@Edge와 같은 추가 보안 레이어를 쉽게 통합할 수 있다.
기본 캐시 동작 섹션의 뷰어 항목에서 뷰어 프로토콜 정책을 'Redirect HTTP to HTTPS'로 설정

뷰어 프로토콜 정책을 ‘Redirect HTTP to HTTPS’로 설정하면 사용자(뷰어)가 웹사이트에 접근할 때 HTTP 방식으로 요청을 보내도 HTTPS로 자동 리다이렉트 된다. 이는 보안을 강화하면서 HTTP링크의 호환성을 유지할 수 있어, 프론트엔드 개발을 비롯한 다양한 케이스에서 권장된다.
WAF 비활성화 선택

실습용이므로 비활성화 조치
배포 생성 버튼 클릭
S3, CloudFront
사용자가 CloudFront URL을 통해 콘텐츠 요청
요청은 사용자와 가까운 엣지 로케이션으로 라우팅
엣지 로케이션은 해당 콘텐츠가 캐시되어 있는지 확인
캐시에 없다면 원본(S3 버킷)에서 콘텐츠를 가져온다
가져온 콘텐츠를 사용자에게 제공하고 캐싱
=> 이 후, 요청에 있어서 캐싱된 데이터를 활용함으로 원본(S3)서버에 대한 요청을 줄일 수 있고 이를 통해 빠른 속도로 콘텐츠를 제공할 수 있다.
🎈캐시 수명(TTL): 콘텐츠가 엣지 로케이션에 얼마나 오래 저장될지 설정할 수 있다.
🎈동적 콘텐츠: 항상 최신 상태이어야 하는 동적 콘텐츠의 경우, 캐시 설정을 조정하여 더 자주 원본에서 가져오도록 할 수 있다.
CloudFront 배포를 생성하면 배포 도메인 이름을 할당받게 된다.

브라우저에 도메인 이름 을 입력해 수동으로 S3에 올린 정적 파일들을 브라우저에서 확인할 수 있다.
cloudFront에 요청한 콘텐츠는

X-cache: Hot from cloudfront 헤더가 붙는다.
또한 압축되어 서빙된 것을 확인할 수 있다.