CloudFront는 얼마나 빠를까? 속도 테스트를 해봤습니다

S3에서 다운로드 하는 것과, CloudFront에서 다운로드 하는 속도 차이를 비교해 봤습니다.
2021.08.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 S3에서 파일을 다운로드 하는 것과, CloudFront를 사용했을 때의 속도를 비교해 봤습니다.

환경 구축

  • S3 버킷 생성
  • EC2 인스턴스 생성
  • S3 권한을 가진 IAM 역할 생성
  • EC2에 IAM 역할 할당

다음과 같은 순서로 환경을 구축해 보도록 하겠습니다.

S3 버킷 생성

버킷 이름은「s3-cloudfornt-test」, 리전은「서울」을 선택했습니다.

EC2 인스턴스 생성

서울 리전에서 EC2 생성을 합니다.

「Amazon Linux 2 AMI (HVM), SSD Volume Type」을 선택합니다.

t2.micro를 선택하고「다음:인스턴스 세부 정보 구성」버튼을 클릭합니다.

퍼블릭 IP 자동 할당을 활성화 해주고 다음 버튼을 클릭합니다.

그 외에는 전부 디폴트 값으로 선택하고 넘어갑니다.

마지막에는「키 페어 없이 계속」을 선택하고 인스턴스 시작 버튼을 클릭해서 인스턴스를 생성합니다.

이제 EC2 인스턴스에 접속해서, s3 리스트를 출력해 보면 다음과 같은 에러 메시지가 출력됩니다. 현재 EC2 파일에 설정된 profile이 없기 때문에 이러한 에러가 출력됩니다. 로컬 환경일 경우 profile 설정을 해야 하지만, AWS 콘솔 환경에서는 IAM 역할을 인스턴스에 연결하는 것만으로 해결이 가능합니다.

  • 로컬 환경에서 profile 설정은 여기를 참고 해주세요.
  • 구성 및 자격 증명 파일 설정에 관해서는 여기를 참고 해주세요.

S3 권한을 가진 IAM 역할 생성

IAM 역할에서「역할 만들기」버튼을 클릭합니다.

EC2를 선택합니다.

「AmazonS3FullAccess」선택합니다. 이 외에는 디폴트 값으로 IAM 역할을 생성합니다.

이제 EC2 인스턴스에서「IAM 역할 수정」을 클릭합니다.

좀 전에 생성한 IAM 역할을 선택하고 저장 버튼을 클릭합니다.

다시 EC2 인스턴스에서 aws s3 ls 명령어를 입력하면 성공적으로 s3 list를 출력하는 것을 볼 수 있습니다.

S3에서의 파일 다운로드

EC2 인스턴스에서 S3 파일을 다운로드하기 위해 S3 버킷에 23mb 동영상 파일을 업로드 했습니다.

테스트 리전은

  • 서울
  • 도쿄
  • 캘리포니아
  • 프랑크푸르트

리전에서 위와 동일하게 EC2 인스턴스를 생성해서 S3 버킷의 파일을 다운로드 했습니다.

  • wget https://s3-cloudfornt-test.s3.ap-northeast-2.amazonaws.com/test.mp4

해당 명령어로 다운로드를 실시합니다.

먼저 서울 리전에서 다운로드 한 결과입니다. 버킷이 서울 리전으로 설정되어 있기 때문인지 94.3MB/s 0.3s의 속도를 보여줍니다.

이어서 도쿄 리전에서 다운로드 한 결과입니다. 서울보다 조금 느린 35.2MB/s 0.7s의 속도를 보여줍니다.

캘리포니아에서는 다운로드 속도가 확연히 차이가 나기 시작합니다.

마지막으로 프랑크푸르트는 무려 3.06MB/s 8.6s의 속도를 보여줍니다.

CloudFront에서의 파일 다운로드

CloudFront에서 배포 생성 버튼을 클릭합니다.

원본 도메인은 좀 전에 만들어두었던 S3 버킷을 선택합니다.

원본 경로의 경우 AWS 리소스나 사용자 지정 Origin에 있는 디렉터리에서 콘텐츠를 요청하게 하려면 슬래시(/) 뒤에 디렉터리 경로를 입력합니다. 예를 들어, /production을 작성했다면 {OriginDomainName}/sample.jpg를 요청했을 때, {OriginDomainName}/production/sample.jpg에 대한 요청이 됩니다.

그 외에는 디폴트값으로 cloudfront를 생성합니다.

  • wget https://d3c2y57p8p48c0.cloudfront.net/test.mp4

배포 도메인 이름을 확인하고, 해당 도메인 이름으로 다운로드를 실시합니다.

먼저 cloudfront 도메인 이름으로 서울 리전에서 다운로드 한 결과입니다. 105MB/s 0.2s로 아까보다 조금 빠른 속도를 보여줍니다.

다음 도쿄 리전에서는 35.2MB/s 0.7s에서 75.2MB/s 0.3s의 속도로, 조금 전 보다 빠른 속도를 보여주고 있습니다.

캘리포니아 EC2 인스턴스에서 S3를 통해 다운로드 했을 때는 3.71MB/s 6.1s 속도였지만, cloudfront에서는 96.5MB/s 0.2s로 엄청난 속도로 다운로드를 진행 하는 것을 볼 수 있습니다.

프랑크푸르트는 무려 3.06MB/s 8.6s의 속도에서 107MB/s 0.2s로 바뀐 것을 볼 수 있습니다.

S3와 CloudFront 속도 비교 정리

리전

S3 

CloudFront

서울

94.3MB/s 0.3s

105MB/s 0.2s

도쿄

35.2MB/s 0.7s

75.2MB/s 0.3s

캘리포니아

3.71MB/s 6.1s

96.5MB/s 0.2s

프랑크푸르트

3.06MB/s 8.6s

107MB/s 0.2s