[AWS] CloudFront

gyeol·2025년 9월 30일

AWS

목록 보기
9/20
post-thumbnail

CloudFront

  • 전세계 사용자에게 지연시간을 줄여 콘텐츠를 빠르게 제공하는 글로벌 콘텐츠 전송 네트워크(CDN)
  • 웹사이트 성능 개선 및 다운로드 속도 개선에 활용
주요 이점설명
성능 향상CloudFront는 가장 가까운 엣지 로케이션에 콘텐츠 미리 복사(캐싱)
→ 사용자가 웹사이트 접속 시, 가장 가까운 엣지 로케이션 콘텐츠 전송받음
- 이미지 업로드 및 다운로드 시 지연 문제 개선
- 모바일 앱에서 대용량 비디오 스트리밍 시 버퍼링 및 재생 문제 감소
- 페이지 로딩 속도 빠르게 개선해 지연 시간 최소화
- 전세계 사용자에게 정적 및 동적 데이터 지연없이 전달
확장성수백만 건의 조회 또는 요청을 처리할 수 있어 글로벌 웹사이트 수요 충족 및 확장 가능
→ 대부분 엣지 로케이션에서 요청을 처리하기에 원본 서버의 부하 크게 줄어듦
비용 효율원본 서버에서 사용자에게 직접 전달해주는게 아닌, 엣지 로케이션에서 전송하기에 비용 효율적
→ AWS 서비스(S3, EC2인 경우, 원본에서 CloudFront로 데이터 전송 비용은 무료)
- 오리진에 대한 요청을 줄여 컴퓨팅 비용을 최적화하고 비용 증가 우려 해소
- 데이터 전송 비용을 절감하면서 성능 유지하거나 개선
- 서버를 운영할 필요없이 비용 관리 최소화
- 가장 미율 효율적인 솔루션
고가용성 및 복원력대규모 DDoS 공격을 완화하고 다운 타임 허용하지 않음

엣지 로케이션?

엣지 로케이션은 AWS의 CDN인 CloudFront를 위해 전세계 주요 도시에 분산된 캐시 서버
→ CDN(Contents Delivery Network)은 콘텐츠를 빠르게 전송하는 기술을 말함

Cloud Front Origin 구성

  • Cloud Front Origin이란?
    CloudFront가 사용자에게 전달할 콘텐츠를 가져오는 원본 서버 또는 스토리지 위치를 말함
  • Origin 유형
유형설명
S3 버킷정적 데이터를 저장하고 서비스하는데 가장 일반적으로 사용

- 정적 웹사이트 호스팅
- 정적 데이터, 이미지, 비디오 파일 등
- 데이터 세트 판매나 파일 공유 애플리케이션에 사용
- 기밀 미디어 파일 캐싱에 사용
EC2 인스턴스,ALB사용자 요청에 따라 실시간으로 콘텐츠가 변하는 동적 데이터 처리에 사용

- 정적, 동적 데이터 모두 호스팅
- 기존 웹 애플리케이션의 성능을 개선하고 전 세계 사용자에게 빠르게 제공
온프레미스 서버AWS 외부인 기업 자체 데이터 센터에 있는 서버도 오리진으로 지정 가능
→ 기존 온프레미스 시스템의 글로벌 로딩 속도 즉시 최적화 가능
→ 기존의 서버 그대로 사용하기에 전송 속도 개선

CloudFront 캐싱 전략 및 성능 최적화

