SAABlog
스토리지중급

S3 Transfer Acceleration과 Multipart Upload: 대용량 파일 업로드 최적화

S3 Transfer Acceleration과 Multipart Upload로 대용량 파일 전송 속도를 최대 61% 향상시키는 방법을 알아봅니다.

PHILOLAMB-
S3Transfer AccelerationMultipart Upload파일 전송성능 최적화

관련 시험 도메인

  • 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의 장점

  1. 병렬 처리: 여러 파트를 동시에 업로드
  2. 재시도 효율성: 실패한 파트만 다시 업로드
  3. 5GB 이상 지원: 최대 5TB까지 업로드 가능
  4. 일시 중지/재개: 업로드를 중단하고 나중에 계속 가능

파트 크기 제한

항목
최소 파트 크기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 제한

  1. 버킷 이름 규칙

    • DNS 호환 필수
    • 마침표(.) 포함 불가
  2. 활성화 시간

    • 설정 후 최대 20분 대기
  3. 비용 발생 조건

    • 속도 향상 시에만 요금 청구

Multipart Upload 주의사항

  1. 불완전한 업로드 정리
    • 실패한 multipart 업로드는 스토리지 비용 발생
    • Lifecycle 정책으로 자동 삭제 설정 권장
{
  "Rules": [{
    "ID": "AbortIncompleteMultipartUpload",
    "Status": "Enabled",
    "AbortIncompleteMultipartUpload": {
      "DaysAfterInitiation": 7
    }
  }]
}

SAA-C03 시험 출제 포인트

  1. 5GB 초과 파일: "반드시 Multipart Upload 사용"
  2. 장거리 전송 최적화: "Transfer Acceleration + Edge Location"
  3. 비용 vs 속도: "같은 리전에서는 Transfer Acceleration 불필요"
  4. 실패 복구: "Multipart는 실패한 파트만 재전송"
  5. 불완전한 업로드: "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로 업로드된 객체도 버전 관리됩니다. 완료된 업로드는 새 버전으로 저장됩니다.

관련 글

참고 자료