CDN이란
CDN은 Contents Delivery Network의 약어로, 콘텐츠 제공자와 사용자가 지리적으로 멀리 떨어져 있는 환경에서 콘텐츠를 빠르게 전달하는 네트워크 기술이다
=> 콘텐츠 형태가 대용량이나 실시간성을 요구하는 현재 추세에 콘텐츠를 빠르게 전달하는 것은 굉장히 중요한 이슈!
CDN 환경
CDN 기술이 없는 일반적인 네트워크 통신 환경에서는 원본 콘텐츠를 가지고 있는 오리진(origin) 서버에서 사용자에게 콘텐츠를 전달한다
=> 이런 환경에서 오리진 서버에 높은 부하가 발생하고 지리적으로 멀리 떨어져 있는 사용자에게 콘텐츠를 전달할 때 지연 시간이 길어지는 것은 불가피함
이런 이슈를 CDN 기술로 극복할 수 있음!!
=> CDN 기술 핵심은 캐시 서버를 지역적으로 분산하고 콘텐츠를 동기화하여 분산 처리하는 것이다
사용자는 인접한 캐시 서버로 콘텐츠를 전달받아 빠르고 효율적인 서비스를 제공받을 수 있다
(CDN을 도입하면 높은 성능과 가용성을 보장받을 수 있음)
CDN 캐싱 방식
오리진 서버의 원본 콘텐츠를 지역적으로 분산된 캐시 서버로 전달하고 콘텐츠를 저장하는 것을 캐싱이라고 한다
캐시 서버에 콘텐츠를 가지고 있지 않으면 캐싱 상태를 Cache Miss(캐시 미스)라고 하고, 콘텐츠를 가지고 있으면 캐싱 상태를 Cache Hit(캐시 히트)라고 한다.
Cache Miss 상황에서의 동작
1. 사용자가 캐시 서버에 콘텐츠를 요청
2. 캐시 서버에 해당 콘텐츠가 존재 X => Cache miss 판정
3. 캐시 서버는 오리진 서버에 콘텐츠를 요청
4. 오리진 서버는 원본 콘텐츠를 복사하여 캐시 서버에 전달
5. 캐시 서버는 해당 콘텐츠를 저장하는 캐싱을 수행 (정적 캐싱)
6. 캐시 서버는 사용자에게 콘텐츠를 전달
Cache Hit 상황에서의 동작
1. 사용자가 캐시 서버에 콘텐츠를 요청
2. 캐시 서버에서 해당 콘텐츠를 가지고 있어 Cache Hit 판정
3. 캐시 서버는 사용자에게 콘텐츠를 전달
정적 캐싱
정적 콘텐츠는 변경되거나 수정되지 않는 콘텐츠를 의미한다
=> 이미지 파일, 자바스크립트, CSS 등 콘텐츠가 정적 콘텐츠에 해당
여기에서 정적 캐싱은 정적 콘텐츠를 캐싱하는 방식을 의미!
정적 캐싱은 정적 콘텐츠가 변경되지 않는 특징에 따라 별도의 사용자 요청이 없어도 오리진 서버에서 캐시 서버로 미리 콘테츠를 복사함!
=> 그래서 사용자가 캐시 서버로 콘텐츠를 요청하면 TTL 동안 바로 응답할 수 있는 Cache Hit 상태로 동작함
정적 캐싱은 CDN 캐싱의 이점을 살려 효율적으로 전송할 수 있음!
동적 캐싱
동적 콘텐츠는 사용자 요청이나 정보에 따라 즉석에서 생성되는 콘텐츠를 의미한다
(사용자 정보를 활용하여 매번 변경되는 형태의 콘텐츠가 동적 콘텐츠임)
여기에서 동적 캐싱은 동적 콘텐츠를 캐싱하는 방식을 의미!
동적 캐싱은 동적 콘텐츠가 요청할 때마다 변경이 되는 특징이 있어 캐시 서버에서 콘텐츠를 보관하지 않고 Cache Miss 상태로 동작한다!
=> 결국 사용자는 오리진 서버에서 캐시 서버를 거쳐 콘텐츠를 전달받게 됨 (TTL을 0으로 설정함)
동적 캐싱은 CDN 캐싱의 이점을 살리기가 어려움!
Amazon CloudFront란
Amazon CloudFront는 AWS에서 제공하는 CDN 서비스로 정적 콘텐츠나 동적 콘텐츠를 사용자에게 빠르게 배포하도록 지원하는 서비스이다
Amazon CloudFront는 전 세계에 분포된 엣지 로케이션(edge location)이라는 곳에 콘텐츠를 캐싱하고 사용자 요청에 따라 가장 지연 시간이 낮은 엣지 로케이션이 응답하여 최적의 성능을 보장한다!
Amazon CloudFront 구성
AWS의 글로벌 엣지 네트워크를 이용하여 오리진 대상의 콘텐츠를 전 세계에 위치한 엣지 로케이션과 리전 엣지 캐시에 캐싱하여 CDN 서비스를 제공한다
2023년 4월 기준 Amazon CloudFront는 48개국 90개 이상의 도시에 위치한 450개 이상의 엣지 로케이션을 두고 AWS 글로벌 네트워크를 활용하여 서비스함
Amazon CloudFront 서비스를 구성하는 요소에는
1. 오리진 : 원본 콘텐츠를 가지고 있는 대상으로 온프레미스의 일반 서버나 AWS 서비스의 EC2, ELB, S3가 될 수 있다
2. Distribution : 오리진과 엣지 중간에서 콘텐츠를 배포하는 역할을 수행하는 CloudFront의 독립적인 단위이다
=> 웹 서비스 전용의 Web Dritribution과 스트리밍 전용의 RTMP Distribution으로 분류함
3. 리전 엣지 캐시 : 빈번하게 사용되는 콘텐츠에 대해 캐싱하는 큰 단위의 엣지 영역으로, 오리진과 엣지 로케이션 사이에 위치한다
=> 엣지 로케이션에서 오리진으로 콘텐츠를 요청하는 상황을 줄여 효율적으로 CDN 서비스를 제공한다
4. 엣지 로케이션 : Distribution으로 배포되는 콘텐츠를 캐싱하는 작은 단위의 엣지 영역으로, 사용자 입장에서 가장 인접한 엣지 로케이션이 콘텐츠를 전달함
가 있다!
Amazon CloudFront 기능
Amazon CloudFront는 다양한 기능을 이용하여 효율적인 CDN 서비스를 제공한다 이 중 몇가지 기능들을 알아보자
- 정적 및 동적 콘텐츠 처리
Amazon CloudFront는 정적 콘텐츠와 동적 콘텐츠에 최적화된 캐싱 동작을 제공한다 - HTTPS 기능
오리진 대상이 HTTPS를 지원하지 않아도 Amazon CloudFront가 알아서 HTTPS 통신을 중계한다
=> 사용자와 CloudFront는 HTTPS로 통신하고 CloudFront와 오리진은 HTTP로 통신할 수 있다 - 다수의 오리진 선택 기능
Amazon CloudFront와 단일 Distribution 환경에서 다수의 오리진을 지정하고 선택하여 콘텐츠를 분산 처리할 수 있다 - 접근 제어
서명된 URL과 쿠키(cookie)로 사용자 인증을 지원하여 인증된 사용자만 접근할 수 있도록 지원한다
'Infra > AWS 교과서' 카테고리의 다른 글
[AWS 교과서] 9장 - AWS 오토 스케일링 서비스 (2) | 2024.01.21 |
---|---|
[AWS 교과서] 8장 - AWS IAM 서비스 (1) | 2024.01.19 |
[AWS 교과서] 7장 - AWS 고급 네트워킹 서비스(1) (0) | 2024.01.18 |
[AWS 교과서] 6장 - AWS 데이터베이스 서비스(2) (0) | 2024.01.16 |
[AWS 교과서] 6장 - AWS 데이터베이스 서비스(1) (1) | 2024.01.15 |