데이터 수집과 저장 전략

MLA-C01 도메인 1 핵심, S3 중심 데이터 레이크 설계, 배치/스트리밍 수집 패턴, SageMaker 학습 입력 모드까지 데이터 수집·저장 전략을 실무 관점에서 정리합니다.

왜 데이터 수집 전략이 ML의 핵심인가

 

머신러닝 엔지니어로 일하다 보면 모델 튜닝보다 데이터 파이프라인을 구축하는 데 훨씬 더 많은 시간을 쏟는다는 사실을 금방 깨닫게 됩니다. 실제 현장에서는 모델 개발 시간의 70~80%가 데이터 수집, 정제, 변환에 소요됩니다. 아무리 최신 알고리즘을 써도 입력 데이터가 노이즈로 가득하거나 편향되어 있다면 결과는 실망스럽습니다. AWS MLA-C01 시험 역시 이 현실을 반영하여 도메인 1(데이터 준비)에 상당한 비중을 할애하고 있습니다.

AWS에서 ML 데이터 파이프라인을 설계할 때 중심에는 항상 S3가 있습니다. S3는 단순한 오브젝트 스토리지를 넘어 AWS ML 생태계 전체의 데이터 허브 역할을 합니다. SageMaker, Glue, Athena, EMR, Redshift Spectrum이 모두 S3를 공통 데이터 레이어로 사용합니다.

 

Amazon S3 — ML 데이터 레이크의 중심

 

S3를 단순히 "파일 저장소"로만 생각한다면 ML 데이터 아키텍처를 최적화하기 어렵습니다. ML 관점에서 S3를 활용할 때 고려할 핵심 요소들이 있습니다.

파티셔닝 전략은 데이터 접근 성능에 직결됩니다. 예를 들어 로그 데이터를 형태로 파티셔닝하면 Athena나 Glue가 필요한 날짜 범위의 데이터만 읽어 비용과 속도를 모두 개선할 수 있습니다. ML 학습 데이터의 경우 , , 폴더 구조로 분리하는 것이 SageMaker와의 연동에 유리합니다.

스토리지 클래스 선택도 비용 최적화의 핵심입니다. 자주 접근하는 학습 데이터는 S3 Standard, 실험 결과나 이전 모델 아티팩트는 S3 Intelligent-Tiering 또는 S3 Standard-IA, 규정 준수 목적의 장기 보관 데이터는 S3 Glacier를 고려합니다. S3 Lifecycle 정책으로 이 전환을 자동화할 수 있습니다.

S3 Select는 CSV, JSON, Parquet 파일에서 SQL 구문으로 필요한 컬럼/행만 추출하는 기능입니다. 전체 파일을 다운로드하지 않고 서버 사이드에서 필터링하므로 대용량 데이터셋에서 전처리 비용을 크게 줄일 수 있습니다. SageMaker Processing Job과 함께 사용하면 효과적입니다.

S3 Transfer Acceleration은 CloudFront의 엣지 로케이션을 경유하여 먼 거리 업로드 속도를 향상시킵니다. 글로벌 팀이 다양한 지역에서 학습 데이터를 중앙 S3 버킷으로 수집할 때 유용합니다.

 

ML을 위한 데이터 포맷 선택

 

데이터 포맷은 학습 속도와 비용에 직접 영향을 미칩니다. 어떤 포맷을 언제 써야 하는지 이해하는 것이 중요합니다.

| 포맷 | 특징 | 최적 사용 사례 | |------|------|--------------| | CSV | 사람이 읽기 쉬움, 범용성 높음 | 소규모 데이터, 프로토타이핑 | | Parquet | 컬럼형 압축, Athena/Glue 최적 | 대규모 정형 데이터, 분석 쿼리 | | RecordIO | SageMaker 기본 포맷, 스트리밍 지원 | XGBoost, 이미지 분류 등 내장 알고리즘 | | TFRecord | TensorFlow 네이티브 | TensorFlow/Keras 모델 학습 | | ORC | Hive/EMR 최적화 | Spark 기반 대규모 배치 처리 | | JSON Lines | 반정형 데이터, 유연한 스키마 | NLP, 이벤트 로그, 중첩 구조 |

