AWS(Amazon Web Service)

[AWS] Amazon S3 - Baseline Performance(기준성능)

yunseohhe 2024. 11. 2. 12:53

Baseline Performance

  • 기본적으로 아마존 S3는 매우 높은 요청 수로 자동으로 스케일링되며 S3에서 첫 번째 바이트를 가져오는 데 100~200밀리초의 매우 짧은 지연 시간을 갖는다.
  • 버킷 내에서 prefix당 초당 3,500개의 넣기(PUT), 복사(COPY), 올리기(POST) 또는 삭제(DELETE)를 하거나 5,500개의 가져오기(GET) 또는 헤드(HEAD)요청을 가져온다.
  • 접두사당 초당이 무엇을 의미할까?
      - 버킷의 접두사 수에는 제한이 없다.
      - file이라는 이름의 객체 4개를 예를 들어보자.
           : bucket/folder1/sub1/file => /folder1/sub1/ 
             이 경우 접두사는 버킷과 파일 사이의 모든 항목이 된다.(슬래시 폴더 1 슬래시 서브 1) 초당 3,500개의 넣기와 5,500개의 가져오기를 얻을 수 있다는 의미이다. 
           : bucket/folder1/sub2/file => /folder1/sub2/
             또 다른 폴더 1과 하위폴더 2가 있는경우, 접두사는 버킷과 파일 사이의 모든 항목이다. (슬래시 폴더1 슬래시 하위2) 하나의 접두사에 대해 3,500개의 넣기와 5,500개의 가져오기를 얻는다.
           :
    bucket/1/file => /1/
           : bucket/2/file => /2/
  • 위의 예시로든 4개의 접두사 모두에 균등하게 읽기를 분산하면 헤드 및 가져오기에 대해 초당 22,000개의 요청을 달성할 수 있다.

 

S3 Performance(성능)과 최적화하는 방법

Multi-Part upload(멀티파트 업로드)

  • 100MB가 넘는 파일에는 멀티파트 업로드를 사용하는 것이 좋다. 그리고 5GB가 넘는 파일에는 반드시 사용해야 한다. 
  • 멀티파트 업로드는 업로드를 병렬화하므로 전송속도를 높여 대역폭을 최대화하는 데 도움이 된다.
  • 위의 다이어그램을 보면 더 쉽게 이해할 수 있다.
       - 이미지에 있는 큰 파일을 아마존 S3에 업로드한다고 해보자. 우리는 그러면 부분적으로 나눌 것이다. 따라서 해당 파일의 작은 덩어리인 각 부분이 아마존 S3에 병렬로 업로드된다. 모든 부분이 업로드되면 다시 큰 파일로 다시 합칠 수 있다.

S3 Transfer Acceleration(S3 전송 가속화)

 

  • 파일을 AWS 엣지 위치로 전송하여 전송 속도를 높이는 것이다.
  • 해당 데이터가 대상 지역의 S3 버킷으로 전달된다.
  • 전송 가속화는 멀티파트 업로드와 호환된다.
  • 위의 이미지를 예시로 한번 살펴보자.
      - 미국에 파일이 있고, 이것을 호주에 있는 S3 버킷에 업로드하려고한다. 그래서 미국의 엣지 위치를 통해 해당 파일을 업로드한다. 이는 매우 빠르고 공공 인터넷을 사용하게 될 것이다. 그런 다음 해당 엣지 위치에서 호주의 아마존 S3 버킷으로 빠른 프라이빗 AWS 네트워크를 통해 파일을 전송한다.
  • 공공 인터넷의 사용량을 최소화하고 프라이빗 AWS 네트워크의 사용량을 최대화하기때문에 전송가속화라고 불린다.

 

S3 Performance - S3 Byte-Range Fetches

  • 가장 효율적인 방법으로 파일을 읽는 것은 "S3 바이트"라는 것이 있다.
  • 특정 바이트 범위를 요청하여 GET 요청을 병렬화한다.
  • 장애 발생 시 복원력을 향상시킨다.
  • 다운로드 속도를 높이는 데 사용할 수 있다.

  • S3에 파일이 있다고 가정해보자.
      - 용량이 매우 큰 파일이다. 파일의 처음 몇 바이트인 첫 번째 부분을 요청하고, 그 다음 두 번째 부분, 그 다음 n번째 부분을 요청하고 싶을 수도 있다. 그래서 이 모든 부분을 구체적으로 요청한다.
  • 파일의 특정 바이트 범위만 요청하기 때문에 바이트 범위 가져오기라 불린다.
  • 여기서 요지는 가져오기를 병령화하고 다운로드 속도를 높일 수 있다는 것이다.

  • 두 번째 사용 사례는 파일의 일부만 검색하는 것이다.
  • 예를 들어, S3에서 파일의 처음 50바이트가 헤더라는 것을 알고 파일에 대한 정보를 제공하면 헤더를 발행할 수 있다.
  • 첫 번째 50바이트를 사용하여 헤더에 대한 바이트 범위를 요청하면 해당 정보를 매우 빠르게 얻을 수 있다.