CloudFront의 핵심은 캐싱. 오리진에서 가져온 콘텐츠를 전세계 엣지 로케이션에 일정 시간동안 저장해두고 다음 요청부터는 오리진까지 가지 않고 가까운 엣지 로케이션에서 즉시 응답

  • 캐싱 기본 설정
    • CloudFront의 기본 TTL(Time-To-Live, 엣지 로케이션에 얼마동안 저장할지?)을 적절히 설정해 캐싱 구현
    • S3 객체에 Cache-Control max-age 헤더를 설정해 캐싱 정책 제어 가능
  • 캐시 무효화
    콘텐츠 업데이트 이후 CloudFront 캐시 무효화를 수행해 기존 캐시를 강제로 삭제하고 최신 콘텐츠 즉시 제공하여 사용자가 항상 최신 버전을 볼 수 있도록
  • S3 Transfer Acceleration과 연동
    사용자가 S3 버킷으로 대용량 파일 업로드시, CloudFront의 최적화된 네트워크를 이용해 업로드 속도 향상시킬 수 있음
  • Elastic Transcoder와의 연동
    원본 비디오를 다양한 디바이스에 최적화된 형식으로 자동 변환해 재생 품질을 높이고 버퍼링 줄임

CloudFront 보안 기능

  • OAI(Origin Access Identity) 및 OAC (Origin Access Control)

    • S3 URL로의 직접 접근근을 막고 CloudFront를 통해서만 콘텐츠에 접근하도록 설정
    • CloudFront가 S3 버킷에 파일을 업로드하도록 허용하기 위해 OAC를 사용해 버킷 정책 구성
  • Signed URLs 및 Signed Cookies

    • 특정 사용자에게만 콘텐츠 접근 권한 부여할 때 사용
    • 일정 시간동안만 유효한 URL이나 쿠키를 생성해 허가된 사용자만 콘텐츠 접근하도록 함
    • 사용자 검증 단계를 거쳐 검증에 성공하면 signed urls 제공
  • AWS WAF 연동
    웹 방화벽인 AWS WAF를 CloudFront에 적용해 SQL 인젝션, 크로스 사이트 스크립팅(XSS)과 같은 악의적인 웹 공격 트래픽을 필터링할 수 있음

  • Field-Level Encryption
    민감한 정보가 전체 애플리케이션 스택을 통해 보호

  • Geo Restriction

    특정 국가에만 콘텐츠 접근을 허용하거나 차단해 콘텐츠의 단계적 롤아웃이나 저작권 이미지 접근 제어로 활용

  • HTTPS/TLS 구성

    • 애플리케이션 스택 전체에서 HTTPS를 사용하도록 해 데이터가 중간에 탈취되는 것을 방지
    • 오리진에서 HTTPS를 지원하지 않아도 HTTPS 통신을 알아서 해줌

CloudFront - Lambda@Edge

  • Lambda@Edge는 Amazon CloudFront의 기능으로 전 세계에 분산된 엣지 로케이션에서 Lambda 함수를 실행하여 사용자의 요청과 응답을 실시간으로 처리하고 수정할 수 있게 해주는 기술.
  • 사용자와 더 가까운 위치에서 코드를 실행함으로써 지연 시간을 줄이고 원본 서버의 부담을 덜어줌
  • User-Agent 헤더를 기반으로 사용자 장치에 따라 다른 버전의 콘텐츠 동적 제공
  • 다국어 지원

다음과 같을 때 사용

  • 사용자의 디바이스(User-Agent)에 따라 PC용 또는 모바일용 페이지로 자동 연결
  • 사용자의 언어 설정(Accept-Language)에 맞춰 해당 언어의 페이지를 표시
  • 요청 URL을 서버가 이해하기 쉬운 형태로 변경 (URL 재작성)
  • 응답에 보안 관련 헤더(HSTS, CSP 등)를 동적으로 추가

CloudFront 고급 기능

  1. 로깅 활성화
    CloudFront 배포에 로깅을 활성화해 로그를 Amazon S3 버킷에 저장 가능
  2. 로그 분석 및 시각화
    S3에 저장된 로그를 Athena를 통해 SQL 쿼리로 분석하거나 Amazon QuickSight를 연동해 시각화된 대시보드 구축
  3. 커스터마이징 기능
    User-Agent 헤더를 기반으로 사용자 장치에 따라 다른 버전의 콘텐츠 동적 제공
  4. 사용자 인증 및 권한 부여
    Amazon Cognito와 결합해 사용자 권한을 서버리스 방식으로 구현
  5. 다국어 지원
    Accept-Language 헤더를 기반으로 캐시를 최적화해 여러 언어를 지원하는 웹사이트에 효율적인 다국어 지원

