나의 개발일지(김지헌)
클라우드프론트(CloudFront) 본문
개발자 친화적 환경에서 짧은 지연 시간과 빠른 전송 속도로 데이터, 동영상, 애플리케이션 및 API를 전세계 고객에게 안전하게 전송하는 고속 콘텐츠 전송 네트워크(CDN) 서비스,기본 보안 기능(Anti-DDoS)를 제공
- 유저가 바로 S3로 접근하지 않고 클라우드프론트를 거쳐서 S3로 접근(User -> CloudFront -> Bucket S3)
CDN이란?
- CDN : (Content Delivery Network or Content Distribution Network, 콘텐츠 전송 네트워크)은 콘테츠를 효율적으로 전달하기 위한 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템
- 인터넷 서비스 제공자 (ISP)에 직접 연결되어 데이터 전송, 콘텐츠 병목을 피할 수 있음
ex)제이쿼리 라이브러리를 링크 src로 불러서 사용하는게 CDN서비스를 이용한것
특징
-웹페이지, 이미지, 동영상 등의 컨텐츠를 본래 서버에서 받아와 캐싱(저장)
-요청이 들어오면 캐싱해 둔 컨테츠를 제공-거리가 멀어도 요청지점의 CDN을 통해 빠르게 컨텐츠 제공가능- 서버의 요청이 필요 없기 때문에 서버의 부하를 낮추는 효과엣지 로케이션
-컨텐츠가 캐싱되고 유저에게 제공되는 지점
-AWS가 CDN을 제공하기 위해서 만든 서비스 CloudFront의 캐시버서
-CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연시간이 가장 낮은 엣지 로케이션으로 라우팅 됨 콘텐츠 전송 성능이 뛰어남
-이미 지연시간이 가장 낮은 엣지 로케이션에 있는 경우 콘텐츠 즉시 제공
-동작 방식
AWS 백본 네트워크를 통해 콘텐츠를 가장 효과적으로 서비스할 수 있는 엣지로 각 사용자 요청을 라우팅 하여 배포 속도를 높인다.(일반적으로 CloudFront 엣지가 최종 사용자에게 가장 빨리 제공함)
1. 컨텐츠가 엣지 로케이션에 없는 경우
- 컨텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3버킷, MediaPackge 채널, HTTP서버 등에서 콘텐츠 검색
- 컨텐츠를 제공하는 근원에서 제공받아 전달
2. 있는 경우 에는 바로 전달
데이터 전달 과정
1. 클라이언트로 부터 Edge sever로의 요청이 발생 -> 요청이 발생한 데이터에 대해 캐싱 여부 확인
-> 캐싱 데이터가 존재한다면 요청에 맞는 데이터를 응답 or 캐싱 되어있지 않은 경우 origin server로 요청이 포워딩
-> 데이터를 orgin server에서 획등한 후 Edge server에 캐싱 데이터를 생성후 클라이언트로 응답
장점
1. AWS 네트워크 사용시 사용자의 요청이 반드시 통과해야 하는 네트워크의 수가 줄어들어 성능 향상
2. 파일의 로드시간이 줄어들고 데이터 전송 속도가 빨라진다.
3. 보안성 향항(오리진 서버에 대한 종단 간 연결의 보안이 보장(HTTPS)
정적 & 동적 컨텐츠 분별 제공 가능
-정적(Static) 컨텐츠
서버를 거치지 않고 클라이언트에서 직접 보여주는 내용(CSS, 이미지 등 서버가 필요없는 것들)
-동적(Dynamic) 컨텐츠
서버 계산, DB조회 등이 필요한 내용(로그인 , 게시판 등)
-네트워크 최적화, 연결 유지, Gzip 압축 등을 사용
-내용을 최적화 하는게 아닌 통신을 최적화 해서 속도를 최적화 시킴
경로 패턴으로 URL에 따라 정적/동적 컨텐츠 분기 처리
유저가 클라우드 프론트에 접근시 서버가 필요한 컨텐츠면 EC2로 이동하고 아니면 S3로 이동하게 할 수 있음
HTTPS 지원기능
오리진에 HTTPS를 지원하지 않아도 CloudFront에서 HTTPS 통신을 알아서 해줌(AWS Certificate Manager(AMC)를 이용해서)
사용자 입장에서 CloudFront와 HTTPS 프로토콜 통신을 하고 그이후 Origin까지는 HTTP 통신하는 개념
지리적 제한
특정 지역의 컨텐츠 접근 제한 기능
주요 CloudFront 이용 지표 확인이 가능하다
캐시상태, 가장 많이 요청 받은 컨텐츠, Top Referrer
3가지 정책 설정
Cache Control : 캐싱 방법 및 압축
- TTL 및 Cache Key 정책
- CloudFront가 어떻게 캐싱을 할 지 결정
Orifin Request : Origin으로 어떤 애용을 보낼 것인가
- Origin에 쿠키, 헤더, 쿼리스트링중 어떤것을 보낼것인가
뷰어에게 보낼 HTTP header
- CloudFront가 뷰어에게 응답과 같이 실어 보낼 HTTP Header
- CloudFront에서 뷰어의 정보를 헤더에 더해 Origin에 전송
확인 가능한 뷰어의 정보
- 디바이스 타입 : Android/ IOS/ SmartTV/ Tablet/ Desktop
- IP Address
- Contry/도시/위도 경도, 타임존 등
Origin Access Identity
- S3의 컨텐츠를 CloudFront를 사용해서만 볼 수 있도록 제한
- CloudFront만 권한을 가지고 S3에 접근하고 나머지 접근을 막음
- S3 Bucket Policy로 CloudFront의 접근을 허용해야 사용가능
Signed URL : 어플리케이션에서 CloudFront의 컨텐츠에 접근 할 수 있는 URL을 제공하여 컨텐츠 제공을 제어하는 방법
Signed Cookie : 다수의 컨텐츠의 제공 방식을 제어하고 싶을 때 사용
'공부' 카테고리의 다른 글
리눅스 명령어 및 EC2설정 NginX (0) | 2023.03.13 |
---|---|
공부 (0) | 2023.03.13 |
노션 API (0) | 2023.03.09 |
S3 버킷, Route53, CloudFront 연결해보기 + HTTPS통신 까지 (0) | 2023.03.07 |
Route 53 (0) | 2023.03.06 |