CDN과 동적콘텐츠 통합 시 차이점
Notice
Cloudfront + ALB 조합 시 내용 정리
동작 원리
graph LR
A[사용자] -->|요청| B[CloudFront 엣지 로케이션]
B -->|캐시 확인| C{캐시 존재?}
C -->|Yes| D[캐시된 응답 반환]
C -->|No| E[ALB로 요청 전달]
E -->|로드 밸런싱| F[EC2 인스턴스]
F -->|응답| E
E -->|응답| B
B -->|캐싱 및 응답| A
G[AWS WAF] -.->|보안 검사| B
비교표
| 항목 | CloudFront + ALB 사용 시 | ALB만 사용 시 |
|---|---|---|
| 성능 | 전 세계 엣지 로케이션을 통한 지연 시간 감소, HTTP/3 지원, 지능형 경로 라우팅 | 단일 리전 내 로드 밸런싱, HTTP/2까지 지원, 지연 시간이 상대적으로 길어질 수 있음 |
| 보안 | 엣지 로케이션에서 WAF 통합 가능, CloudFront IP 주소로부터의 트래픽만 허용하도록 보안 그룹 구성 가능 | ALB에서도 WAF 통합 가능, 직접 인터넷에 노출됨 |
| 가용성 | 글로벌 엣지 네트워크 활용, 캐시된 콘텐츠는 오리진 장애 시에도 제공 가능 | ALB는 99.99% 가용성 제공, 리전 내 여러 가용 영역에 분산 배치 가능 |
| 비용 | 오리진에서 CloudFront로의 데이터 전송 무료, 캐싱으로 ALB LCU 비용 절감 가능 | 리전 간 데이터 전송 비용 발생, 모든 요청이 ALB를 통과하므로 LCU 비용 증가 |
| 캐싱 | Cache-Control 헤더를 통한 정적/동적 콘텐츠 캐싱 가능 | 캐싱 기능 없음, 모든 요청이 백엔드로 전달됨 |
| 트래픽 관리 | 글로벌 네트워크를 통한 트래픽 분산, 오리진 부하 감소 | 단일 리전 내 트래픽 분산, 자동 대상 가중치 기능으로 성능 저하된 대상의 트래픽 조정 가능 |
동적 캐싱을 사용할 때 주의해야 할 사항
- 캐시 유효성 관리: 동적 콘텐츠는 자주 변경되므로 적절한 Cache-Control 헤더에 ‘max-age’ 값을 짧게 설정하거나 ‘no-cache’ 지시어를 사용하여 최신 상태를 유지해야 함
- 개인화된 콘텐츠 주의: 인증된 사용자만 접근 가능한 보안 콘텐츠나 장바구니, 주문 정보와 같은 개인화된 콘텐츠는 HTTP Cache-Control 헤더에 ‘private’ 또는 ‘no-store’ 지시어를 사용하여 공유 캐시에 저장되지 않도록 해야 함