CDN
- Content Delivery Network
- 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술
- 사용자들이 웹사이트에 접속할 때 해당 파일들을 더 가까운 서버에서 받아오도록 하여 응답 시간을 최소화하고 성능을 향상시킨다.
- 동적 콘텐츠(HTML, API 요청 등)는 서버에서 실시간으로 생성되기 때문에 CDN을 사용해도 성능 향상이 크지 않다.
- 정적 파일(이미지, 스타일시트, 자바스크립트 등)은 변하지 않기 때문에 CDN을 이용하여 효율적으로 전달할 수 있다.
동작 원리
CDN은 전 세계 여러 지역에 위치한 서버들을 노드로 가지고 있다. 웹사이트나 애플리케이션의 정적 파일은 이러한 노드들로 복제되어 저장된다. 사용자가 웹사이트에 접속하면, CDN은 사용자와 가장 가까운 노드에서 해당 정적 파일;을 전달한다. 이렇게 함으로써 웹사이트의 응답 속도를 빠르게 하고, 트래픽을 분산하여 서버의 부하를 줄일 수 있다
장점
- 빠른 성능: 사용자가 웹사이트에 접속할 때 정적 파일들이 가장 가까운 노드로부터 전달되기 때문에 응답 시간이 단축된다.
- 서버 부하 감소: CDN은 웹사이트의 정적 파일들을 복제하여 여러 노드에 분산 저장하므로 서버의 부하가 분산된다.
- 대역폭 절약: CDN을 사용하면 웹사이트의 트래픽이 분산되어 서버에 들어오는 트래픽이 감소한다.
- 안정성과 신뢰성: CDN은 여러 지역에 분산된 서버들로 구성되기 때문에 하나의 서버에 장애가 발생해도 다른 서버들이 해당 기능을 대체하여 안정성과 신뢰성이 높아진다.
CloudFront
Amazon CloudFront는 뛰어난 성능, 보안 및 개발자 편의를 위해 구축된 콘텐츠 전송 네트워크(CDN) 서비스입니다. - AWS 공식 홈페이지
- AWS에서 제공하는 CDN(Content Delivery Network) 서비스
- CDN은 전 세계에 분산된 서버 네트워크를 통해 웹사이트의 콘텐츠(HTML 페이지, CSS 파일, 이미지, 비디오 등)를 사용자에게 빠르게 전달하는 역할을 합니다.
CloudFront는 사용자 경험을 향상시키고, 전 세계의 사용자에게 빠르게 콘텐츠를 제공하는 데 효과적인 서비스이다. 하지만 이용비용과 설정 복잡성을 고려해야 하며, 캐싱 정책에 따른 지연 시간 문제를 잘 관리해야 한다.
주 사용 사례
- 정적 및 동적 웹 콘텐츠 전송: CloudFront는 웹사이트의 콘텐츠를 전 세계의 사용자에게 빠르게 전달하도록 설계되었다.
- 비디오 스트리밍: CloudFront는 라이브 및 온디맨드 비디오 스트리밍을 지원한다.
- API 가속: CloudFront를 통해 API 응답을 사용자에게 빠르게 전달할 수 있다.
- 소프트웨어 배포: 대량의 소프트웨어 배포를 위해 CloutFront를 사용할 수 있다.
장점
- 성능 향상: CloudFront는 데이터를 사용자에게 빠르게 전달하므로 웹사이트의 로딩 시간을 줄일 수 있다.
- 확장성: 사용량이 증가하더라도 AWS의 인프라를 이용해 자동으로 확장이 가능하다.
- 보안 강화: AWS Shield, AWS WAF(Web Application Firewall) 등과 같은 AWS의 보안 서비스와 통합되어 보안을 강화할 수 있다.
- 간편한 통합: CloudFront는 다른 AWS 서비스들과 쉽게 통합하여 사용할 수 있다.
단점
- 비용: 대량의 데이터를 전송하거나 많은 양의 요청을 처리하는 경우 비용이 상당히 높아질 수 있다.
- 설정 복잡성: CloudFront의 다양한 설정 옵션들은 초기 설정을 복잡하게 만들 수 있다.
- 지연 시간: 캐싱 정책에 따라 새로운 콘텐츠를 사용자에게 전달하는 데 지연이 발생할 수 있다.
CloudFront와 CSR
CloudFront는 주로 정적인 콘텐츠의 배포를 위해 사용된다. 이러한 정적 콘텐츠들은 CSR 방식으로 렌더링되는 웹 애플리케이션에서 사용된다! CSR 웹 애플리케이션은 웹 브라우저에서 동적으로 렌더링되기 때문에 CloudFront와 함께 사용되어 정적 콘텐츠의 전송 속도를 높일 수 있다!
CloudFront와 React.js
React.js는 클라이언트 측에서 CSR 방식으로 렌더링되기 때문에, CloudFront와 궁합이 좋다. CloudFront를 사용하면 웹 애플리케이션의 정적인 자원들(HTML, CSS, JS, 이미지 등)을 전 세계 여러 지역의 서버에 캐싱하여 사용자들이 빠르게 접근할 수 있도록 도와준다. 따라서 웹 애플리케이션의 초기 로딩 속도가 향상되어 사용자 경험(UX)을 개선할 수 있다.
또한, CloudFront는 React.js 웹 애플리케이션과 함께 다른 AWS 서비스들과도 통합하여 사용할 수 있다. 예를 들어, AWS S3에 정적인 콘텐츠를 저장하고 CloudFront를 통해 배포하거나, AWS Lambda와 함께 사용하여 서버리스 아키텍처를 구성할 수도 있다.
따라서 React.js 웹 서비스를 CloudFront로 배포하면 빠른 성능과 확장성을 제공하며, AWS의 다른 서비스들과의 통합도 용이해지므로 매우 적절한 선택이 될 수 있다!
'IT > CS' 카테고리의 다른 글
프레임워크와 라이브러리의 차이 (0) | 2023.09.13 |
---|---|
[네트워크] VPC (0) | 2023.07.22 |
[네트워크] Load Balancer와 ELB (0) | 2023.07.22 |
[네트워크] 웹소켓(WebSocket) (0) | 2023.07.07 |
백엔드 Node.js를 쓰는 이점 (0) | 2023.07.05 |