멀티파트 업로드란?
- Amazon S3에 파일을 업로드 하면 S3 객체로 저장됩니다.
- 멀티파트 업로드는 객체를 더 작은 부분으로 나누고 각 부분을 개별적으로 업로드하게 됩니다. 모든 부분들이 업로드 된 경우 다시 합쳐지게 됩니다.

대용량 파일 업로드 시 멀티파트 업로드를 사용해야 하는 이유
더 높은 처리량 !
- 부분을 병렬적으로 업로드하여 처리량을 개선할 수 있습니다.
- EC2 서버 환경에서 S3에 1.3 GB인 동영상을 업로드 했을 시 90초가 걸렸으며 멀티파트 업로드 시 50초로 감축됐다. 약 45%의 성능 향상을 보였다.
단일 파일 최대 용량
- S3에 단일 작업으로 올릴 수 있는 객체 크기는 최대 5GB이다.
- 반면 멀티파트 업로드 API를 사용하면 최대 5TB 크기의 단일 객체를 업로드 할 수 있다.
업로드 일시 중지 및 재개
- 언제든지 부분들을 업로드 할 수 있다. 전체 프로세스를 일시 중지하고 나머지 부분을 나중에 업로드 할 수 있다.
멀티파트 업로드 성능 테스트해보기
테스트 결과
- 단일파일 업로드 시간
- 7MB인 mp4 동영상 → 1678ms, 약 1초
- 180MB인 mp4 동영상 → 9841ms, 약 9초
- 1.3GB인 mp4 동영상 → 90180ms, 약 90초
- 멀티파트 방식으로 s3에 업로드 할 때 걸린 시간
- 7MB인 mp4 동영상 → 1754ms, 약 1초
- 180MB인 mp4 동영상 → 4859ms, 약 4초
- 1.3GB인 mp4 동영상 → 50540ms, 약 50초
서버 사양에 따라 다르겠지만 청크 크기보다 작은 영상은 업로드 시간에서 큰 차이가 없다.
여기서 청크는 위에서 말한 부분이랑 같은 의미이며 한 개의 파일을 특정 크기만큼 자른 일부분이다.
영상 크기가 클 수록 멀티파트 방식으로 업로드 하는게 훨씬 높은 성능을 보여줍니다.
업로드 영상 크기에 청크 사이즈를 조절해서 업로드하면 시간이 더 빨라질 것이다.
멀티파트 업로드 프로세스

멀티파트 업로드 시작
- 멀티파트 업로드 시작 요청을 보내면 S3는 멀티파트 업로드에 대한 고유 식별자인 업로드 ID가 포함된 응답을 반환한다.
- 부품을 업로드하거나, 부품을 나열하거나, 업로드를 완료하거나, 업로드를 중지할 때마다 이 업로드 ID를 포함해야 합니다.
- 업로드되는 객체를 설명하는 메타데이터를 제공하려면 멀티파트 업로드 시작 요청에 메타데이터를 제공해야 합니다.
부분 업로드
- 부분을 업로드 할 때 업로드 ID 외에 부분 번호를 지정해야 합니다. 1에서 10,000 사이의 부품 번호를 선택할 수 있습니다.
- 부분 번호는 업로드 중인 개체에서 부분과 해당 위치를 고유하게 식별합니다.
멀티파트 업로드 완료
- 멀티파트 업로드를 완료하면 Amazon S3는 부분 번호를 기준으로 오름차순으로 부분을 연결하여 객체를 생성합니다.