[AWS] CloudFront - CDN 서비스

박하늘·2025년 4월 1일

AWS

목록 보기
2/4
post-thumbnail

▪️ Cloud Front

CloudFront는 AWS에서 제공하는 CDN 서비스로, 글로벌 엣지 로케이션(Edge Location)을 활용하여 콘텐츠를 캐싱하고 빠르게 제공하는 역할
즉, AWS의 서비스 중 컨텐츠(파일 동영상 등)을 빠르게 전송하게 해주는 CDN 서비스이다

[ 사례 ]

컨텐츠(파일, 동영상)는 S3라는 곳에 저장될 것이다.
하지만 그 S3 저장소가 한국에 있다고 가정하자. 그러면 한국 사용자는 S3와 거리가 가까우므로 데이터를 빠르게 전송받을 수 있다.
하지만 미국에 있는 사용자가 S3로부터 데이터를 전송받으려면 거리가 멀어 시간이 오래 걸리게 된다. 

이런 문제를 해결하기 위해 전세계 곳곳에 컨텐츠(파일, 동영상)의 복사본을 저장해놓을 수 있는 임시 저장소를 구축한다. 
그러면 미국에 있는 사용자가 컨텐츠를 전송받고 싶을 때, 가장 가까운 임시 저장소에서 컨텐츠를 가져오면 훨씬 속도가 빨라진다.
  • 저장소와의 거리를 임시 저장소를 구비함으로써 전송 거리를 짧게 유지하여 빠르게 받을 수 있도록 해준다

    이런 형태의 서비스를 CDN 이라고 부르며 CDN은 전 세계 여러 위치에 분산된 서버를 통해 콘텐츠(이미지, 동영상, 웹페이지 등)를 사용자에게 빠르게 전달하는 네트워크이다.

Cloud Front 필요성

  • 콘텐츠 로딩 속도 향상 – 지리적으로 가까운 엣지 서버에서 콘텐츠 제공 → 성능 향상
  • 서버 부하 감소 – 캐싱을 통해 원본 서버의 요청을 줄여 비용 절감
  • 보안 강화 – AWS Shield, WAF와 통합하여 DDoS 및 악성 요청 차단
  • 유연한 비용 절감 – 사용량 기반 과금으로 효율적 운영
  • SSL/TLS 지원 – HTTPS를 기본적으로 제공하여 보안 강화 (S3에는 HTTPS를 적용시키는 기능 미제공)

📍 현업에서 웹 서비스를 배포할 때 실제로 S3와 CloudFront를 많이 활용

CloudFront의 작동 과정

- 사용자가 웹사이트에 접속
- CloudFront는 요청을 가장 가까운 임시 저장소(CloudFront)에서 처리
- 해당 CloudFront에 요청하는 파일이 있다면 바로 응답
- 없다면 오리진 서버(S3, EC2 등) 에서 가져와 CloudFront에 저장한 뒤 응답
- 이후 동일한 요청은 클라우드프론트에서 빠르게 응답



▪️ S3, CloudFront를 활용한 아키텍처 구성

  • S3 만 사용 시..
    Users -> S3
    S3 에 도메인 주소로 요청을 보내면, 바로 S3 에서 필요한 객체들을 다운 받아와서 화면에 띄워주는 형식

  • CloudFront 사용 시 ...

    📌 1. 사용자가 웹사이트에 접속 (User → CloudFront 요청)
    • 사용자가 브라우저에서 CloudFront 도메인(d12345.cloudfront.net)에 접속
    • CloudFront는 CDN 역할을 하며, 사용자의 가장 가까운 엣지 로케이션(Edge Location)에서 요청을 처리

    📌 2. CloudFront가 캐시 확인 (CloudFront 내부 처리)
    • CloudFront는 엣지 서버에 캐시된 콘텐츠가 있는지 확인
    • 캐시 HIT (데이터 있음) → 즉시 응답
    • 캐시 MISS (데이터 없음) → S3로 요청 전달

    📌 3. S3에서 정적 파일 가져오기 (CloudFront → S3)
    • 캐시가 없거나 만료되었을 경우, CloudFront는 S3 원본(Origin) 에 파일 요청
    • S3에서 HTML, CSS, JS, 이미지 등의 정적 파일 제공

    📌 4. CloudFront가 응답 (CloudFront → User)
    • CloudFront는 받은 데이터를 엣지 서버에 저장(캐싱)
    • 이후 같은 요청이 오면 빠르게 캐싱된 데이터 제공

[요약]

- User → CloudFront 요청
- CloudFront 캐시 확인
	• 캐시 있음 → 바로 응답
 	• 캐시 없음 → S3에 요청
- S3에서 정적 파일 제공
- CloudFront가 사용자에게 응답 및 캐싱
- 다음 요청부터는 CloudFront 캐시에서 빠르게 제공

▪️ CloudFront 생성

1️⃣ Create a CloudFront distribution (CloudFront 배포 생성) 클릭


2️⃣ Origin Domain 에 설정할 버킷 선택 및 S3 웹사이트 엔드포인트 사용 클릭


3️⃣ http 보안 옵션

  • HTTP 로 요청이 들어와도 HTTPS 로 적용 후 요청
  • EX) http://naver.com 으로 입력 후 접속하여도 https://naver.com 으로 자동 접속

4️⃣ 웹 애플리케이션 방화벽

  • 보안보호 비활성화 해도 무방

5️⃣ 위치 선택 (가격)

  • 전체 지역에 사용할 것이 아니면 본인이 사용할 지역 저장소에만 리소스를 보내는 것을 추천, 하지만 그 외 지역에 전송 시 속도 저하 가능성 있음

6️⃣ 화면으로 반환할 객체명 작성

  • Bucket 생성 시 기본 MAIN 객체(파일)index.html 으로 설정했으므로 동일하게 설정

7️⃣ 배포 생성 클릭 !


8️⃣ 배포 현황 확인

  • Deploying 배포중 ... - 이는 배포 설정 시 선택한 임시 저장소로 리소스 복사본을 배포 중임
  • 완료 후 도메인 주소 복사 후 검색 시 외부에서도 접근 가능 !

0개의 댓글