Development

AWS S3 Transfer Acceleration 테스트

chbae 2024. 6. 11. 05:32
728x90

배경

회사에서 프로젝트를 하는데 이미지 저장 공간으로 CI에서 빌드한 후 AWS에 Artifactory를 운영하고 있다. 미국, 인도, 중국, 한국 등 전세계적으로 판매되는 차량이기 때문에 각 지역에 QA와 개발자들이 이미지를 받아서 테스트를 하는데 경우에 따라서는 5시간, 12시간까지 걸리기도 한다. 이를 줄이고자 리서치를 하던 도중 AWS에서 CDN (Content Delivery Network) 으로 사용하는 Clond Front를  알게 되었고 S3에서는 Transfer Acceleration 하나만 특정 bucket에서 Enable 하여 쉽게 사용할 수 있다는 것도 알게 되었다. 이를 가지고 미국, 인도, 한국 등에서 테스트를 진행하였다.

AWS S3

Transfer Acceleration 이란?

Amazon S3 Transfer Acceleration을 사용하면 대형 객체의 장거리 송신과 관련하여 Amazon S3의 콘텐츠 송수신 속도가 50%에서 500%까지 증가한다. 웹 애플리케이션이나 모바일 애플리케이션이 있는 고객으로서 해당 애플리케이션이 광범위하게 사용되거나 S3 버킷에서 멀리 떨어져 호스팅되는 경우에는 인터넷상의 다운로드 속도가 느리거나 변동성이 클 수 있다. S3TA(S3 Transfer Acceleration)는 전송 작업에 영향을 줄 수 있는 인터넷의 속도, 정체 문제, 라우팅에서 변동성을 줄이고 원격 애플리케이션과 관련하여 S3까지의 거리를 논리적으로 줄인다. S3TA는 전 세계에 분산된 Amazon CloudFront의 엣지 로케이션을 통해 AWS 백본 네트워크상에서 트래픽을 라우팅하고 네트워크 프로토콜 최적화를 사용하여 전송 성능을 개선한다. S3TA는 S3 콘솔에서 몇 번의 클릭만으로 켜고 속도 비교 도구를 사용하여 본인의 위치에서 그 이점을 테스트해 볼 수 있다. S3TA를 사용하면 가속화된 전송 작업에 대해서만 비용을 부담하게 된다.

속도 비교 도구에 접속해서 테스트

 

위의 그림은 AWS에서 제공하는 속도 비교 사이트에 접속해서 기다리면 S3 Upload 테스트를 Transfer Acceleration 기능을 사용했을 때와 안했을 때를 비교해서 해준 결과이다. 필자가 독일에 있기 때문에 이 기능이 크게 의미는 없다는 결과가 나왔다. 하지만 한국이나 미국등에서는 엄청나게 빠른 결과가 나왔다.

테스트 진행 환경

8.2GB 파일을 가지고 Artifactory에서 그대로 받아왔을 경우, Transfer Acceleration 활성화 안하고 S3 버킷에서 다운로드 받았을 경우, Transfer Acceleration 활성화 하고 받아왔을 경우를 가지고 미국, 인도, 한국에 있는 개발자들의 도움으로 테스트하였다. 제약사항은 Transfer Acceleration를 활성화 했을 경우 브라우저에서 받을  수 있는 경로를 못찾아서 AWS CLI 도구를 사용했다는 것이다. 그리고 일부는 회사 망이여서 네트워크 구성이 복잡할 수 있다는 것이다. 그외에 다른 것들은 크롬 브라우저에서 URL 링크를 통해 받았다.

S3에서  Transfer acceleration 설정

S3에서 Transfer Acceleration 설정하는 방법은 간단하다. S3 Bucket 단위로 설정 가능하며 Property에서 Transfer acceleration 으로가서 Disable를 Enable로만 변경시켜주면 된다. 그러면 xxx.s3-accelerate.amazonaws.com 의 endpoint가 나오고 이 주소를 endpoint 옵션을 주고 다운로드 하면 된다.

 

web UI에서 endpoint를 주고 받는 방법은 아직 못찾았다. 기본 주소가 나오고 중간 주소를 s3-accelerate.amazonaws.com 로 바꾸면 된다고 하지만 아직 보안 설정으로 인해 public 하게 오픈해놓고 테스트는 해보지 못했다.

출처: https://stackoverflow.com/questions/75048061/unable-to-enable-transfer-acceleration-on-aws-s3-bucket

테스트 결과

테스트는 http 주소를 받아서 기본적으로 진행했고 Transfer Acceleration을 사용할 경우 AWS CLI를 사용했다. 사용했던 명령어는 $ aws configure로 account 설정 (이때 AWS Management Console로 가서 s3 관련 일부 권한을 계정에 주고 key를 받아야한다.)을 하고 $ aws s3 ls 명령어를 통해 연결이 잘 되었는지 확인을 한다.

 

실제 테스트 명령어는

$ aws s3 cp s3://[bucket]/파일명 ./ --endpoint-url https://s3-accelerate.amazonaws.com 이고 transfer acceleration을 사용안하려면 뒤에 --endpoint-url 부분을 제거하면 된다.

  Artifactory (현재) S3 S3 with Transfer Acceleration (AWS CLI 사용)
미국 5-6 MB/s 8 MB/s 27 MB/s
인도 422 KB/s 3.9 MB/s -
한국 358 KB/s 18.5 MB/s 46.8 MB/s

비용

EC2와 S3 의 다운로드 비용은 거의 같다. 단, 지역마다 조금씩 다르지만 S3에서 tranfer acceleration을 활성화하는 경우 다운로드 할 때마다 비용이 든다. 그래서 tranfer acceleration을 활성화 안하면 비용차이는 없고 이제 Artifactory에서 어떻게 S3를 사용하도록 설정하느냐를 알아볼 예정이다. 물론 결과를 통해 결정을 하고 이 실제 설정은 Devops 팀에서 할 예정이다.

결론

테스트 결과만 봐도 S3로 바꾸는 것만으로도 속도차이가 확연히 좋아지는 것을 알 수 있다. 설정에 큰 문제가 없으면 당연히 S3로 가는것이 좋다고 생각한다. 그리고 공식 릴리스이고 Market에서 받는 것이면 Transfer Acceleration 링크도 같이 제공해주면 좋을 것 같다. 아직 UI에서 받는 방법은 못찾았지만 이것도 Devops 팀에서 잘 해줄 것으로 기대한다. 겸사겸사 알아보려고 한다.

 

Chatgpt 4o에 관련 내용을 물어본 답변을 붙이는 것으로 마무리한다.