CDN(Content Delivery Networks) 개념
CDN(Content Delivery Network or Content Distribution Network, 콘텐츠 전송 네트워크) 은 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템이다.
- CDN은 Edge Server를 곳곳에 배치함으로서 사용자와 서버 간 거리를 감소
- CDN은 분산된 Edge Server 운영과 관리를 통해 트래픽이 몰리는 현상을 방지
웹사이트에서 프론트엔드 단에서 라이브러리를 링크 src 소스로 불러오는 것이 대표적인 CDN 서비스의 예시이다.
AWS CloudFront
CDN 기술을 통한 AWS에서 제공하는 CloudFront 서비스 👉 데이터 캐싱을 통해 사용자에게 데이터를 빠른속도로 전달
데이터는 엣지서버를 통해 빠르게 전달한다.
엣지서버가 각 사용자 요청을 라우팅하여 콘텐츠 배포 속도를 높인다. 일반적으로 CloudFront 엣지가 최종 사용자에게 가장 빨리 제공한다.
- 콘텐츠가 엣지 로케이션에 없는 경우
- CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackge 채널, HTTP 서버(예 : 웹 서버)등) 에서 콘텐츠를 검색
- 컨텐츠를 제공하는 근원에서 제공받아 전달
- 콘텐츠가 엣지 로케이션에 있는 경우
- 바로 전달
사용자가 접근하는 엣지서버로 데이터를 요청해서 지연시간을 단축시키는 서비스이다.
Cloud Front 장점
- 글로벌 서비스 시에서도 빠른 속도 제공
- 서버 부하 감소
- Anti-DDos 기능 제공
Cloud Front 동작원리
해당 동작원리에서 3,4번을 잘 이해해야지 아래의 실습 내용을 단번에 이해할 수 있다.
Cloud Front 실습하기(동작원리의 이해가 매우 중요!)
CloudFront 배포 생성 시 가장 먼저 보이는 화면이다.
즉, 연결하는 원본 도메인을 선택한다. API, S3, ELB 등 다양한 서비스와 연동이 가능하다.
기존에 S3에 만들어둔 Bucket 도메인이 있기 때문에 해당 도메인으로 실습을 할 예정이다.
Cloud Front는 배포가 되어야 서비스를 최종적으로 이용할 수 있기 때문에 약간의 시간이 걸린다.
배포가 완료 된 상태
좌측에 있는 배포 도메인으로 접속해보려한다.
AccessDenied이 뜬다? 왜?배포가 되었는데?
해당 S3에 있는 파일에 접근이 되어있지 않기 때문에 위 도메인주소 뒤에 S3에 있는 파일명을 입력한다.
정상적으로 파일이 업로드 되어, 정적 호스팅이 되는 것이 확인!
해당 페이지에서 개발자도구(F12)를 눌러 상단에 Network를 통해서 정상적으로 캐싱이 된 것까지 확인해보자!
정상적으로 배포가 되었는데 왜 MISS가 뜰까????
여기서 말하고 싶은 것이 위에서 작성한 CloudFront의 동작원리 3,4번이다!!
즉, CloudFront가 도메인으로 접속을 할 때, 데이터 여부를 엣지로케이션에서 확인을 해야하고, 엣지로케이션에서 확인한 후에 원본데이터가 있으면 그것을 캐싱해서 CloudFront로 받아오는 구조이다.
엣지로케이션에서 데이터가 캐싱이 되어 넘어온다면 위와 같이 X-Cache가 Hit로 바뀐다!
Hit가 되면 정상적으로 캐시가 된 상태!
동적 데이터(웹사이트) Cloud Front 적용하기
html이 들어가있는 S3 bucket을 선택하면 위와 같은 메세지를 확인 할 수 있다.
해당 엔드포인트를 사용 클릭을 해야지, AWS에서 알아서 DNS를 웹사이트 엔트포인트로 바꿔준다!
위와 같이 자동으로 Bucket에 있는 도메인을 가져오게 된다.
위와 같이 HTML이 담겨있는 S3 Bucket과 연동해서 CloudFront를 통해 웹사이트 호스팅이 가능 하다!
처음에는 엣지로케이션에 원본을 요청하기 때문에 X-Cache가 Miss가 뜬다.
원본데이터를 가져오면 Hit로 바뀐것을 볼 수있다.