AWS의 S3는 Static한 파일을 저장/배포하기에 매우 훌륭한 저장소지만, 버킷의 Region이 접속지역과 멀리 떨어진 경우 응답시간과 전송시간 모두 사용자들의 인내심을 테스트하게 만드는 단점이 있다. 사실 다운로드의 경우 CDN(CloudFront)을 이용해 개선 할 수 있지만, 업로드는 방법이 없다.

현재 회사에서 운영중인 서비스는 유럽에 위치한 주요 고객(이라 적고 갑이라 읽는다)을 위해 대부분의 버킷을 eu-west-1에 위치시키고 있다.  eu-west-1의 버킷의 경우 100KB의 파일을 업로드/다운로드하는데 1~3초, 5MB 정도의 파일은 수십초가 소요된다.  (편리함의 대가로 시간을 지불하고 있었던 것이다).

매일같이 시간을 지불하고 있던 어느날, S3에 Transfer Acceleration을 활용하면 적게는 2~3배에서 많게는 10배 정도 업로드/다운로드 속도가 빨라진다는 글을 접하게 됐다.  평소 의심이 많고, 두눈으로 보기전엔 믿지 않는 분들은 AWS에서 제공하는 속도비교 페이지에 접속해보시기 바란다.  7번 정도 확인을 해봤는데 eu-west-1의 경우 6~21배 정도 속도차이가 있었다.

이제 Transfer Acceleration의 효과를 봤으니, 1) 속도 개선이 어떻게 이루어지고 2) 적용 방법은 어떻게 되며 가장 중요한 그래서 3) 얼마를 더 내야 되는지 알아보자.

Overview

공식 설명은 ‘S3 Transfer Acceleration은 AWS S3로 데이터를 전송 할 때, AWS의 Edge 인프라와 네트워크 프로토콜을 최적화하여 전송 속도를 개선하는 기능’ 이라고 되어 있습니다.

사용자가 S3 Bucket에 데이터를 전송 할 때, 직접 Origin 서버로 전송하는게 아니라 AWS의 Edge 인프라를 활용하여 사용자는 가장 가까운 Edge 서버로 데이터를 전송하고, Edge 서버에서 Origin 서버로 최적화된 네트워크 프로토콜과 전용회선을 활용하여 데이터를 전송함으로써 속도를 개선합니다. 그림으로 표현하면 아래와 같습니다.

Before

After

자칫 복잡해 보일 수 있는 아래의 방식이 5~10배 이상 빠르다는건 Edge 서버와 S3 사이의 네트워크 프로토콜과 데이터 이동이 최적화되었다는 반증일겁니다. 실제로 Edge 인프라를 활용하기 위해 Transfer Acceleration을 사용하는 요청은 Endpoint가 기존과 다릅니다.

  • Original Endpoint: https://{your-bucket}.s3.amazonaws.com/
  • Accelerated Endpoint: https://{your-bucket}.s3-accelerate.amazonaws.com/

 

버킷에서 Transfer Acceleration 설정

Transfer Acceleration은 Bucket 레벨에서 적용할 수 있는 기능이기 때문에, 적용을 원하는 버킷의 속성에서 Transfer Acceleration을 활성화(Enable)해주면 됩니다.  활성화 방법은 아래 세가지 방법 중 평소 본인이 흠모하던 방법으로 하시면 됩니다. 자세한 방법은 링크를 참고하시는게 글을 쓰는 사람과 읽는 사람 모두의 정신건강에 이로울 것 같아 링크로 대체합니다.

Transfer Acceleration 활용

아쉽게도, 버킷에서 Transfer Acceleration 속성을 활성화하는 것으로 갑자기 빨라지는 건 아니고, 버킷에 파일을 업로드/다운로드를 하는 부분도 약간의 수정을 해야 합니다. SDK를 사용하고 있었다면 Flag를 활성화하는 수준이고, REST API를 사용하고 있었다면 Endpoint를 대체하는 수준으로 가능합니다. (역시나 우리 모두의 정신 건강을 위해 링크로 대체합니다)

Transfer Acceleration 비용

저장 비용에는 변화가 없으며, Transfer Acceleration을 이용한 전송에 추가 비용이 발생합니다. GB당 추가로 $0.04가 부과됩니다. (스벅에서 카페라떼 한잔을 참으면 약 100GB를 빠르게 전송 할 수 있습니다. 반대로 100GB를 느긋하게 전송하면 카페라떼를 한잔 사먹을 수 있습니다)

Benchmark Test

평소 의심이 많던 저는 AWS의 속도 비교 페이지를 온전히 믿지 못하고, 직접 벤치마크 테스트를 해봤습니다. 아래 표는 eu-west-1 버킷에 CLI를 이용하여 파일을 업로드/다운로드한 결과입니다. 파일의 크기가 크면 클수록 속도 개선이 드라마틱하게 이루어짐을 알 수 있습니다. 15MB 정도되는 파일의 경우 평균 43초 정도 소요되던 다운로드 속도가 4.7초로 개선된 것을 확인 할 수 있습니다.

 

주의사항
  • 설정 후 반영까지 최대 30분정도가 소요 될 수 있습니다.