실무에서는 원본 데이터를 CSV/JSON으로 수집하고, Glue ETL이나 EMR을 통해 Parquet으로 변환하여 데이터 레이크에 저장하는 패턴이 일반적입니다. SageMaker 내장 알고리즘을 사용할 때는 RecordIO나 CSV가 요구되는 경우가 많으니 알고리즘 문서를 반드시 확인하세요.

 

배치 수집 패턴

 

배치 수집은 일정 주기로 대량의 데이터를 처리하는 방식입니다. AWS에서 배치 수집을 위해 주로 활용하는 서비스들을 살펴봅니다.

AWS Glue는 서버리스 ETL 서비스로, ML 데이터 준비에서 가장 많이 사용됩니다. Glue Crawler가 S3, RDS, Redshift 등 다양한 소스의 스키마를 자동으로 탐색하여 Glue Data Catalog에 등록하면, Glue ETL Job이 PySpark 기반으로 데이터를 변환하고 S3에 저장합니다. Visual ETL 기능을 통해 코드 없이 변환 파이프라인을 구성할 수도 있습니다.

Amazon EMR은 대규모 분산 처리가 필요할 때의 선택지입니다. Spark, Hadoop, Hive를 관리형으로 운영하며, 수십 테라바이트 이상의 데이터 전처리에 적합합니다. EMR Serverless를 사용하면 클러스터 관리 없이 Spark 잡을 실행할 수 있습니다.

AWS Data Pipeline은 S3, RDS, DynamoDB, Redshift 간 데이터 이동과 변환을 자동화하는 오케스트레이션 서비스입니다. 현재는 AWS Glue와 Step Functions 조합으로 대체되는 추세지만, 시험에는 여전히 등장합니다.

AWS Database Migration Service(DMS)는 온프레미스 데이터베이스나 다른 클라우드의 데이터를 AWS로 마이그레이션할 때 사용합니다. CDC(Change Data Capture) 기능으로 실시간 복제도 지원합니다.

 

스트리밍 수집 패턴

 

실시간 예측 서비스(클릭스트림 분석, 이상 탐지, 실시간 추천)를 구현하려면 스트리밍 데이터 수집 아키텍처가 필요합니다.

Amazon Kinesis Data Streams는 실시간 데이터 스트림 처리의 핵심입니다. 샤드(Shard) 단위로 처리량을 조절하며, 각 샤드는 초당 1MB 입력 또는 1,000개 레코드를 처리합니다. 데이터는 최대 365일 보존 가능합니다. 소비자로는 Kinesis Data Analytics, Lambda, KCL(Kinesis Client Library) 애플리케이션이 있습니다.

Amazon Kinesis Data Firehose는 스트리밍 데이터를 S3, Redshift, OpenSearch, Splunk로 자동 전달하는 완전 관리형 서비스입니다. 직접 샤드를 관리할 필요 없이 목적지만 지정하면 됩니다. Lambda를 연동하여 전달 전 데이터 변환도 가능합니다. ML 파이프라인에서는 실시간 이벤트를 S3로 수집하고 SageMaker Processing으로 배치 처리하는 패턴에 자주 활용됩니다.

Amazon MSK(Managed Streaming for Apache Kafka)는 오픈소스 Kafka를 관리형으로 운영합니다. 이미 Kafka를 사용하는 조직이 AWS로 마이그레이션할 때 선택합니다. Kinesis보다 더 유연한 설정이 가능하지만 관리 복잡도가 높습니다.

!배치 vs 스트리밍 수집

AWS Lake Formation — 데이터 레이크 거버넌스

 

