정의
CloudFront는 AWS에서 운영하는 CDN입니다.
CDN(Content Delivery Network)
CDN은 지리적으로 분산된 서버들을 연결한 네트워크로, 웹 콘텐츠의 복사본을 사용자에 원 서버보다 더 가까운 곳에 캐싱하여 웹 성능을 향상할 수 있게 합니다.
웹 콘텐츠를 요청하는 사용자와 이를 제공하는 서버 사이의 거리가 멀수록 지연 시간이 늘어날 수 있습니다.
CDN 서버는 사용자와 원 서버보다 가까운 위치에 있기 때문에 지연 시간이 단축되어 페이지 로딩 속도를 향상하고, 더 나은 사용자 경험을 제공하는 데에 도움이 됩니다.
CDN 서버
CDN을 구성하는 개별 서버
지연 시간 Latency
데이터 요청 시작 시점부터 응답 데이터를 받기까지 걸리는 시간
장점
•
짧은 지연 시간: 전 세계에 분포된 엣지 로케이션들을 통해 데이터를 전송해 지연 시간을 줄입니다.
•
보안 강화: 트래픽 암호화, 접근 제어, 원본 서버의 안전한 격리, DDoS 공격 방어
Edge Location과 REC(Regional Edge Cache)
CloudFront는 Edge Location과 REC로 구성되어 있습니다.
엣지 로케이션 Edge Location
: CDN 서버가 위치한 거점
전 세계에 700개 이상의 엣지 로케이션이 분산되어 있습니다.
REC(Regional Edge Cache)
: 엣지 로케이션과 오리진 서버 사이에 위치한 캐시
모든 유형의 콘텐츠, 특히 시간이 지날수록 인기가 줄어드는 콘텐츠 제공에 도움이 됩니다.
ex) 제품 이미지나 동영상과 같은 전자상거래 콘텐츠, 뉴스 콘텐츠
Edge Location
REC
•
공통점 : 원 서버보다 사용자에게 더 가까이에 위치
•
차이점
Edge Location | REC | |
자주 요청되는 콘텐츠를 저장 | 캐싱 대상 | 엣지 로케이션에 저장될 정도로 요청이 많지 않은 콘텐츠라도 저장 → 성능 향상 |
요청 빈도가 높은 콘텐츠를 저장할 공간을 확보하기 위해 요청이 뜸한 콘텐츠를 삭제할 수 있음. 즉, 상대적으로 짧음 | 콘텐츠 유지 기간 | 엣지 로케이션보다 캐시 저장 공간이 크기 때문에 REC에 있는 캐시는 더 오래 저장됨
→ CloudFront가 오리진 서버에 요청 보내는 횟수를 줄이고&성능 향상 |
사용자에게 콘텐츠를 제공하는 과정
CloudFront 기본 동작 흐름
1.
사용자는 웹 애플리케이션에 접속한 후 HTML이나 이미지 파일과 같은 콘텐츠를 요청합니다.
2.
DNS는 요청을 최적으로 처리할 수 있는 CloudFront 엣지 로케이션으로 라우팅합니다.
이때, 보통 지연 시간이 가장 짧은 엣지 로케이션을 선택합니다.
3.
CloudFront는 해당 엣지 로케이션에 있는 CDN 서버의 캐시에 요청된 객체가 있는지 확인하고,
•
Cache Hit(객체가 있으면 ⭕️) → 객체를 사용자에게 전달합니다.
•
Cache Miss(객체가 없으면
)
1.
해당 콘텐츠가 저장되어 있는 원본 서버에 요청을 전달합니다.
2.
원본 서버는 콘텐츠를 엣지 로케이션으로 보내고,
3.
CloudFront는 객체를 사용자에게 전달합니다.
또한, 해당 객체를 캐시에 추가하여 다른 사용자가 같은 객체를 요청하는 것에 대비합니다.
CloudFront-Origin Server 사이의 연결 유지
CloudFront는 원 서버와 지속적인 커넥션을 유지합니다. 즉, CloudFront가 원본 서버에 첫 번째 객체를 요청해서 연결되면, 데이터를 받은 후에도 해당 연결을 바로 끊지 않고 일정 시간 동안 유지합니다.
이로써 다음에 CloudFront가 원본 서버에 객체를 요청할 때, 매번 새로운 연결을 설정하는 데 드는 시간을 절약할 수 있어 원 서버로부터 최대한 빠르게 객체를 가져올 수 있습니다.
REC를 포함한 CloudFront 동작 흐름
1.
사용자는 웹 애플리케이션에 접속한 후 HTML이나 이미지 파일과 같은 콘텐츠를 요청합니다.
2.
DNS는 요청을 최적으로 처리할 수 있는 CloudFront 엣지 로케이션으로 라우팅합니다.
이때, 보통 지연 시간이 가장 짧은 엣지 로케이션을 선택합니다.
3.
CloudFront는 해당 엣지 로케이션에 있는 CDN 서버의 캐시에 요청된 객체가 있는지 확인하고,
•
•
Cache Miss
a.
엣지 로케이션은 일반적으로 가장 가까운 REC에 콘텐츠 요청을 전달합니다.
b.
CloudFront는 REC에 요청 객체가 있는지 확인하고,
•
Cache Hit
1.
객체를 엣지 로케이션에 전달합니다.
2.
REC로 부터 전달이 시작되면, CloudFront는 객체를 사용자에게 전달하기 시작합니다.
또한, 해당 객체를 엣지 로케이션에 캐싱하여 다른 사용자가 같은 객체를 요청하는 것에 대비합니다.
•
Cache Miss
1.
요청을 배포 사양과 비교하고 원 서버에 전송합니다.
배포 사양
CloudFront 설정에서 정의한 규칙들
캐싱 규칙은 어떻게 되는지(어떤 헤더를 전달할지 등), 특정 경로에 대한 접근 제한은 있는지 등의 모든 설정이 포함됩니다.
2.
객체는 원 서버 → REC → 엣지 로케이션 → 사용자 순으로 전달됩니다.
이 경우, CloudFront는 해당 객체를 REC에도 캐싱합니다. 이는 REC에 연결돼 있는 모든 엣지 로케이션이 로컬 캐시를 공유하게 함으로써 오리진 서버에 요청이 한 번만 전송되게 합니다.(여러 번 요청 X)