흰 스타렉스에서 내가 내리지

CF(1): CDN 과 Amazon CloudFront 소개 본문

AWS

CF(1): CDN 과 Amazon CloudFront 소개

주씨. 2024. 10. 25. 11:01
728x90

# CDN (Content Delivery Network)

웹사이트나 애플리케이션의 콘텐츠 (예: 이미지, 동영상, 웹페이지)를 사용자에게 빠르고 효율적으로 전달하기 위한 네트워크 시스템이다.

전 세계 여러 곳에 분산된 서버들이 함께 작동하여, 사용자가 가까운 서버로부터 콘텐츠를 받을 수 있게 도와준다. 

이로 인해 로딩 시간이 줄어들고, 트래픽이 분산되어 서버 과부하를 막아 안정적인 서비스가 가능하다.

 


# Amazon CloudFront

Amazon CloudFront 는 개발자 친화적 환경에서 짧은 지연 시간빠른 전송 속도데이터, 동영상, 애플리케이션 및 API를 전 세계 고개들에게 안전하게 전송하는 고속 콘텐츠 전송 네트워크(CDN) 서비스이다. 

 

  • AWS 에서 제공하는 Content Delivery Network(CDN)
    • 웹페이지, 이미지, 동영상 등의 컨텐츠를 본래 서버에서 받아와 캐싱
    • 해당 컨텐츠에 대한 요청이 들어오면 캐싱해둔 컨텐츠를 제공
    • 컨텐츠를 제공하는 서버와 실제 요청 지점간의 지리적 거리가 매우 먼 경우, 요청지점 근처의 CDN 을 통해 빠르게 컨텐츠 제공 가능
  • 글로벌 서비스, 단 리전은 US-East-1 만 취급
  • 엣지 로케이션에서 데이터를 캐싱
    • 따라서 원본이 변해도 캐싱이 만료되지 않는다면 유저가 보는 내용은 변하지 않음
    • 엣지 로케이션?
      • AWS CloudFront(CDN)등의 여러 서비스들을 가장 빠른 속도로 제공(캐싱)하기 위한 거점
      • Global Accelerator와 유저를 연결하는 거점
      • 전 세계 여러 장소에 흩어져 있음
      • 엣지 로케이션을 사용했을 때 2가지 장점
        • 1. 거점 근처에 있는 유저들은 컨텐츠에 빠르고 안전하게 액세스할 수 있다.
        • 2. 전 세계의 모든 요청이 서울로 요청을 보내지 않기 때문에, 서울에 있는 서버의 부하가 감소된다.

엣지 로케이션 사용 전/후

  • 정적 컨텐츠, 동적 컨텐츠 모두 호스팅 가능.
정적 컨텐츠 (Static Contents) 동적 컨텐츠 (Dynamic Contents)
- 서버에 저장된 파일이 모든 사용자에게 동일하게 전달되는 컨텐츠
- 매번 서버에 요청할 필요 없이 캐싱 가능
- HTML/Javascript 등으로 구성
- 예: 이미지, 글, 뉴스 등
- 시간, 사용자, 입력 등에 따라 내용이 변경되는 컨텐츠
- 매번 서버에 요청하여 내용을 구성하고 전달받아야 함
- PHP, JSP, ASP.net 등으로 서버 처리
- 예: 로그인이 필요한 내용, 게시판, 댓글 등

 

 


# 용어 정리

  • 원본 (Origin) : 실제 컨텐츠가 존재하는 서버 (S3, EC2 등)
  • 배포 (Distribution) : CloudFront 의 CDN 구분 단위로 여러 엣지 로케이션으로 구성된 컨텐츠 제공 채널
  • 동작 (Behavior) : CF가 어떻게 동작할 것인지의 정의. 프로토콜, 캐싱 정책, 로그 등 어떻게 컨텐츠를 전달할지 설정.
  • Edge Location (aka. Points of Presence or POP) : 데이터를 가장 빠른 속도로 제공(캐싱)하기 위한 거점
  • Regional Edge Cache : Edge Location 의 상위 단위로 좀 더 큰 캐싱 거점 

 

# 콘솔 설명

  • 각각의 행은 Distribution (구분 단위) 이다. 
  • 각 Distribution 은 도메인이름, ARN을 가진다.

 

가격 정책

  • 3가지의 가격 정책을 가진다. 

도메인 지정과 SSL 인증서

  • CF 에서 제공하는 도메인 말고, 내가 보유한 도메인을 연결할 수 있다. 
  • 이를 사용하려면 SSL 인증서가 필요하다. 

기본값 루트 객체

  • 처음 CF 에 접속했을 떄 어떤 객체를 보여줄 것인가 설정한다. 

 

로깅과 IPv6

  • 로깅과 IPv6를 설정할 수 있다. 

 

WAF

  • 방화벽도 달 수 있고, 많이 쓰인다.

 

원본

  • S3 버킷에 대해 원본을 지정할 수 있고, 이 버킷을 공개할 것인지, 외부 접속이 가능하게 할 것인지 등을 설정할 수 있다.

 

원본 추가설정

  • 원본에 몇 번이나 커넥션을 요청할 것인지도 설정할 수 있다. 

기본 캐시동작

  • 접근 프로토콜, HTTP Method 를 지정할 수 있다. 

함수 연결

  • Lambda Edge 라는 매우 강력한 기능도 사용할 수 있다. 
  • 이는 추후에.

 

  • 필요하다면 Custom 한 오류 페이지도 내보낼 수 있고, 콘텐츠 업데이트를 위한 캐싱 무효화도 할 수 있다.