CloudFront

GreenBean·2023년 1월 18일
1
post-thumbnail

CloudFront

CloudFront 개념 원리 & 사용 세팅 정리
CloudFront ( CDN ) 가 뭐야?

  • CloudFront 란 AWS 에서 제공하는 CDN ( Content Delivery Network ) 서비스

CDN 이란?

  • CDN ( Content Delivery Network ) 은 콘텐츠 전송 네트워크로써 지리 ∙ 물리적으로 떨어져 있는 사용자에게 컨텐츠를 더 빠르게 제공하는 시스템을 말함
  • 사용자가 원격지에 있는 서버 ( Origin Server ) 로 부터 Content ( 예시: Web Object ∙ Video ∙ Music ∙ Image ∙ Document 등 ) 을 다운 받을 때 가까이 있는 서버에서 받는 것보다 시간이 오래 걸림
    • 그러기에 사용자와 가까운 곳에 위치한 Cache Server 에 해당 Content 를 저장 ( 캐싱 ) 하고 Content 요청 시에 Cache Server 가 응답을 줌

CDN 의 장점

  • 웹사이트 로딩 속도 개선
    • 오리지날 서버의 트래픽 부하 및 비용을 줄일 수 있음
  • 인터넷 회선 비용 절감
    • 서버 비용 감소
  • 컨텐츠 제공의 안정성
    • 인터넷 서비스 제공자에 직접 연결되어 데이터를 전송 하므로 컨텐츠를 빠른 속도로 제공할 수 있음
  • 웹사이트 보안 개선
    • 대규모 분산 서버 장비로 공격 트래픽을 완화시킬 수 있음

CDN 의 작동 원리

  1. 최초 요청은 서버로부터 컨텐츠를 가져와 고객에게 전송하며 동시에 CDN 캐싱 장비에 저장

  2. 두번째 이후 모든 요청은 CDN 업체에서 지정하는 해당 컨텐츠 만료 시점까지 CDN 캐싱 장비에 저장된 컨텐츠를 전송

  3. 자주 사용하는 페이지에 한해서 CDN 장비에서 캐싱이 되며 해당 컨텐츠 호출이 없을 경우 주기적으로 삭제

  4. 서버가 파일을 찾는 데 실패하는 경우 CDN 플랫폼의 다른 서버에서 콘텐츠를 찾아 엔드 유저에게 응답을 전송

  5. 콘텐츠를 사용할 수 없거나 콘텐츠가 오래된 경우 CDN 은 서버에 대한 요청을 프록시로 작동하여 향후 요청에 대해 응답할 수 있도록 새로운 콘텐츠를 저장

CloudFront 란?

  • CloudFront 는 AWS 에서 제공하는 CDN 서비스
    • 캐싱을 통해 사용자에게 좀 더 빠른 전송 속도를 제공하는 것을 목적으로 함
    • 전 세계 이곳저곳에 Edge Server ( Location ) 을 두고 사용자에게 가장 가까운 Edge Server 를 찾아 빠른 데이터를 제공

Tip! 추가 내용

  • CloudFront 는 개발자 친화적 환경에서 짧은 지연 시간과 빠른 전송 속도로 데이터 ∙ 동영상 ∙ 애플리케이션 및 API를 전세계 고객에게 안전하게 전송하는 고속 콘텐츠 전송 네트워크 ( CDN ) 서비스
  • CloudFrontCDN 서비스와 이외에도 기본 보안 기능 ( Anti-DDoS ) 을 제공

CloudFront 구성

  • Origin Server
    • 원본 데이터를 가지고 있는 서버
    • AWS 에서는 S3 ∙ EC2 instance 를 나타냄
  • Edge Server
    • AWS 에서 실질적으로 제공하는 전 세계에 퍼져있는 서버
    • Edge Server 에는 요청 받은 데이터에 대해서 빠르게 응답해주기 위해 캐싱 기능을 제공

CloudFront 작동 방식

  1. 사용자로부터 요청이 발생

  2. 요청이 발생한 Edge Server 는 요청이 발생한 데이터에 대하여 캐싱 여부를 확인

  3. 사용자의 근거리에 위치한 Edge Server 중 캐싱 데이터가 존재한다면 사용자의 요청에 맞는 데이터를 응답

  4. 사용자의 요청에 적합한 데이터가 캐싱되어 있지 않은 경우 Origin Server 로 요청이 포워딩

  5. 요청 받은 데이터를 Origin Server 에서 획득한 후 Edge Server 에 캐싱 데이터를 생성하고 클라이언트로 응답 전송

Tip! 추가 내용

CloudFront 장점

  • AWS 네트워크를 사용하면 사용자의 요청이 반드시 통과해야 하는 네트워크의 수가 줄어 들어 성능이 향상
  • 파일의 첫 바이트를 로드하는 데 걸리는 지연 시간이 줄어들고 데이터 전송 속도가 빨라짐
  • 파일 ( 객체 ) 의 사본이 전 세계 여러 엣지 로케이션에 유지 ( 또는 캐시 ) 되므로 안정성과 가용성이 향상
  • 보안성 향상
    • Origin Server 에 대한 종단 간 연결의 보안이 보장됨 ( HTTPS )
    • 서명된 URL 및 쿠키 사용 옵션으로 자체 사용자 지정 오리진에서 프라이빗 콘텐츠를 제공하도록 할 수 있음

