이번 주 내용은 다음 흐름으로 이어진다.
[Source] 클릭 로그 · IoT · 거래 이벤트 ──┐
▼
[Ingest] 스트림? → Kinesis (Firehose=적재 / KDS=다소비자·replay) (Day 3)
배치? → Glue ETL / EMR / Batch
▼
[Store] S3 데이터레이크 (Parquet / RecordIO) (Day 2)
▼
[Label] SageMaker Ground Truth (워크포스 + 액티브 러닝 + 합의) (Day 4)
▼
[Features] Glue·Processing으로 피처 엔지니어링 → Feature Store
▼
[Train I/O] S3 (Pipe/File/FastFile) | EFS | FSx for Lustre (Day 2)
▼
[Model] 학습 → 평가(비즈니스 지표 연결) → 배포 → 모니터링 (Day 1)
└──── 드리프트 → 루프백 ────┘
💡 개념: 이 파이프라인 전체를 관통하는 하나의 원칙은 재현성과 training-serving skew 방지다. 수집·정제·피처 로직을 코드에 고정하고, 데이터를 버전 관리하고, 학습과 추론에서 동일한 변환을 쓴다. 노트북에서 즉흥적으로 만든 피처나 출처 불명 데이터는 운영에서 조용히 모델을 망가뜨린다.
시험에서 헷갈리는 결정들을 압축한다.
스토리지 입력 모드 (Day 2)
| 상황 | 선택 |
|---|---|
| 대용량, 순차 접근, 빠른 시작 | Pipe 모드 |
| 소량, 랜덤 접근, 단순함 우선 | File 모드 |
| 대용량인데 일부만·랜덤 접근 | FastFile 모드 |
| 반복 읽기, 고처리량 공유 접근 | FSx for Lustre |
| 범용 공유 파일 시스템 | EFS |
데이터 포맷 (Day 2)
| 상황 | 선택 |
|---|---|
| 정형 데이터 분석·ETL, 일부 컬럼만 | Parquet (컬럼형) |
| SageMaker 내장 알고리즘, 대용량 순차 | RecordIO-protobuf |
| 작은 파일 수백만 개 | 샤딩으로 통합 |
| 스키마가 들쭉날쭉한 로그 원본 | JSON Lines → Glue로 정형화 |
수집 서비스 (Day 3)
| 상황 | 선택 |
|---|---|
| 코드 없이 S3 등으로 배달 | Kinesis Data Firehose |
| 다소비자, 재처리(replay), 커스텀 처리 | Kinesis Data Streams |
| 실시간 집계·이상 탐지 | Managed Service for Flink |
| 스키마 추론, 카탈로그화 | Glue Crawler |
| 서버리스 Spark ETL | Glue ETL Job |
레이블링 (Day 4)
| 상황 | 선택 |
|---|---|
| 민감·규제 데이터 | Private 또는 Vendor 워크포스 |
| 공개·대규모·저비용 | Mechanical Turk |
| 레이블링 비용 절감 | 액티브 러닝(automated labeling) |
| 무작위 레이블러 오류 감소 | 합의(다수 레이블러 + 통합) |
| 전원이 같은 방향으로 틀림 | 지침 명확화 + golden set |
# 분류 지표 결정 트리 (의사코드)
if 클래스가_극단적으로_불균형:
if 미탐_비용이_큼 (사기, 질병): → recall 우선, PR-AUC로 비교
elif 오탐_비용이_큼 (스팸, 마케팅): → precision 우선
else: → PR-AUC
else:
if 임계값_미정: → ROC-AUC
else: → F1 / accuracy| 지표 | 한 줄 요약 | 이 지표가 답이 되는 단서 |
|---|---|---|
| Accuracy | 전체 정답률 | "클래스가 균형" 명시가 있을 때만 |
| Precision | 오탐이 적은가 | "정상 메일을 막으면 안 된다", "발송 비용" |
| Recall | 미탐이 적은가 | "놓치면 치명적", "사기·질병" |
| F1 | 둘의 균형 | 두 비용이 비슷하다는 서술 |
| ROC-AUC | 임계값 무관 분별력 | "임계값을 아직 못 정했다", "모델 비교" |
| PR-AUC | 소수 클래스 분별력 | "양성이 0.1%", "극단적 불균형" |
| RMSE / MAE | 회귀 오차 | 연속값 예측, 이상치 민감도 언급 |
💡 개념: 항상 단일 지표 함정을 경계하라. 불균형 데이터에서 accuracy 99.9%는 "전부 음성" 모델일 수 있다. 오프라인 지표는 배포를 통과시키는 게이트이고, 온라인 비즈니스 지표(A/B 테스트)가 최종 판정을 내린다. 이 2단 구조를 기억하면 Day 1의 요지를 잡은 것이다.
시나리오: 글로벌 이커머스가 실시간 클릭 스트림에서 사기 거래를 탐지하려 한다. 과거 사기 레이블이 매우 희소하고, 사기는 전체 거래의 0.1%다. 데이터에는 PII가 포함된다.
단계별 풀이 흐름:
이 한 시나리오에 Week 1의 모든 개념이 들어 있다. 각 결정의 근거를 말로 설명할 수 있으면 이번 주를 소화한 것이다.
💡 개념: 제약 충돌형 시나리오에서는 제약이 먼저다. PII가 워크포스를 강제하고, 극단적 불균형이 지표를 강제하고, 다소비자 요건이 KDS를 강제한다. 정답은 가장 화려한 기술이 아니라 모든 제약을 동시에 만족하는 선택이다. 하나라도 위반하면(예: PII를 공개 워크포스에) 다른 장점과 무관하게 오답이다.
⚠️ 함정: 보기 중 "가장 최신 서비스", "가장 저렴한 옵션", "가장 단순한 구성"이 눈에 띄어도 제약을 어기면 전부 오답이다. 제약 → 후보 소거 → 남은 것 중 비용·운영 부담 비교, 이 순서를 지켜라.
| 헷갈리는 짝 | 결정적 차이 |
|---|---|
| KDS vs Firehose | 보관·재생·다소비자 vs 코드 없는 단순 적재 |
| Glue Crawler vs Glue ETL Job | 스키마 추론·카탈로그 등록 vs 실제 데이터 변환 |
| File vs Pipe vs FastFile | 전체 복사 후 시작 vs 스트리밍 즉시 시작 vs 둘의 절충 |
| FullyReplicated vs ShardedByS3Key | 전 노드 전체 복제 vs 노드별 조각 분배 |
| EFS vs FSx for Lustre | 범용 공유·설정 단순 vs 고처리량 반복 읽기 |
| Parquet vs RecordIO-protobuf | 정형 분석·컬럼 선택 vs 내장 알고리즘 순차 스트리밍 |
| Mechanical Turk vs Private/Vendor | 공개 대량 저비용 vs 민감 데이터·전문성 |
| 합의(consensus) vs golden set | 무작위 오류 상쇄 vs 체계적 편향·지침 검증 |
| ROC-AUC vs PR-AUC | 일반적 분별력 vs 극단 불균형에서의 정직함 |
| 배치 vs 스트리밍 | 주기적·정확·단순 vs 즉시성·운영 난이도 높음 |
시험에서 반복해 걸려 넘어지는 지점만 모았다.
머릿속으로 답해 보자.
이번 주에 등장한 서비스를 역할별로 한 장에 모았다. 시험에서 서비스 이름만 보고 자리를 떠올릴 수 있어야 한다.
| 역할 | 서비스 | 한 줄 |
|---|---|---|
| 스트림 수집 | Kinesis Data Streams | 샤드 기반, 보관·재생·다소비자 |
| 스트림 적재 | Kinesis Data Firehose | 코드 없이 S3 등으로 배달, 포맷 변환 |
| 스트림 분석 | Managed Service for Flink | 윈도우 집계, 실시간 이상 탐지 |
| 영상 수집 | Kinesis Video Streams | 영상 ML 입력 |
| Kafka 대안 | Amazon MSK | 관리형 Kafka |
| DB 수집 | AWS DMS | 마이그레이션 + CDC |
| 파일 전송 | AWS DataSync / Snow 패밀리 | 온라인 대량 전송 / 오프라인 물리 전송 |
| 메타데이터 | Glue Data Catalog | 스키마·위치·파티션 중앙 저장소 |
| 스키마 추론 | Glue Crawler | 훑어서 테이블 등록 |
| 서버리스 ETL | Glue ETL Job | Spark 기반 변환 |
| SQL 탐색 | Amazon Athena | 카탈로그 기반 즉석 조회 |
| 객체 저장 | Amazon S3 | 데이터레이크의 기본 |
| 공유 파일 | Amazon EFS | 관리형 NFS, 다중 마운트 |
| 고성능 파일 | FSx for Lustre | 반복·고처리량 학습 I/O |
| 레이블링 | SageMaker Ground Truth | 워크포스 + 액티브 러닝 + 합의 |
| 사람 검토 | Amazon A2I | 운영 중 저신뢰 예측의 사람 검토 |
| 전처리 실행 | SageMaker Processing | 관리형 분산 전처리 잡 |
| 이상 탐지 | Random Cut Forest | 레이블 없이 이상 점수 산출 |
Specialty 지문은 정답을 가리키는 단어를 반드시 심어 둔다. 아래 매핑을 외워 두면 소거가 빨라진다.
| 지문의 표현 | 즉시 떠올릴 것 |
|---|---|
| "운영 인력이 적다", "관리 부담 최소" | 서버리스(Firehose, Glue) |
| "여러 팀이 각자 소비", "재처리 필요" | Kinesis Data Streams |
| "코드 없이", "자동 배달" | Kinesis Data Firehose |
| "스키마를 모른다" | Glue Crawler → Data Catalog → Athena |
| "GPU가 데이터를 기다린다" | Pipe/FastFile 모드, FSx for Lustre |
| "같은 데이터로 수백 번 튜닝" | FSx for Lustre |
| "50개 컬럼 중 몇 개만" | Parquet |
| "작은 파일 수백만 개" | 샤딩으로 통합 |
| "PII", "환자", "규제" | Private 또는 Vendor 워크포스 |
| "레이블링 예산이 빠듯" | 액티브 러닝, 전이학습 |
| "양성이 0.1%" | PR-AUC, recall |
| "밀리초 응답" | 실시간 엔드포인트(서버리스 아님) |
| "야간 일괄 채점" | 배치 변환 |
Week 2는 Data Engineering 2로 들어간다. EMR과 Spark를 이용한 대규모 처리, 데이터 변환·정제 심화, 결측치·이상치·불균형 데이터 처리, 그리고 특성 공학 기법 전반을 다룬다. 이번 주 파이프라인에서 "Features" 단계를 확대해 들여다보는 셈이다.
선택지를 클릭하면 정답·해설이 펼쳐집니다.
문제 1
거래의 0.1%만 사기이고 미탐 비용이 큰 사기 탐지 모델의 성능을 비교한다. 가장 정직한 단일 지표는?
문제 2
수백 GB 데이터를 여러 인스턴스로 분산 학습하며 GPU 유휴를 최소화하고 인스턴스마다 다른 데이터 조각만 읽게 하려면?
문제 3
PII가 포함된 의료 데이터를 레이블링하면서 레이블링 인건비도 줄이고 싶다. 가장 적절한 조합은?
문제 4
하나의 이벤트 스트림을 실시간 대시보드·사기 모델·추후 재처리에 독립적으로 쓰고 장애 시 재생도 필요하다. 적합한 수집 서비스는?
문제 5
여러 제약(민감 데이터, 극단적 불균형, 다소비 스트림)이 동시에 걸린 시나리오 문제를 풀 때 가장 올바른 접근은?