S3 Transfer Acceleration과 Multipart Upload: 대용량 파일 업로드 최적화
S3 Transfer Acceleration과 Multipart Upload로 대용량 파일 전송 속도를 최대 61% 향상시키는 방법을 알아봅니다.
관련 시험 도메인
- Domain 3: Design High-Performing Architectures
핵심 요약 (BLUF)
100MB 이상 파일은 Multipart Upload로 병렬 전송하고, 지리적으로 먼 지역에서는 Transfer Acceleration으로 Edge Location을 활용하세요. 두 기능을 함께 사용하면 업로드 시간을 최대 61% 단축할 수 있습니다.
시험 팁
시험 핵심: "대용량 파일 + 장거리 전송 = Transfer Acceleration + Multipart Upload 조합"
S3 파일 전송의 한계
표준 S3 업로드에는 몇 가지 제한이 있습니다:
| 제한 사항 | 값 |
|---|---|
| 단일 PUT 최대 크기 | 5GB |
| 객체 최대 크기 | 5TB |
| 표준 업로드 안정성 | 네트워크 끊김 시 처음부터 재시작 |
문제 상황:
- 5GB 이상 파일은 단일 PUT으로 업로드 불가
- 장거리 전송 시 지연 시간 증가
- 네트워크 불안정 시 대용량 파일 업로드 실패
Multipart Upload란?
대용량 파일을 여러 개의 작은 파트로 나누어 병렬 업로드하는 기능입니다.
작동 방식
┌─────────────────────────────────────────────────────────────┐
│ 5GB 파일 │
├───────────┬───────────┬───────────┬───────────┬────────────┤
│ Part 1 │ Part 2 │ Part 3 │ Part 4 │ Part 5 │
│ (1GB) │ (1GB) │ (1GB) │ (1GB) │ (1GB) │
└─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┴──────┬─────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
[Thread 1] [Thread 2] [Thread 3] [Thread 4] [Thread 5]
│ │ │ │ │
└───────────┴───────────┼───────────┴────────────┘
▼
[S3 버킷]
(자동 조립 완료)
Multipart Upload의 장점
- 병렬 처리: 여러 파트를 동시에 업로드
- 재시도 효율성: 실패한 파트만 다시 업로드
- 5GB 이상 지원: 최대 5TB까지 업로드 가능
- 일시 중지/재개: 업로드를 중단하고 나중에 계속 가능
파트 크기 제한
| 항목 | 값 |
|---|---|
| 최소 파트 크기 | 5MB (마지막 파트 제외) |
| 최대 파트 크기 | 5GB |
| 최대 파트 수 | 10,000개 |
| 권장 파트 크기 | 25-100MB |
시험 팁
계산 문제 대비: 5TB 파일을 업로드하려면 최소 몇 개의 파트가 필요한가? → 5TB ÷ 5GB(최대 파트) = 1,000개 파트 (10,000개 제한 내)
Transfer Acceleration이란?
AWS Edge Location을 통해 S3로의 전송 속도를 가속화하는 기능입니다.
작동 방식
[사용자: 서울] [S3 버킷: 버지니아]
│ │
│ ← 일반 전송: 공용 인터넷 경유 → │
│ (지연 시간 높음, 불안정) │
│ │
▼ ▼
┌────────────┐ AWS 백본 네트워크 ┌────────────┐
│ Edge Loc. │ ════════════════════════> │ S3 │
│ (서울) │ (최적화된 프라이빗 경로) │ (버지니아) │
└────────────┘ └────────────┘
Transfer Acceleration 속도 향상
| 거리 | 일반 업로드 | Acceleration | 향상률 |
|---|---|---|---|
| 같은 리전 | 빠름 | 비슷 또는 느림 | 0% |
| 대륙 간 | 중간 | 빠름 | 50-100% |
| 지구 반대편 | 느림 | 매우 빠름 | 200-500% |
시험 팁
주의: Transfer Acceleration은 장거리 전송에서 효과적입니다. 같은 리전 내에서는 오히려 느려질 수 있습니다.
두 기능 함께 사용하기
Transfer Acceleration과 Multipart Upload를 조합하면 최대 61% 업로드 시간 단축이 가능합니다.
AWS CLI 사용 예시
# 1. 버킷에서 Transfer Acceleration 활성화
aws s3api put-bucket-accelerate-configuration \
--bucket my-bucket \
--accelerate-configuration Status=Enabled
# 2. Accelerate 엔드포인트로 업로드
aws s3 cp large-file.zip s3://my-bucket/ \
--endpoint-url https://s3-accelerate.amazonaws.com
Python boto3 예시
import boto3
from boto3.s3.transfer import TransferConfig
from botocore.config import Config
# Transfer Acceleration 활성화
s3_config = Config(
s3={'use_accelerate_endpoint': True}
)
# Multipart 설정
transfer_config = TransferConfig(
multipart_threshold=100 * 1024 * 1024, # 100MB 이상 시 multipart
max_concurrency=10, # 10개 동시 업로드
multipart_chunksize=25 * 1024 * 1024, # 25MB 청크
use_threads=True
)
s3_client = boto3.client('s3', config=s3_config)
# 파일 업로드
s3_client.upload_file(
'large-file.zip',
'my-bucket',
'large-file.zip',
Config=transfer_config
)
언제 무엇을 사용해야 할까?
Multipart Upload만 사용
- 100MB 이상의 대용량 파일
- 같은 리전 내 업로드
- 네트워크가 불안정한 환경
- 5GB 초과 파일 (필수)
Transfer Acceleration만 사용
- 작은 파일의 장거리 전송
- 전 세계 사용자의 업로드
- 일관된 전송 속도 필요
둘 다 사용
- 대용량 파일 + 장거리 전송 (최적)
- 글로벌 미디어 업로드
- 대륙 간 백업/복제
Transfer Acceleration 요금
| 데이터 경로 | 요금 (GB당) |
|---|---|
| Edge → S3 (미국, 유럽, 일본) | $0.04 |
| Edge → S3 (기타 리전) | $0.08 |
| S3 → Edge (다운로드) | $0.04-$0.08 |
비용 최적화 팁:
- 속도 향상이 없으면 요금 미청구
- 속도 비교 테스트 도구로 미리 확인
속도 테스트 방법
AWS는 S3 Transfer Acceleration Speed Comparison 도구를 제공합니다:
https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html
이 도구로 각 리전별 일반 업로드 vs Acceleration 속도를 비교할 수 있습니다.
제한 사항 및 주의사항
Transfer Acceleration 제한
-
버킷 이름 규칙
- DNS 호환 필수
- 마침표(.) 포함 불가
-
활성화 시간
- 설정 후 최대 20분 대기
-
비용 발생 조건
- 속도 향상 시에만 요금 청구
Multipart Upload 주의사항
- 불완전한 업로드 정리
- 실패한 multipart 업로드는 스토리지 비용 발생
- Lifecycle 정책으로 자동 삭제 설정 권장
{
"Rules": [{
"ID": "AbortIncompleteMultipartUpload",
"Status": "Enabled",
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": 7
}
}]
}
SAA-C03 시험 출제 포인트
- ✅ 5GB 초과 파일: "반드시 Multipart Upload 사용"
- ✅ 장거리 전송 최적화: "Transfer Acceleration + Edge Location"
- ✅ 비용 vs 속도: "같은 리전에서는 Transfer Acceleration 불필요"
- ✅ 실패 복구: "Multipart는 실패한 파트만 재전송"
- ✅ 불완전한 업로드: "Lifecycle 정책으로 정리 필요"
시험 팁
시험 문제 예시: "글로벌 사용자가 동영상(2GB)을 S3(us-east-1)에 업로드합니다. 아시아 사용자의 업로드 속도가 느립니다. 가장 비용 효율적인 해결책은?" → 정답: Transfer Acceleration 활성화 (Edge Location 활용)
자주 묻는 질문 (FAQ)
Q: Multipart Upload는 자동으로 적용되나요?
AWS CLI와 SDK는 기본적으로 특정 크기 이상의 파일에 자동으로 Multipart Upload를 적용합니다. CLI는 8MB, boto3는 8MB가 기본 threshold입니다.
Q: Transfer Acceleration 비용이 추가로 발생하는데 항상 사용해야 하나요?
아니요. 같은 리전 내 전송이나 이미 빠른 네트워크 환경에서는 불필요합니다. 속도 비교 테스트 후 결정하세요.
Q: Multipart Upload가 실패하면 어떻게 되나요?
업로드된 파트는 S3에 남아 스토리지 비용이 발생합니다. AbortIncompleteMultipartUpload Lifecycle 정책을 설정하여 자동 정리하세요.
Q: Transfer Acceleration은 다운로드에도 적용되나요?
네. 업로드와 다운로드 모두 가속화됩니다. 같은 accelerate endpoint를 사용합니다.
Q: S3 버전 관리가 활성화된 버킷에서도 Multipart Upload가 작동하나요?
네. Multipart Upload로 업로드된 객체도 버전 관리됩니다. 완료된 업로드는 새 버전으로 저장됩니다.