티스토리 뷰

Infra

[AWS] CloudFront?

hi_hannah 2022. 6. 21. 23:12

CloudFront?

  • AWS에서 제공하는 CDN(콘텐츠 전송 네트워크) 서비스
    • CDN?
      • 클라이언트가 콘텐츠를 요청할 때 원본 데이터를 가진 오리진 서버가 응답을 주는 대신 클라이언트와 더 가까운 곳에 존재하는 CDN 서버가 대신 응답을 주기 때문에 더 빠른 속도로 콘텐츠를 전달할 수 있다.
      • 오리진 서버에 갈 요청을 CDN 서버들이 분산해서 처리하기 때문에 오리진 서버에 대한 트래픽이나 부하도 줄일 수 있다.

오리진 서버 : 콘텐츠 원본 데이터를 가진 서버
ex) S3, HTTP 웹 서버 등

  • CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공한다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공된다.
    • 콘텐츠가 이미 지연 시간이 낮은 엣지 로케이션에 있는 경우 CloudFront가 콘텐츠를 즉시 제공한다.
    • 콘텐츠가 엣지 로케이션에 없는 경우 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진 서버에서 콘텐츠를 검색한다.
  • CloudFront는 S3를 오리진 서버로 둬서 이미지, js같은 정적 파일부터 동영상 스트리밍과 같은 콘텐츠도 전달할 수 있다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/HowCloudFrontWorks.html)

 

콘텐츠를 전송하도록 CloudFront를 구성하는 방법

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html

  1. S3 버킷 또는 HTTP 서버와 같은 오리진 서버를 지정하고 CloudFront는 오리진 서버의 파일을 가져온 다음 전 세계 CloudFront 엣지 로케이션에 배포한다.
  2. 오리진 서버에 파일을 업로드한다. S3 버킷을 오리진 서버로 사용할 경우 버킷에 있는 오브젝트를 공개적으로 읽을 수 있는 상태로 만들 수 있으므로 오브젝트의 CloudFront URL을 아는 사람이라면 누구나 액세스할 수 있다. (오브젝트를 비공개로 유지하고 액세스할 수 있는 사용자를 제어할 수 있는 SignedURL(또는 SignedCookie)을 생성할 수도 있다.)
  3. 사용자가 웹 사이트나 애플리케이션을 통해 파일을 요청할 경우 어떤 오리진 서버에 파일을 가져올지 알려주는 CloudFront 배포를 만든다. 동시에 CloudFront에서 모든 요청을 기록할지, 배포를 만들자마자 활성화할지 여부와 같은 세부사항을 설정한다.
  4. CloudFront는 새 배포에 도메인 이름을 할당한다(CloudFront 콘솔 또는 API 요청에 대한 응답으로 확인 가능)
  5. CloudFront에서는 배포의 구성을 모든 해당 엣지 로케이션 또는 CloudFront가 파일의 사본을 캐싱하는 분산된 데이터 센터의 POP(Point of Presence) 서버 모음으로 보낸다.

웹 사이트 또는 애플리케이션을 개발할 경우 CloudFront가 URL에 제공하는 도메인 이름을 사용할 수 있다.

  • 배포 도메인 + S3 콘텐츠 경로
  • ex) 배포 도메인 이름이 d111111abcdef8.cloudfront.net 일 경우, S3에 있는 logo.jpg의 URL은 http://d111111abcdef8.cloudfront.net/logo.jpg 가 된다.

 

참고자료

Amazon CloudFront란 무엇인가

댓글