반응형
CDN(Content Delivery Network)이란?
1. CDN이란?
CDN(Content Delivery Network, 콘텐츠 전송 네트워크)은 웹사이트나 앱의 콘텐츠(이미지, CSS, JS, 동영상 등)를 전 세계 여러 지역에 분산된 서버(엣지 서버)에 저장해두고, 사용자가 요청할 때 가장 가까운 서버에서 전달하는 기술입니다.
한마디로, 사용자와 가까운 서버에서 콘텐츠를 제공해 속도를 높이고 서버 부하를 줄이는 시스템이라고 할 수 있습니다.
2. CDN의 필요성
- 속도 향상: 서버와 사용자의 거리가 줄어들어 지연(Latency)이 감소합니다.
- 트래픽 분산: 원본 서버에 모든 요청이 몰리지 않고 여러 서버에서 분산 처리됩니다.
- 안정성: 특정 서버에 문제가 생겨도 다른 서버에서 콘텐츠를 제공할 수 있습니다.
- 보안 강화: 일부 CDN은 DDoS 방어, HTTPS 관리 등의 보안 기능도 제공합니다.
3. CDN의 캐싱 동작 방식
CDN의 핵심은 캐싱(Caching)입니다.
- 사용자가 콘텐츠 요청 → 가장 가까운 CDN 서버로 연결됨.
- CDN 서버에 콘텐츠가 있으면(HIT) → 즉시 사용자에게 전달.
- 없으면(MISS) → 원본 서버에서 가져와 사용자에게 전달하고, 동시에 캐시에 저장.
- 이후 같은 요청은 캐시에서 바로 제공.
- 캐시는 TTL(Time To Live) 값에 따라 일정 시간이 지나면 갱신됩니다.
4. 변경되는 콘텐츠와 CDN
프로필 사진이나 게시글 썸네일처럼 업데이트 가능성이 있는 콘텐츠도 CDN으로 제공할 수 있습니다. 다만, 캐싱 때문에 최신 상태가 반영되지 않는 문제가 생길 수 있어요. 이를 해결하는 방법은 다음과 같습니다:
- 캐시 무효화(Invalidation): 새로운 버전이 올라올 때 CDN 캐시를 지워주는 방식.
- 버전 관리(파일명 변경): 파일명에 버전이나 해시값을 붙여 새 URL로 제공 → 캐시 충돌 없음.
- 짧은 TTL 설정: 변경 가능성이 큰 파일은 캐시 유지 시간을 짧게 설정.
대부분의 서비스는 버전 관리 + 캐시 무효화를 조합해 사용합니다.
AWS S3 + CloudFront 로 정적 콘텐츠 전달하기
1. Amazon S3 (Simple Storage Service)
- 무엇인가?
AWS가 제공하는 객체 스토리지 서비스입니다.
파일(이미지, 동영상, 문서 등)을 "버킷(bucket)"이라는 단위에 저장해 두고, 필요할 때 URL로 접근할 수 있어요. - 특징
- 무한 확장: 저장 용량 제한이 사실상 없음.
- 내구성: 데이터를 거의 영구적으로 보존 가능.
- 가용성: 다중 리전/존에 자동 복제 저장.
- 저렴한 비용: 사용한 저장 용량과 트래픽, 요청 횟수만큼만 과금.
- 다양한 클래스: 자주 쓰는 파일(표준), 가끔 쓰는 파일(IA), 아카이브용(Glacier) 등으로 비용 최적화 가능.
- 사용 사례
- 정적 웹사이트 호스팅 (HTML, CSS, JS 파일 배포)
- 이미지/동영상 저장소
- 로그/백업 파일 저장
- 빅데이터 분석용 데이터 레이크
2. S3 + CloudFront 조합
S3에 정적 파일 저장 → CloudFront로 배포
- API 서버와 정적 파일 서버의 역할이 분리됨 → API 서버의 부하가 줄어듦
- S3 요청 부담 감소 → 첫 요청만 원본에서 가져오고 이후에는 캐시에서 서비스
- 응답 속도 향상 → 사용자 가까운 엣지 서버에서 전달
반응형
'development' 카테고리의 다른 글
| Docker: 헬스 체크와 디펜던시 체크로 신뢰성 확보하기 (0) | 2025.09.14 |
|---|---|
| Dockerfile과 Docker Compose (0) | 2025.09.10 |
| 서버 환경 구성하기4 - 성능과 가용성을 보장하기 (0) | 2025.09.07 |
| 서버 환경 구성하기2 - AWS 기초 공부하기 (0) | 2025.09.03 |
| 서버 환경 구성하기1 - 도커, 컨테이너, 이미지, AWS ECR에 대하여.. (0) | 2025.09.02 |