배치 수집은 "정해진 단위(파일·테이블·시간)로 모아서 한꺼번에" 가져오는 방식이다. 실시간성이 필요 없는 야간 적재, 온프레미스 마이그레이션, 대용량 일괄 전송이 여기 속한다.
AWS는 데이터의 양과 위치, 네트워크 상황에 따라 서로 다른 도구를 제공한다. 오늘 다룰 4가지는 S3 업로드 패턴, DataSync, Transfer Family, Snow 패밀리다.
대부분의 AWS 분석 파이프라인에서 데이터가 처음 도착하는 곳은 S3다. 사실상 무제한 용량, 11 9's 내구성, 그리고 Athena·Glue·Redshift Spectrum·EMR이 모두 직접 읽을 수 있는 공통 저장소이기 때문이다.
그래서 "배치 수집 = 어떻게든 S3에 파일을 안전하게 올리기"로 단순화해도 크게 틀리지 않는다.
작은 파일은 단순 PutObject로 충분하다.
큰 파일(수백 MB 이상)은 멀티파트 업로드(Multipart Upload) 를 써야 한다. 파일을 여러 조각으로 나눠 병렬 전송하고, 한 조각이 실패해도 그 조각만 재전송하면 되므로 대용량 전송이 빠르고 견고해진다.
# 작은 파일: 단순 업로드aws s3 cp sales-2026-06.csv s3://my-data-lake/raw/sales/# 큰 파일: CLI가 임계값(기본 8MB)을 넘으면 자동으로 멀티파트로 전환aws s3 cp huge-dataset.parquet s3://my-data-lake/raw/events/ \ --expected-size 5368709120# 멀티파트 임계값/동시성 튜닝 (대량 전송 가속)aws configure set s3.multipart_threshold 64MBaws configure set s3.max_concurrent_requests 20
💡 관련 이론: 멀티파트 업로드를 시작했다가 완료(CompleteMultipartUpload)하지 않으면 업로드된 조각이 S3에 남아 보이지 않는 스토리지 비용을 발생시킨다. 이를 막기 위해 S3 Lifecycle 규칙에 AbortIncompleteMultipartUpload를 설정해 N일 후 미완료 조각을 자동 삭제하는 것이 베스트 프랙티스다. "원인 모를 S3 비용 증가" 시나리오로 출제될 수 있다.
S3에 도착하는 순간 이벤트를 발생시켜 다운스트림을 트리거할 수도 있다.
S3 Event Notification: 객체 생성 이벤트를 Lambda·SQS·SNS·EventBridge로 보낸다.
prefix/suffix 필터를 걸면 "파일이 들어오면 바로 Glue 잡 실행" 같은 이벤트 드리븐 배치가 된다.
💡 관련 이론: DataSync vs S3 단순 CLI 업로드의 구분이 시험 포인트다. 일회성 소량이면 CLI/SDK로 충분하지만, ① 대량(TB+) ② 반복 스케줄 ③ 무결성 검증 ④ 메타데이터(권한·타임스탬프) 보존이 필요하면 DataSync가 정답이다. DataSync는 네트워크 대역폭을 사용하므로 충분한 회선이 있을 때 적합하고, 회선이 부족하거나 페타바이트급이면 Snow 패밀리로 넘어간다.
데이터가 페타바이트급이거나, 전송 회선이 느려서 인터넷으로 옮기면 몇 달이 걸린다면 물리 장비에 데이터를 담아 AWS로 배송하는 Snow 패밀리가 답이다.
서비스
용량
용도
Snowcone
~8TB(SSD)
소형·엣지·이동 환경
Snowball Edge
~80TB
대량 마이그레이션, 엣지 컴퓨팅
Snowmobile
~100PB
(사실상 단종) 초대형 데이터센터 이전
장비를 받아 데이터를 채운 뒤 반송하면 AWS가 S3로 적재한다.
전송 중에는 256비트 암호화로 보호된다.
"회선 vs 물리 배송"의 손익분기는 데이터양과 대역폭의 함수다. 대략 10TB를 100Mbps 회선으로 보내면 약 12일이 걸린다. 같은 데이터를 Snowball로 보내면 배송 왕복 약 1주일에 회선도 점유하지 않는다. 시험에서 "느린 회선 + 대용량 + 일회성 마이그레이션" 키워드가 보이면 거의 항상 Snow 패밀리가 정답이다. 반대로 "지속적·반복적 동기화 + 충분한 회선"이면 DataSync다.