DevOps

[우당탕탕 AWS] 느린녀석은 필요없어 (2) : AWS CloudFront 를 이용한 CDN 구축

ooin 2024. 12. 25. 18:57
반응형

CDN 이란?

CDN(Content Delivery Network)은 전 세계에 분산된 서버 네트워크를 통해 콘텐츠를 빠르고 효율적으로 제공하는 기술입니다.

 

CDN 장점

  1. 속도 향상: 사용자와 가까운 서버에서 콘텐츠를 제공하여 로딩 시간을 단축합니다.
  2. 비용 절감: 캐싱을 통해 원본 서버의 부하를 줄이고 데이터 전송 비용을 절감합니다.
  3. 확장성: 트래픽 급증에도 안정적으로 콘텐츠를 제공할 수 있습니다.
  4. 글로벌 서비스 지원: 전 세계 사용자에게 균일한 성능을 제공합니다.
  5. 보안 강화: DDoS 방어, HTTPS 지원, WAF 통합으로 보안을 강화합니다.

CDN을 구축한 이유

  1. 트래픽 증가로 인한 S3 객체 조회 비용 증가
    • 서비스 트래픽이 증가하면서 S3에서 정적 콘텐츠(이미지, 동영상, JavaScript 파일 등)를 직접 조회하는 빈도가 늘어났습니다. 이로 인해 S3의 데이터 전송 비용이 크게 증가했습니다.
    • 원본 서버(S3)의 부하를 줄이고 비용을 최적화할 필요가 있었습니다.
  2. 글로벌 사용자 대상의 콘텐츠 로딩 속도 개선
    • 프로젝트가 글로벌 서비스를 목표로 확장되면서, 지리적으로 먼 지역의 사용자들은 콘텐츠 로딩 속도가 느려지는 문제가 발생했습니다.
    • 사용자 경험(UX)을 개선하기 위해 콘텐츠를 빠르게 제공할 수 있는 솔루션이 필요했습니다.

이 두 가지 문제를 해결하기 위해 AWS CloudFront를 사용해 CDN을 구축했습니다.

 

 

CloudFront 배포 생성

  1. CloudFront 배포 생성
    • AWS Management Console에서 CloudFront로 이동합니다.
    • "배포 생성" 버튼을 클릭합니다.

      AWS CloudFront
       
      CloudFront 배포 생성
      배포 생성 - 1
    • 원본 도메인 이름: S3 버킷의 도메인 이름을 선택하거나 입력합니다.
    • 원본 경로: 기본적으로 비워둡니다.
    • 원본 액세스: S3 버킷과 CloudFront 간의 보안을 강화하려면 OAI(원본 액세스 아이덴티티)를 사용합니다.
      • "원본 액세스 아이덴티티(OAI)"를 생성하고 S3 버킷 정책을 복사해줍니다. 

        배포 생성 - 2
         
      • 기본 캐시 동작을 설정합니다.
        • 뷰어 프로토콜 정책: "Redirect HTTP to HTTPS" 또는 "HTTPS Only"를 선택합니다.
        • 캐싱 정책: "CachingOptimized" 또는 필요에 따라 사용자 정의합니다.


          배포 생성 - 3

          배포 생성 - 4
           
    • WAF (Web Application FireWall) 을 활성화하면 비용이 추가적으로 발생할 수 있으니 확인 후에 필요하다면 활성화합니다.
      배포 생성 - 5
    • "가격 분류" 항목에서 CloudFront 가 적용될 리전을 선택할 수 있습니다.
    생성된 배포의 원본탭


  2. S3 정책 수정
    1. CloudFront 생성 중 복사한 정책을 S3 버킷 정책에 적용

 

 

 

3. CloudFront 도메인 적용

   1. CloudFront 대체 도매인 생성

 

cloudfront 선택 후 일반 -> 설정 -> 편집

 

 

대체 도메인 추가

 

 

 

 

   2. Route53 레코드 추가

    

Route53 에 등록된 도메인에 레코드를 추가

 

4. 속도 비교

 

메인페이지의 배너에 사용되는 가장 큰 사이즈의 이미지를 테스트 해보았습니다.

  • CDN 적용 전

  • CDN 적용 후

 

결과적으로 242ms 에서 136ms 로 1.8배 정도 빨라진 것을 확인할 수 있었습니다.

반응형