Tip! 추가 내용

CloudFront 다양한 기능

🍨 정적 & 동적 컨텐츠 분별 제공

정적 (Static) 컨텐츠

  • 서버를 거치지 않고 클라이언트에서 직접 보여주는 내용
    • 예시: 이미지 ∙ CSS ∙ 기타 서버가 필요 없는 내용들
  • 캐싱으로 접근 속도 최적화

동적 (Dynamic) 컨텐츠

  • 서버 계산 ∙ DB 조회 등이 필요한 내용
    • 예시: 로그인 ∙ 게시판 등
  • 네트워크 최적화 ∙ 연결 유지 ∙ Gzip 압축 등을 사용
  • 서버랑 통신을 할 때 전처리 작업이 있는데 주소가 어디로 전달되는지 ( DNS Lookup ) ∙ TCP Connection ∙ Titm to First Byte 등을 CloudFront 에서 네트워크를 최적화
  • 실제로 내용을 최적화 해서 보내는 것이 아니라 통신을 최적화 해서 속도를 최적화 시키는 것

정적 & 동적 컨텐츠 처리

  • 경로 패턴으로 URL에 따라 정적 ∙ 동적 컨텐츠 분기 처리

🍨 HTTPS 지원

  • Origin 에서 HTTPS 를 지원하지 않더라도 CloudFront 내에서 HTTPS 통신을 지원할 수 있도록 구성 가능
    • 예를 들어, S3 정적 웹 호스팅 URL 같은 경우 SSL 설정이 쉽지 않은데 CloudFront 를 통해서 HTTPS 통신을 지원할 수 있도록 설정 가능

🍨 지리적 제한 설정

  • 특정 지역의 컨텐츠 접근을 제한 가능
    • 예를 들어, 아프키라 티비 스트리밍 서비스를 하는데 라이센스나 계약에 따라 일본권에서는 볼 수 있지만 아프리카권은 볼 수 없도록 설정 가능

Tip! 추가 내용

CloudFront 정책과 보안

🍦 CloudFront 정책

  • CloudFront 는 총 3가지 정책 설정 가능
  • 캐시 정책 ( Cache Control ): 캐싱 방법 및 압축
    • TTL 및 Cache Key 정책
    • CloudFront가 어떻게 캐싱을 할지를 결정
  • 원본 요청 정책 ( Origin Request ): Origin 으로 어떤 내용을 보낼 것인가
    • Origin 에 쿠키 ∙ 헤더 ∙ 쿼리스트링 중 어떤 것을 보낼 것인가
  • 응답 헤더 정책
    • CloudFront 가 응답과 함께 실어 보낼 HTTP Header

🍦 CloudFront 보안

Signed URL

  • 어플리케이션에서 CloudFront 의 컨텐츠에 접근 할 수 있는 URL 을 제공하여 컨텐츠 제공을 제어하는 방법
    • URL 에는 시작 시간 ∙ 종료 시간 ∙ IP ∙ 파일명 ∙ URL 의 유효기간 등의 정보를 담을 수 있음
    • 이 URL 접근 이외의 접근을 막고 허용된 유저에게만 URL 을 전달하여 컨텐츠 제공을 제어 가능
    • 단 하나의 파일 또는 컨텐츠에 대한 허용만 가능
    • S3 Signed URL 과 비슷한 방식

Signed Cookie

  • Signed URL 이 하나의 컨텐츠만 제공 제어를 한다면 Signed Cookie 는 다수의 컨텐츠의 제공 방식을 제어하고 싶을 때 사용
    • Signed URL 과 마찬가지로 여러 제약 사항 설정 가능
    • 다수의 파일 및 스트리밍 접근 허용 가능
      • 예시: 정기 구독 프리미엄 유저만 볼 수 있는 강의 동영상 등

Origin Access Identity (OAI)

  • S3 의 컨텐츠를 CloudFront 를 사용해서만 볼 수 있도록 제한하는 방법
    • 즉, S3의 정적인 컨텐츠 URL 로 바로 접근하는게 아니라 CDN 을 통해서 접근
      • S3 로 직접 접속을 하면 캐싱을 못해 속도 측면에서 마이너스가 될 수 있음
      • 국가별 라우팅이나 인증 등이 CloudFront 에 구현 되어있다면 유저가 직접 S3로 접속 하면 안됨
  • S3 는 CloudFront 와 잘 맞음
    • 정적인 컨텐츠를 호스팅 하기 때문에 CDN 과 찰떡궁합
  • CloudFront 만 권한을 가지고 S3 에 접근하고 나머지 접근 권한은 막음
    • CloudFront 는 유저와 S3 사이에서 중개하는 역할
  • S3 Bucket Policy 로 CloudFront 의 접근을 허용해야 사용 가능
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글