CDN 서비스를 이용하여 속도를 올리기

Joshua_s·2021년 11월 14일
0
post-thumbnail

개념정리

CDN

CDN이란?
CDN은 Contents Delivery Network 또는 Content Distribution Network의 약자로 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템. 대용량 콘텐츠를 저렴한 비용으로 빠르게 전송하도록 한다. ISP의 CDN 서버에 콘텐츠를 분산시키고 유저의 네트워크 경로 상 가까운 곳의 서버로부터 콘텐츠를 전송받도록 하여 트래픽이 특정 서버에 집중되지 않고 각 지역 서버로 분산되도록 하는 기술

CDN의 동작원리
웹 브라우저에서 URL을 이용하여 접속을 시도하면 사용자에게 페이지를 제공하기 위해 콘텐츠를 서버에 요청한다. 대부분의 CDN 서비스는 콘텐츠에 요청이 발생하게 되면 사용자와 가장 가까운 위치에 배치된 CDN 서버로 사용자로 접속시키게 되며, CDN 서버는 요청된 파일의 캐싱된 콘텐츠를 사용자에게 전달하게 된다. 파일을 찾는데 실패하거나 콘텐츠가 오래된 경우 원본서버에 파일을 조회하여 사용자에게 전달, 이후 동일한 콘텐츠에 경우 캐싱된 파일로 부터 전송되므로 빠르게 전달받을 수 있습니다.

CDN 캐싱 방식의 종류
- Static Caching
사용자의 요청이 없어도 Origin 서버에 있는 컨텐츠를 운영자가 미리 캐쉬서버에 복사함으로써 사용자가 캐쉬서버에 접속하여 컨텐츠를 요청하면 캐쉬서버가 컨텐츠를 전달하는 방식이다.

- Dynamic Caching
최초에는 캐쉬서버에 콘텐츠가 없으나 사용자가 콘텐츠를 요청하면 캐쉬서버에 콘텐츠가 있는지 여부를 확인합니다. 없으면 오리진 서버에서 다운로드 받아 사용자에게 전달하고, 이후 동일 요청을 받게되면 캐싱된 콘텐츠를 사용자에게 제공하게 됩니다. 컨텐츠는 일정시간(TTL)이 지나면 캐싱된 파일이 삭제 될 수 있지만 필요의 경우 다시 오리진 서버에서 컨텐츠를 확인후 계속 가지고 있을 수 있다.

AWS CloudFront

CloudFront란?
짧은 지연시간, 빠른 전속속도로 최종 사용자에게 여러 컨텐츠를 안전하게 전송하는 글로벌 콘텐츠 전송 네트워크 서비스(CDN)이다.
AWS글러벌 인프라와 직접 연결된 물리적 위치 뿐 아니라 DDoS와 같은 외부 공격을 완화하는 AWS Shield, 앱 오리진인 S3등 다양한 AWS 서비스와 연동되는 소프트웨어가 포함되어 있다.

특징
1. CloudFront Global Edge 서비스
글로벌 사용자를 대상으로 적은 지연시간으로 콘텐츠 제공을 위해 CDN PoP의 글로벌 네트워크를 보유하고 있다. 전세계 글로벌 CDN 밴더중 가장 빠르게 성장하는 기업

2. 오리진(Origins) 서비스
오리진으로 여러 AWS리소스와 Custom 시스템 사용을 지원한다. S3, EC2, ELB, 사용자지정 오리진등을 지정할 수 있다.

3. 콘텐츠 제공 방식

  1. 사이트에 파일과 같은 하나이상의 객체를 요청
  2. 최적으로 서비스할 수 있는 CloudFront 엣지로케이션으로 요청을 라우팅, 지연시간과 관련해 가장 가까운 위치로 라우팅함
  3. 엣지 로케이션에서 해당 캐시에 요청된 파일이 있는지 확인후 사용자 반환 없으면 오리진서버로 전달후 파일을 사용자에게 전달