Global Accelerator

전 세계에 분산된 사용자들이 애플리케이션에 더 빠르고 안정적으로 접속할 수 있도록 설계된 네트워크 서비스

빠르고 혼잡이 적은 AWS의 전용 글로벌 네트워크 백본망을 통해 사용자 트래픽을 최적의 경로로 안내

이점설명
성능 최적화
(낮은 지연시간 및 패킷 손실 감소)
- 최적 경로 선택
사용자가 가장 가까운 AWS 엣지 로케이션으로 접속 시, Global Accelerator는 AWS 전용 네트워크를 통해 최적의 리전에 있는 엔드포인트로 트래픽 분산해 지연 시간 최소화

- TCP 연결 최적화 / UDP 성능 향상
고가용성 및 자동 장애 조치- 자동 헬스 체크(서버 상태 자동 체크) 및 트래픽 리다이랙션
비정상적인 리전이나 엔드포인트가 감지되면 자동으로 트래픽을 정상인 곳으로 리다이렉션 해 높은 가용성 보장 (Failover)

- 신속한 장애 조치
자동 Failover 가능
정적 IP 주소 제공전세계 어디서나 접근할 수 있는 고정된 IP 주소 2개 제공

- 애플리케이션 엔드포인트 진입을 위한 고정된 Anycast IP 주소를 제공해 클라이언트 장치에서 IP 주소 캐싱에 의존하지 않고도 접속 가능
- 전세계 어디에서나 동일하기에 사용자가 어디있든 항상 같은 주소로 접속 가능
다양한 프로토콜 지원- TCP, UDP 등 다양한 프로토콜 지원
- AWS Sheild Adavanced에 리소스를 등록해 관리형 DDoS 보호 가능

Global Accelerator 작동 방식

  1. 사용자 접속
    한국에 있는 사용자가 example.com으로 접속 시도
  2. DNS 조회
    AWS의 DNS 서비스인 Route 53은 example.com에 대한 요청을 Global Accelerator에 할당된 고정 IP 주소로 응답
  3. 엣지 로케이션 연결
    사용자의 트래픽은 가장 가까운 AWS 엣지 로케이션으로 전달됨 (한국이 가깝기에 한국으로_
  4. 최적 리전으로 라우팅
    Global Accelerator는 AWS의 혼잡없는 글로벌 네트워크를 통해 지연 시간이 짧고 상태가 양호한 최적의 엔드포인트로 트래픽 보냄
  5. 애플리케이션 연결
    사용자는 한국 또는 미국에 있는 리전 중 최적인 한국 리전의 애플리케이션으로 연결됨

  1. End-user request
    사용자 애플리케이션 접속 요청
  2. AWS Global Accelerator
    사용자 요청은 AWS Global Accelerator로 먼저 전달
    (최대 10개 리전으로 연결 가능)
  3. 다양한 리전의 엔드포인트로 분산
    Global Accelerator는 미리 설정된 구성에 따라 최적의 AWS 리전으로 트래픽을 보냄

주요 활용 시나리오

  1. 글로벌 분산 애플리케이션
    미국, 유럽 등 전 세계로 사용자가 분포된 HTTP 기반 또는 다른 프로토콜 기반 애플리케이션의 성능 및 가용성 향상에 도움
  2. 실시간 통신 및 게임
    • 지연 시간에 민감한 온라인 게임
    • VOIP(Voice Over Internet Protocol) 서비스
    • RTMP(Real Time Messaging Protocol) : TCP 기반 라이브 스트리밍 시스템
  3. 하이브리드 환경
    온프레미스 데이터 센터에 호스팅된 UDP 기반 + Stateful TCP 기반 워크로드의 성능과 가용성 향상
profile
공부 기록 공간 '◡'

0개의 댓글