여러 팀이 동일한 S3 데이터 레이크를 사용할 때 접근 제어가 복잡해집니다. Lake Formation은 이 문제를 해결합니다. 테이블, 컬럼, 행 수준의 세밀한 접근 제어를 IAM보다 훨씬 간결하게 설정할 수 있습니다. Glue Data Catalog와 통합되어 메타데이터 관리와 권한 관리를 일원화합니다. 데이터 사이언티스트에게는 필요한 데이터셋만 접근하도록 허용하고, 민감 데이터 컬럼은 자동으로 마스킹할 수 있습니다.

 

SageMaker 학습 입력 모드

 

이 부분은 시험에서 자주 출제되는 구체적인 기술 주제입니다. SageMaker 학습 잡이 S3에서 데이터를 읽는 방식이 세 가지 있습니다.

File Mode는 학습 시작 전 S3의 모든 데이터를 컨테이너 로컬 스토리지로 복사합니다. 가장 단순하지만 큰 데이터셋에서는 초기 다운로드 시간이 길어집니다. 이미지 분류처럼 전체 데이터셋을 반복 학습하는 경우에 적합합니다.

Pipe Mode는 학습 중 S3에서 데이터를 스트리밍 방식으로 읽습니다. 로컬 디스크에 저장하지 않으므로 디스크 비용이 절감되고 초기화 시간이 없습니다. RecordIO 포맷에서 최적 성능을 발휘하며, 데이터셋이 수십 GB 이상일 때 유리합니다.

FastFile Mode는 File Mode와 유사하지만 Amazon FSx for Lustre를 백엔드로 사용하여 S3 데이터를 고속 파일시스템처럼 마운트합니다. File Mode의 사용 편의성과 Pipe Mode의 성능을 결합한 방식으로, 랜덤 접근이 많은 워크로드에 유리합니다. 최신 SageMaker 환경에서 권장하는 모드입니다.

 

실전 시나리오: 다중 소스 ML 데이터 레이크 구축

 

실제 ML 프로젝트에서 어떻게 이 서비스들이 결합되는지 시나리오로 살펴봅니다.

고객 이탈 예측 모델을 만든다고 가정합니다. 데이터 소스는 CRM 시스템(RDS MySQL), 웹 로그(Kinesis), 고객 지원 티켓(S3 CSV)입니다. 아키텍처는 다음 흐름으로 구성됩니다: CRM 데이터는 DMS로 S3로 복제하고, 웹 로그는 Kinesis Firehose로 S3에 적재하며, 고객 지원 티켓은 이미 S3에 있습니다. Glue Crawler가 모든 소스의 스키마를 Data Catalog에 등록하고, Glue ETL Job이 세 소스를 조인하여 Parquet 형식의 학습 데이터를 생성합니다. Lake Formation이 데이터 과학팀에게 필요한 테이블만 접근 권한을 부여합니다. SageMaker Processing Job이 최종 전처리를 수행하고, SageMaker Training Job이 FastFile Mode로 Parquet 데이터를 읽어 모델을 학습합니다.

 

시험 핵심 포인트

 

"실시간 스트림 → S3 자동 전달" -- Kinesis Data Firehose (람다 변환 포함 가능) "직접 샤드 관리, 고급 스트림 처리" -- Kinesis Data Streams "서버리스 ETL, 스키마 자동 탐색" -- AWS Glue + Glue Crawler "대용량 Spark 처리, 클러스터 필요" -- Amazon EMR "S3 기반 SQL 분석, 서버리스" -- Amazon Athena "데이터 레이크 행/컬럼 수준 접근 제어" -- AWS Lake Formation "학습 데이터 전체 사전 복사" -- File Mode "학습 중 스트리밍, RecordIO 포맷" -- Pipe Mode "고속 파일 시스템 마운트, 랜덤 접근 최적" -- FastFile Mode "컬럼형 저장, 분석 쿼리 최적" -- Parquet 포맷 "SageMaker 내장 알고리즘 기본 포맷" -- RecordIO 또는 CSV (알고리즘 따라 다름) "온프레미스 DB → AWS 마이그레이션" -- AWS DMS "글로벌 팀 대용량 업로드 가속" -- S3 Transfer Acceleration

블로그 목록으로 돌아가기