반응형
AWS DEA-C01
Domain 1 · Task 2
데이터 변환 및 처리
OLTP · OLAP · EMR · Glue
Spark · Kinesis · Redshift
JDBC · ODBC · API Gateway
AWS Skill Builder
AWS DEA-C01 Domain 1 Task 2 — 데이터 변환 및 처리(Transform and Process Data) 완전 정리
AWS Skill Builder 공식 강의 기반. 데이터 엔지니어링 수명 주기의 변환(Transformation) 단계를 중심으로 OLTP vs OLAP, 데이터 모델링, 배치·스트리밍 변환, Amazon EMR Spark 처리, AWS Glue ETL, Redshift Spectrum, JDBC vs ODBC, 데이터 API 생성(API Gateway + Lambda), 변환 실패 및 성능 최적화를 도식·비교표로 완전 정리합니다.
01 수명 주기에서 변환(Transformation) 단계 위치
수명 주기 1~3단계(생성·저장·수집)는 데이터를 한 위치에서 다른 위치로 이동하는 것이 주된 책임. 이제 해당 데이터를 유용하게 만드는 단계에 진입합니다.
01
생성
Generation
02
저장
Storage
03
수집
Ingestion
04 ★
변환
Transformation
05
제공
Serving
💡 중요: 변환은 변환 단계에서만 발생하지 않습니다. 수집 단계 또는 소스·생성 단계에서도 발생할 수 있습니다. (예: Kinesis Data Firehose의 Parquet 형식 변환)
02 변환(Transformation)이란?
데이터를 원래 형식에서 다운스트림 사용 사례에 유용한 다른 형식으로 변경하는 것.
적절히 변환되지 않으면 보고서·분석·기계 학습 등에 사용 불가.
🔍 쿼리 (Query)
데이터 엔지니어링·데이터 과학·분석의 기본 요소. 데이터를 검색하고 기반으로 작업을 수행. 쿼리가 어떻게 작동하는지 반드시 알아야 함
🏗️ 데이터 모델링 (Data Modeling)
유용한 방식으로 데이터를 구성하기 위한 설계·계획. 데이터가 실제 세계와 관련되는 방식 표현. 많은 사람들이 건너뛰는 중요한 단계
🔧 변환 (Transformation)
데이터 통일·통합·보강·저장. 가치 향상, 확장성·신뢰성 추가, 비용 효율 향상. 다운스트림 사용 데이터 최적화
03 데이터 모델링 유형 및 OLTP vs OLAP
📐 알아야 할 데이터 모델 유형
개념적 모델 (Conceptual)
논리적 모델 (Logical)
물리적 모델 (Physical)
정규화 (Normalization)
배치 분석 데이터 모델링
데이터 볼트 (Data Vault)
| 구분 | OLTP (온라인 트랜잭션 처리) Online Transaction Processing |
OLAP (온라인 분석 처리) Online Analytical Processing |
|---|---|---|
| 최적화 목적 | 트랜잭션 처리 및 실시간 업데이트. 데이터의 최신 상태에 중점 | 복잡한 데이터 분석 및 보고. 최신 상태 + 과거 데이터에 중점 |
| 데이터 모델 | 정규화(Normalized) 또는 비정규화(Denormalized) 모델 | 스타 스키마(Star Schema), 눈송이 스키마(Snowflake Schema) 또는 기타 분석 모델 |
| 스토리지 요구 | 낮음 OLAP보다 낮은 스토리지 요구 | 대용량 테라바이트(TB) ~ 페타바이트(PB) |
| 응답 시간 | 짧음 OLAP보다 응답 시간 짧음 | 복잡 쿼리 대용량 집계 분석 |
| 적합한 사용 사례 | 주문 처리, 결제 처리, 고객 데이터 관리 | 고객 행동 예측, 추세 분석(Trend Analysis) |
04 변환이 필요한 이유 & 변환 작업 유형
❌ 원시 데이터(Raw Data)의 한계
원시 데이터는 최종 데이터 분석에서 거의 쓸모가 없음. 데이터 분석가가 필요한 비즈니스 인사이트(Business Insights)를 생성할 수 있도록 파이프라인을 설계·구축해야 함
✅ 변환의 가치
- 데이터 통일 및 통합
- 다운스트림 데이터 가치 향상
- 확장성 및 신뢰성 추가
- 일반적으로 비용 효율 향상
| 변환 단계 | 작업 유형 | 예시 |
|---|---|---|
| 초기 변환 | 데이터 타입 매핑, 기본 정제 | 문자열 → 숫자·날짜 형식 변환, 레코드를 표준 형식으로 변환, 잘못된 데이터 제거 |
| 중간 변환 | 스키마 변경, 정규화 적용 | 데이터 스키마 변경, 정규화(Normalization) 적용 |
| 고급 변환 | 대규모 집계, 특성화 | ML 프로세스용 데이터 특성화(Featurization), 보고용 집계 |
| 데이터 준비 (Data Wrangling) | 계산 필드 추가, 필터 적용 | 필드 이름·타입 변경, 테이블 조인(SQL DB), SQL 쿼리 입력 |
💡 데이터 준비 = 데이터 랭글링(Data Wrangling): 계산 필드 추가, 필터 적용, 필드 이름·타입 변경, 테이블 조인이 포함되는 데이터 처리 단계의 핵심 구성 요소
05 변환 및 처리 목적별 AWS 서비스 분류
☁️ 클라우드 컴퓨팅 — 데이터 변환·처리
AWS Lambda Amazon EMR
AWS Glue Amazon Redshift
AWS Glue Amazon Redshift
EMR: Elastic MapReduce
🔗 분산 컴퓨팅 — 여러 노드 병렬 처리
Amazon EMR AWS Batch
AWS Step Functions
AWS Step Functions
여러 노드에 걸쳐 데이터를 병렬로 처리하는 컴퓨팅 태스크
⚡ 서버리스 처리 (Serverless)
AWS Glue — Python 엔진 또는 Spark 엔진 사용
AWS Lambda — 간단한 변환·검증
AWS Lambda — 간단한 변환·검증
Amazon S3에 저장된 데이터로 작동. 완전관리형 ETL 환경
🐘 빅데이터 프레임워크 실행
Amazon EMR — 오픈소스 빅데이터 처리 서비스
Apache Spark
Apache Hive
Apache HBase
Apache Hudi
Presto
Apache Pig
06 AWS Lambda — 데이터 검증 및 간단한 변환
CSV 파일이 수신될 때마다 자동 실행되는 Lambda 함수 예시
CSV 파일 수신
(S3 이벤트)
(S3 이벤트)
→
Lambda 함수 실행
→
CSV 파일 여부 확인
(검증)
(검증)
계산 수행
→
DB 업데이트
+
다른 S3 버킷으로 이동
(나중에 배치 처리)
(나중에 배치 처리)
💡 Lambda는 데이터 검증(Validation)과 간단한 변환에 적합. 복잡한 대규모 변환에는 EMR 또는 Glue를 사용
07 AWS Glue — ETL 서버리스 환경 & Data Catalog
🔄 AWS Glue 핵심 기능
완전관리형 ETL(Extract, Transform, Load) 서비스
실행 엔진:
Python 엔진 — 경량 변환
Apache Spark 엔진 — 대규모 분산 처리
두 엔진 모두 Amazon S3 데이터로 작동
실행 엔진:
Python 엔진 — 경량 변환
Apache Spark 엔진 — 대규모 분산 처리
두 엔진 모두 Amazon S3 데이터로 작동
🗂️ AWS Glue Data Catalog
데이터셋의 논리적 뷰 제공 + 추가 메타데이터 캡처
Glue 크롤러(Crawler): 데이터 소스를 검사하여 스키마 및 기타 정보를 자동 추론·채움
활용:
Athena SQL 쿼리 실행
Amazon EMR ETL 코드에서 카탈로그 객체 참조
Glue 크롤러(Crawler): 데이터 소스를 검사하여 스키마 및 기타 정보를 자동 추론·채움
활용:
Athena SQL 쿼리 실행
Amazon EMR ETL 코드에서 카탈로그 객체 참조
📋 AWS DMS → S3 → Glue Data Catalog → Athena/EMR 활용 흐름
소스 DB
→
AWS DMS
DB Migration Service
DB Migration Service
→
S3 버킷
테이블별 접두사 디렉터리
테이블별 접두사 디렉터리
S3 데이터
→
Glue 크롤러
스키마 자동 추론
스키마 자동 추론
→
Glue Data Catalog
논리적 뷰·메타데이터
논리적 뷰·메타데이터
Glue Data Catalog
→
Amazon Athena
SQL 임시 쿼리
SQL 임시 쿼리
또는
Amazon EMR
ETL 코드 참조
ETL 코드 참조
💡 AWS Glue 구성 요소:
Glue Data Catalog Glue ETL 엔진 Glue Crawler Glue Studio Glue 대화형 세션 — 각각 개별 서비스로도 분할 사용 가능
08 Amazon EMR vs AWS Glue — 언제 무엇을 선택하는가
| 비교 항목 | Amazon EMR (Elastic MapReduce) | AWS Glue |
|---|---|---|
| 서비스 유형 | 관리형 빅데이터 처리 서비스 (완전관리형 아님) 클러스터 직접 관리 필요 |
완전관리형 ETL 서비스 서버리스 |
| 변환 능력 | Glue보다 훨씬 뛰어남. 모든 기능을 갖춘 분산형 Hadoop 환경 | 데이터 정리·보강·이동에 적합. 복잡한 변환은 제한적 |
| 추가 설치 | Spark, Hive, Pig, HBase, Presto 등 추가 프레임워크·소프트웨어 설치 필요 | 추가 설치 불필요. Spark·Python 엔진 내장 |
| 환경 제어 | 더 많은 환경 제어 가능. Spark 구성 파일 수동 튜닝 | 관리형 환경. 세부 구성 제한적 |
| 적합한 경우 | Hadoop 에코시스템 사용 시, 환경에 대한 더 많은 제어가 필요할 때 | 데이터 정리·보강·이동만 필요한 경우 훌륭한 솔루션 |
| 데이터 준비 | Amazon Kinesis, Amazon EMR, AWS Glue — 모두 데이터 준비 수행 가능 | 간단한 변환 → Glue, 복잡한 변환 → EMR 필요 |
09 Amazon EMR에서 Apache Spark 처리 — 단계별 가이드
-
1EMR 클러스터 시작 (Launch Cluster)AWS Management Console 또는 AWS CLI(Command Line Interface)를 사용하여 인스턴스 유형·수·Spark 버전 등 원하는 사양으로 클러스터 생성
-
2프라이머리 노드(Primary Node) 연결 → Spark 구성클러스터 프라이머리 노드에 연결하여 CLI 액세스. Spark 구성 파일 수정 → 메모리 할당·실행기 코어 수(Executor Cores)·병렬 처리(Parallelism) 설정
-
3데이터 준비 및 S3 저장Amazon S3에 데이터 저장, 데이터 소스에 대한 적절한 권한 및 액세스 제어(IAM) 구성
-
4Spark 애플리케이션 개발Scala, Python, 또는 Java를 사용하여 Spark API 및 기능으로 코드 작성. Spark 제공 기능: 데이터 정제 집계 필터링 조인 기계 학습
-
5spark-submit 명령으로 클러스터에 작업 제출
spark-submit명령을 사용하여 Amazon EMR 클러스터에 애플리케이션 제출. 메인 클래스 또는 스크립트 파일 및 필요한 명령줄 인수 지정 -
6모니터링 및 성능 최적화Amazon EMR이 제공하는 로그·지표·모니터링 기능으로 진행 상황·성능 모니터링. 최적화 기술: 데이터 파티셔닝 캐싱(Caching) Spark 구성 튜닝
-
7클러스터 확장·축소 (Scale In/Out)데이터셋 크기와 처리 요구 사항에 따라 Amazon EMR 클러스터 확장 또는 축소 → 더 많은 리소스 할당 또는 비용 절감
-
8처리된 데이터 저장처리된 데이터를 요구 사항에 따라 Amazon S3 Amazon Redshift Amazon RDS 또는 기타 호환 스토리지에 저장
10 스트리밍 변환 실제 아키텍처 예시 — Kinesis → Flink → OpenSearch → Kibana
Amazon EC2에서 Apache 웹 서버가 실행 중. 목표: Kibana 대시보드로 데이터 시각화·제공
EC2 + Apache
웹 서버 로그
웹 서버 로그
→
Kinesis Agent
EC2에 설치·구성
EC2에 설치·구성
→
Kinesis Data Firehose
①
①
↓
경로 A: 스토리지 저장
↓
경로 B: 처리용 전송
S3 버킷
스토리지 저장
스토리지 저장
→
AWS Glue
카탈로그화·데이터 레이크
카탈로그화·데이터 레이크
Kinesis Data Firehose ①
→
Amazon Managed Service
for Apache Flink
SQL·ML 기능으로 집계
for Apache Flink
SQL·ML 기능으로 집계
→
Kinesis Data Firehose
② 변환 데이터 전달
② 변환 데이터 전달
Kinesis Data Firehose ②
→
Amazon OpenSearch Service
인덱싱·보고서
인덱싱·보고서
→
Kibana
시각화 대시보드
시각화 대시보드
💡 Amazon Managed Service for Apache Flink는 SQL 명령을 사용하여 기본 데이터 변환 수행. 더 복잡한 변환이 필요할 경우 Amazon EMR 또는 AWS Glue가 필요
11 IoT 데이터 — 안전하고 거의 실시간으로 수집하는 파이프라인
🎯 시험 출제 시나리오
IoT 데이터를 안전하게, 거의 실시간(Near Real-Time)으로 수집하기 위한 파이프라인을 구축하려면 어떤 AWS 서비스를 사용하는가?
설계 솔루션:
① Kinesis Data Firehose → IoT 스트리밍 데이터를 Amazon S3에 수집
② AWS Lambda 함수 → 민감한 데이터 제거 + 데이터 변환 → S3 버킷에 저장
핵심: "안전하게" = 민감 데이터 마스킹·제거, "거의 실시간" = Kinesis 스트리밍 수집
① Kinesis Data Firehose → IoT 스트리밍 데이터를 Amazon S3에 수집
② AWS Lambda 함수 → 민감한 데이터 제거 + 데이터 변환 → S3 버킷에 저장
핵심: "안전하게" = 민감 데이터 마스킹·제거, "거의 실시간" = Kinesis 스트리밍 수집
12 Amazon Redshift Spectrum — 클러스터 워크로드 최적화
🎯 시험 출제 시나리오
S3 버킷에 모든 과거 트랜잭션을 저장하고 Data Catalog와 통합. 판매 실적 보고서 데이터와 조인. 데이터 처리는 Amazon Redshift 클러스터에서 완료. 데이터 분석가가 Redshift 클러스터의 워크로드를 줄이는 솔루션을 요청. 어떻게 해결하는가?
해결책:
① Amazon Redshift SQL을 사용하여 테이블 조인
② Redshift Spectrum을 사용하여 Amazon S3에서 과거 트랜잭션 데이터를 위한 외부 테이블(External Table) 생성
→ S3의 데이터를 Redshift 클러스터에 로드하지 않고 직접 쿼리 → 클러스터 워크로드 감소
① Amazon Redshift SQL을 사용하여 테이블 조인
② Redshift Spectrum을 사용하여 Amazon S3에서 과거 트랜잭션 데이터를 위한 외부 테이블(External Table) 생성
→ S3의 데이터를 Redshift 클러스터에 로드하지 않고 직접 쿼리 → 클러스터 워크로드 감소
13 실시간 로그 보강 예시 — CloudWatch Logs + DynamoDB + Kinesis
애플리케이션 로그를 Amazon CloudWatch Logs로 전송 → 거의 실시간으로 DynamoDB 데이터로 로그를 보강 → 추가 연구용 출력 생성
애플리케이션
로그
로그
→
Amazon CloudWatch Logs
로그 수집
로그 수집
→
CloudWatch Logs
구독(Subscription)
구독(Subscription)
CloudWatch Logs 구독
→
Kinesis Data Firehose
전송 스트림(Delivery Stream)
전송 스트림(Delivery Stream)
Kinesis Data Firehose
→
Lambda 함수
DynamoDB 데이터로 로그 보강
DynamoDB 데이터로 로그 보강
→
S3 버킷
로그 대상
로그 대상
💡 Kinesis Data Firehose는 Kinesis Data Streams 또는 CloudWatch Logs 같은 소스에서 Amazon Managed Service for Apache Flink, Amazon S3 같은 다운스트림 서비스로 스트리밍 데이터를 수집·변환·로드
14 변환 실패 및 성능 문제 해결 — 단계별 접근법
-
1로그 확인데이터 변환에 사용되는 AWS 서비스에서 생성된 로그 확인. AWS Glue를 사용 중이면 개발(Development) 모드 또는 디버깅(Debugging) 모드로 실행하여 상세 로그 수집 및 중간 결과 조사
-
2다양한 단계에서 데이터 품질 및 무결성 확인문제를 더 잘 격리·식별하기 위해 더 작은 데이터셋으로 테스트하는 것이 도움이 됨
-
3소스 데이터에서 변환 로직 검증매핑(Mapping)·필터(Filter)·집계(Aggregation)·계산(Calculation)이 모두 올바른지 확인
-
4프로파일링 및 병목 현상 식별변환 코드·쿼리 실행 프로파일링 → 처리 시간·메모리 사용량·I/O 작업이 높은 영역 식별. 효율적인 알고리즘, 파티셔닝(Partitioning) 전략, 병렬 처리 추가 식별
-
5리소스 할당 설정 최적화메모리 할당·실행기 코어 수(Executor Cores)·병렬 구성 업데이트. 캐싱(Caching) 통합 → 데이터 액세스·처리 시간 단축
-
6증분 처리 (Incremental Processing) 구현새 데이터 또는 수정된 데이터에 대한 변환만 처리하여 전체 처리 시간 단축
-
7재시도(Retry) 로직 통합네트워크 문제·리소스 가용성 등 일시적인 실패 또는 오류 처리
-
8테스트 및 검증테스트·스테이징 환경 사용. 단위 테스트(Unit Test)·통합 테스트(Integration Test)·엔드투엔드 테스트(End-to-End Test) 구현. 다양한 데이터 시나리오·실패 시나리오·희귀 사례(Edge Case)로 테스트
15 JDBC vs ODBC — 데이터 소스 연결 방법
☕ JDBC (Java Database Connectivity)
관계형 데이터베이스와 연결·상호 작용하기 위한 Java API
AWS에서 JDBC 사용 단계:
AWS에서 JDBC 사용 단계:
- 특정 DB용 JDBC 드라이버 준비
- DB 포트 접근을 위한 인바운드 규칙 보안 그룹 구성
- Java 앱에서 연결 URL·사용자명·암호 제공으로 연결 설정
(URL에 호스트명·IP·포트·DB명 포함) - JDBC API로 SQL 문 실행·쿼리·업데이트·DB 작업 수행
🔌 ODBC (Open Database Connectivity)
관계형 DB 포함 다양한 데이터 소스에 연결하기 위한 표준화된 API
AWS에서 ODBC 사용 단계:
AWS에서 ODBC 사용 단계:
- 연결하려는 데이터 소스에 해당하는 ODBC 드라이버 선택
- 연결할 시스템(EC2·온프레미스)에 ODBC 드라이버 설치
- DSN(Data Source Name) 설정: 드라이버·호스트명·포트·인증 정보 포함
- 앱 또는 도구에서 DSN 지정으로 연결 설정 → 쿼리·데이터 상호 작용
💡 Amazon RDS, Aurora, Amazon Redshift는 AWS 내 DB 연결 프로세스를 단순화하고 직접 연결 옵션과 자동화된 관리를 제공하여 수동으로 JDBC 또는 ODBC를 구성할 필요성을 줄여줍니다.
16 AWS로 데이터 API 생성 — API Gateway + Lambda 아키텍처
다른 시스템에서 데이터를 사용할 수 있도록 안전하고 확장 가능한 데이터 API를 구성하는 방법
데이터 소스
(S3·RDS·DynamoDB)
(S3·RDS·DynamoDB)
→
Glue / EMR
정제·정규화·변환
정제·정규화·변환
→
AWS Lambda
데이터 처리·응답 포맷
데이터 처리·응답 포맷
→
Amazon API Gateway
API 관리·보안
API 관리·보안
→
클라이언트
🔐 Amazon API Gateway 기능
프런트엔드 서비스에 액세스하여 클라이언트가 제어된 액세스로 데이터에 안전하게 접근
- 인증(Authentication) 및 권한 부여(Authorization)
- 속도 제한(Rate Limiting)
- 캐싱(Caching)
- 요청·응답 변환(Request/Response Transformation)
- API 버전 관리 — 이전 버전 호환성 유지
⚡ AWS Lambda — API 처리
코드를 작성하여 데이터 소스에서 데이터를 가져오고, 추가 변환 적용, 형식이 지정된 데이터로 API 요청에 응답
Lambda 트리거: API Gateway 또는 기타 AWS 서비스를 통해 호출
자동 크기 조정: 고 동시성·가용성 요구 사항 처리
Lambda 트리거: API Gateway 또는 기타 AWS 서비스를 통해 호출
자동 크기 조정: 고 동시성·가용성 요구 사항 처리
🛡️ 보안 및 인증
AWS IAM — API Gateway·Lambda 액세스·권한 제어
AWS Certificate Manager — SSL/TLS 인증서
API 키 / OAuth — 엔드포인트 보호
AWS Certificate Manager — SSL/TLS 인증서
API 키 / OAuth — 엔드포인트 보호
📊 모니터링 및 캐싱
Amazon ElastiCache 또는 API Gateway 내장 캐싱 → 응답 캐시·지연 시간 감소
Amazon CloudWatch → 성능·지연 시간·사용량 모니터링·추적. API 요청·로그·오류 캡처
Amazon CloudWatch → 성능·지연 시간·사용량 모니터링·추적. API 요청·로그·오류 캡처
🧪 테스트 및 CI/CD
지속적 통합·배포(CI/CD)를 위해
AWS CodePipeline + AWS CodeBuild
→ 테스트 및 배포 프로세스 자동화
AWS CodePipeline + AWS CodeBuild
→ 테스트 및 배포 프로세스 자동화
⚙️ 확장 및 가용성
Lambda 함수에 자동 크기 조정(Auto Scaling) 사용
고 동시성(High Concurrency) 및 가용성 요구 사항을 처리하도록 API Gateway 구성
고 동시성(High Concurrency) 및 가용성 요구 사항을 처리하도록 API Gateway 구성
17 Domain 1 Task 2 변환·처리 전체 AWS 서비스 한눈에 보기
🔄 Transform and Process Data — AWS Services Overview
⚡AWS Lambda간단한 변환·검증
🐘Amazon EMRHadoop·Spark 분산처리
🔄AWS Glue서버리스 ETL
🗂️Glue
Data Catalog메타데이터·논리 뷰
Data Catalog메타데이터·논리 뷰
📊Managed Svc
for Flink스트림 SQL 분석
for Flink스트림 SQL 분석
🏢Amazon
RedshiftDW 처리·변환
RedshiftDW 처리·변환
🔭Redshift
SpectrumS3 외부 테이블
SpectrumS3 외부 테이블
🔥Kinesis
Data Firehose스트리밍 수집·변환
Data Firehose스트리밍 수집·변환
🔀AWS Batch분산 배치 처리
🎼AWS Step
Functions분산 컴퓨팅 오케스트레이션
Functions분산 컴퓨팅 오케스트레이션
🔍Amazon AthenaS3 SQL 임시 쿼리
🌐API Gateway데이터 API 관리
반응형
'Stack > AWS' 카테고리의 다른 글
| [AWS DEA] 문제로 공부하기 20 - OpenSearch (0) | 2026.03.16 |
|---|---|
| [AWS DEA] Domain 1 데이터 수집(Data Ingestion) 완전 정리 (0) | 2026.03.15 |
| [AWS DEA] Data Engineering Fundamentals (with AWS Toolkit) (0) | 2026.03.15 |
| [AWS DEA] 문제로 공부하기 19 - AppFlow (0) | 2026.03.15 |
| [AWS DEA] 문제로 공부하기 18 - S3-IA + Glacier Flexible Retrieval + 삭제 (0) | 2026.03.15 |