주요기능
1. 정적콘텐츠에 대한 캐싱 서비스와 비디오 스트리밍 서비스
온디맨드 미디어 스트리밍 서비스를 제공하 수 있다. 온디맨드 스트리밍을 위해 CloudFront를 사용하면 일반적인 형식의 동영상 스트리밍을 제공할 수 있으며 Elemental Media Convert와 같은 서비스를 사용하여 라이브 스트리밍 서비스를 제공할 수 있다. 정적 컨텐츠를 AWS백본 네트워크와 Edge서버를 활용하면 더 빠르고 안전한 환경을 제공할 수 있다.

2. 동적 컨텐츠에 대한 캐싱 서비스
동적 파일에 대해서도 캐싱을 할 수 있으며 이중 빈번하게 갱신되거나 동적인 업데이트가 피요한 페이지나 컨텐츠에 대해서도 TTL을 설정하여 캐싱을 지원한다.

3. 보안서비스
웹 사이트 오픈시 불특정 다수 국가에서 접속을 시도하거나 DDoS공격을 받을 수 있는데 CloudFront는 다양한 보안 서비스를 제공한다.

  • Shield를 통한 DDoS 공격 차단 : 외부로부터 일반적인 공격유형에 대한 방어 및 자동 탐지/대응 지원
  • WAF를 통한 웹트래픽 모니터링 및 차단 : HTTP/HTTPS 요청을 모니터링 하여 웹트래픽에 대한 모니터링과 사용자 지정 규칙에 따른 트래픽을 차단할 수있는 웹 어플리케이션 방화벽 서비스 제공
  • Signed URL/Cookie를 통한 컨텐츠 보호 : 인터넷을 통해 유료 사용자나 특정 인증을 통과한 사용자에게만 컨텐츠를 제공하여 프라이빗 컨텐츠에 대해 안전하게 접근할 수 있도록 서비스 구성
  • HTTPS Redirection, SSL인증서 연동 서비스 : SSL을 통한 HTTPS환경 구성할 수 있고, 이미 가지고 있는 SSL을 등록하거나 AWS에서 제공하는 자체 SSL서비스(ACM)과 연동하여 무료로 ELB에서도 사용이 가능하고 등록/업데이트 갱신 모두 AWS 내부에서 무료로 제공한다.

4. 비용 최적화를 통한 비용 절감
CloudFront를 사용하면 S3 bucket, EC2 instance, ELB와 같은 서비스의 네트워크 OUT을 통한 비용을 지불하지 않으며 CloudFront 사용료에 대한 부분만 지불하게 된다. 다시말해 오리진이 Amazon 내에 있는 경우 네트워크 out에 대한 비용을 지불하지 않게 되므로 네트워크 사용료에 대한 최적화를 통해 비용 절감이 가능하다.

CloudFront 실습

S3 정적 웹사이트 구성

1. S3로 이동후 버킷만들기

2. 버킷 이름과 리전 설정후 폴더 만들기

3. 만든 폴더에 아무 사진이나 넣어두기

4. 객체를 퍼블릭 엑세스로 변경후 링크확인

CloudFront 웹배포 생성 후 S3와 연결

1. CloudFront로 이동

2. 배포생성 클릭

3. 원본 도메인으로 S3를 선택후 나머지는 필요에 따라 설정

4. 활성화 확인

5. 만들어진 CloudFront의 배포 도메인 복사

6. 메모장으로 html파일을 만든후 저장

7. S3에 파일 업로드, 퍼블릭권한 부여

8. html파일의 링크로 접속후 확인

9. CloudFront DNS에 경유지/dobby.html을 추가하여 확인

이상으로 S3 CloudFront 연동을 완료하였습니다. 마지막에 CloudFront DNS에 경유지/html의이름.html을 안하게되면 아무것도 없는 파일이라고 나오게 됩니다.
삭제를 생활화 합시다.

profile
devops engineer가 되기 위해

0개의 댓글