728x90
✍ Posted by Immersive Builder Seong
콘텐츠 전송 네트워크(CDN)
CDN(Content Delivery Network)은 인터넷 사용자에게 콘텐츠를 전송하기 위해 사용하는 지리적으로 분산된 서버의 네트워크를 말합니다. CDN을 사용하면 웹 서비스를 통해 제공되는 다양한 콘텐츠를 캐시하여 사용자에게 빠르게 전송하고 원본 서버의 부하를 줄일 수 있습니다. 또한 사용자가 집중되는 경우에는 여러 CDN 서버로 부하를 분산하여 안정적인 서비스를 제공합니다.
※ 캐시 vs CDN ?
캐시는 일시적으로 콘텐츠를 보관하는 저장소의 개념이고, CDN은 콘텐츠를 캐시하여 제공하는 네트워크의 개념입니다.
콘텐츠의 특성에 따라 정적 콘텐츠 캐싱과 동적 콘텐츠 캐싱으로 구분합니다. 콘텐츠 캐싱을 구분하는 기준은 콘텐츠의 변동 여부와 캐싱 방식에 있습니다.
- 정적 콘텐츠 캐싱
- 특징 : 자주 변경되지 않고 일정한 상태를 유지하는 파일입니다. 대표적으로 이미지, 동영상, CSS, JavaScript 파일 등이 이에 해당합니다.
- 캐싱 방식 : 동일한 콘텐츠를 여러 사용자가 반복적으로 요청하더라도 콘텐츠의 변동 사항이 없기 때문에 CDN 서버에 한 번 캐시된 이후 콘텐츠가 지속적으로 사용자에게 제공됩니다.
- 동적 콘텐츠 캐싱
- 특징 : 사용자의 요청에 따라 자주 변경되는 데이터입니다. 예를 들어 요청 경로(request path), 질의 문자열(query string), 쿠키(cookie), 요청 헤더(request header) 등의 정보에 기반하여 추가 처리가 필요한 HTML 페이지가 이에 해당합니다.
- 캐싱 방식 : 콘텐츠를 짧은 시간동안 캐시하거나 상황에 따라 캐시하지 않고 전송합니다. 실시간 요청을 경로 최적화 기술을 통해 전송하여 지연을 최소화합니다.
동작 원리
정적 콘텐츠 캐싱을 기준으로 CDN이 동작하는 원리를 살펴보면 아래와 같습니다.
- Alice가 CDN이 제공하는 URL을 통해 이미지(image.jpeg) 파일을 요청합니다.
- Alice와 가장 가까이 위치한 CDN 서버에서 먼저 이미지 파일이 있는지 캐시를 조회합니다.
- CDN 서버의 캐시에 이미지가 없으므로 원본 서버에 이미지 파일을 요청합니다.
- 원본 서버는 요청한 이미지 파일을 찾아 CDN 서버로 반환합니다. 이 때, 응답 헤더에는 캐시 만료 기간을 의미하는 TTL 값이 담겨 있습니다.
- CDN 서버는 이미지 파일을 캐시에 저장한 후 Alice에게 반환합니다.
- 다시 Tom이 동일한 이미지(image.jpeg) 파일을 요청합니다.
- TTL 값이 유효한 경우, 캐시에 이미지 파일이 존재하므로 CDN 서버에서 요청을 바로 처리합니다.
설계 고려사항
CDN을 설계할 때 아래와 같은 사항을 고려해야 합니다.
- CDN 서비스는 Cloudflare, Akamai, AWS CloudFront 등을 통해 제공됩니다. CDN 서버로 들어오고 나가는 트래픽량에 따라 비용이 책정됩니다. 따라서 자주 사용하지 않는 콘텐츠는 CDN 서버에서 캐싱하지 않도록 제외할 필요가 있습니다.
- 캐시에 데이터를 얼마나 저장할 것인지 적절한 TTL 값을 찾아 설정해야 합니다. 왜냐하면 TTL 값이 너무 길면 콘텐츠의 신선도가 떨어지고, 너무 짧으면 서버를 빈번히 호출하여 캐시를 사용하는 의미가 없어지기 때문입니다.
- 컨텐츠의 특성(정적/동적)에 따라 서로 다른 캐싱 전략을 고려할 필요가 있습니다. 동적 컨텐츠 캐싱을 위해 짧은 TTL 값을 설정하거나 조건부 요청을 설정할 수 있습니다.
- 만료되지 않은 콘텐츠를 CDN에서 제거해야 할 상황이 발생할 수 있습니다. API 또는 오브젝트 버저닝을 사용하여 기존 콘텐츠를 무효화할 수 있도록 합니다.
- CDN 서비스의 장애를 대비하여 원본 서버로부터 직접 콘텐츠를 가져오도록 클라이언트를 구성하는 것이 필요할 수 있습니다.
728x90
'SA > Architecting' 카테고리의 다른 글
지리적 라우팅 설계 (0) | 2024.11.15 |
---|---|
확장성을 고려한 데이터베이스 설계 방안 (2) | 2024.11.11 |
메시지 큐 (0) | 2024.11.10 |
캐싱 전략 (0) | 2024.11.08 |
확장성을 고려한 시스템 설계 방안 (0) | 2024.11.07 |