저번 포스팅에서 리액트 프로젝트를 AWS S3에 업로드해 정적 웹 호스팅을 하였는데 이번엔 S3에 CloudFront CDN을 적용하려고 합니다. S3로 정적 웹 호스팅을 진행하는 과정이 궁금하시다면 아래 링크를 참고해주시기 바랍니다. 먼저 간단하게 CDN에 대해 알아보고 CloudFront를 생성하는 방법을 확인하겠습니다.
CDN은 무엇인가?
CDN(Content Delivery Network)
은 전 세계에 분산된 서버 네트워크를 통해 사용자에게 콘텐츠를 빠르게 전달하는 기술입니다. 사용자가 접근하는 서버에서 물리적으로 멀리 떨어져 있다면 웹 사이트 이미지 또는 대용량 파일을 로드하는데 많은 시간이 소요됩니다. 대신 웹 사이트 콘텐츠는 지리적으로 가까운 CDN 서버에 저장된 콘텐츠를 가져와 로드 시간을 줄일 수 있습니다. 아래와 같이 src를 통해 js파일을 로드하는 것 또한 CDN을 통해 js파일을 로드하는 것이다.
<script src="https://code.jquery.com/jquery-3.6.1.js"></script>
CDN의 장점
- 페이지 로드 시간 단축
- 웹 페이지 컨텐츠를 본래 서버에서 받아 미리 캐싱하기 때문에 페이지 로드 시간을 단축합니다.
- 대역폭 비용 절감
- 캐싱된 데이터를 제공하여 오리진 서버가 제공해야 하는 데이터의 양이 줄어들어 웹 사이트 소유자의 호스팅 비용을 절감할 수 있습니다.
- 서버 부하 감소 및 안정성 향상
- 많은 트래픽을 처리하여 웹 서버의 로드를 줄여 오리진 서버의 부하가 감소됩니다.
- 웹 사이트 보안 강화
- 서버 간에 로드를 분산하여 오리진 서버에 미치는 영향을 줄여 트래픽 급증에 인한 디도스 공격을 방지할 수 있습니다.
CloudFront 구축하기
먼저 AWS 콘솔에 로그인하여 CloudFront를 검색하여 아래 페이지로 들어와
CloudFront 배포 생성
버튼을 누릅니다.원본 도메인 설정
origin damain
에 미리 생성된 S3 오리진을 선택해줍니다.S3에 CloudFront에서만 접근할 수 있도록 원본 엑세스 제어를 선택합니다.
Creat new OAC
를 클릭하여 새로운 OAC를 생성합니다.새로운 OAC를 생성하면 아래와 같이 표시되고 배포 후 S3 정책을 업데이트 해야합니다.
기본 캐시 설정
필요한 캐시 설정을 수정합니다. 변경할 내용이 없다면 기본 입력값으로 진행하면 됩니다.
도메인 및 SSL 인증서 설정
도메인과 SSL인증서가 있다면 대체 도메인에 도메인을 입력합니다.
CloudFront에 적용할 SSL 인증서의 경우에는 미국 동부(버지니아 북부) 리전에 생성된 인증서만 사용가능합니다. 인증서가 아직 없다면 아래 문서를 참고하여 인증서를 생성합니다.