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바이트를 사용하여 헤더에 대한 바이트 범위를 요청하면 해당 정보를 매우 빠르게 얻을 수 있다.
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] Amazon S3 - Storage Lens (2) | 2024.11.04 |
---|---|
[AWS] Amazon S3 - Select & Glacier Select / S3 Batch Operations (0) | 2024.11.03 |
[AWS] Amazon S3 - Event Notifications (0) | 2024.11.01 |
[AWS] Amazon S3 - Requester Pays (2) | 2024.10.31 |
[AWS] Amazon S3 - Lifecycle Rules (1) | 2024.10.31 |