데이터 엔지니어링에서 데이터 파이프라인은 일반적으로 다음과 같은 흐름을 가진다.
Data Source
↓
Ingestion
(Kinesis / MSK / Lambda / EC2)
↓
S3 Raw (Data Lake)
↓
Transform
(Glue / EMR / Lambda)
↓
Analytics
(Athena / Redshift / BI)
이 글에서는 데이터가 AWS로 들어오는 Ingestion 단계부터 S3 Raw에 저장되기까지의 구조를 정리한다.
1. IAM (Identity and Access Management)
IAM은 AWS 리소스에 대한 접근 권한을 관리하는 서비스이다.
데이터 파이프라인에서는 여러 서비스가 서로 데이터를 주고받는다.
예를 들어 다음과 같은 동작이 발생한다.
Lambda → S3 업로드
EC2 → S3 업로드
Kinesis → Lambda 트리거
이때 아무 서비스나 리소스에 접근할 수 없도록 권한을 제어하는 계층이 IAM이다.
IAM은 크게 세 가지 요소로 구성된다.
IAM 구성 요소
User
AWS에 로그인하는 사용자 계정이다.
예
- 개발자
- 데이터 엔지니어
- 운영자
IAM User → AWS Console / CLI 접근
Role
AWS 서비스가 다른 AWS 서비스에 접근할 수 있도록 부여하는 권한이다.
예
Lambda → S3 업로드
이 경우 Lambda는 S3에 접근할 수 있는 Execution Role을 가져야 한다.
Role = AWS 서비스용 권한
Policy
리소스에 대한 구체적인 권한 정의 문서이다.
예
{
"Effect": "Allow",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::data-lake-raw/*"
}
의미
S3 bucket에 객체 업로드 허용데이터 파이프라인에서 IAM 역할
| 서비스 | 필요한 권한 |
|---|---|
| Lambda | S3 Write |
| EC2 | S3 Write |
| Kinesis | Lambda Invoke |
| Glue | S3 Read |
즉 IAM은 데이터 파이프라인에서 서비스 간 접근 권한을 관리하는 보안 계층이다.
2. Ingestion Layer
Ingestion Layer는 외부 데이터를 AWS 내부로 수집하여 데이터 레이크에 저장하는 단계이다.
External Data Source
↓
Ingestion Layer
(Kinesis / MSK / Lambda / EC2)
↓
S3 Raw이 단계에서는
- 실시간 스트리밍 데이터 수집
- API 기반 데이터 수집
- 로그 수집
- 이벤트 데이터 수집
등이 이루어진다.
2.1 Kinesis
Amazon Kinesis Data Streams는 AWS에서 제공하는 실시간 데이터 스트리밍 서비스이다.
대량의 데이터를 지속적으로 수집하고 처리할 수 있도록 설계된 시스템이다.
데이터 흐름
Producer
↓
Kinesis Stream
↓
Consumer
(Lambda / Analytics)
↓
S3Producer는 데이터를 생성하는 시스템이다.
예
- 웹 서비스 로그
- IoT 센서
- 금융 거래 이벤트
- 클릭 스트림
샤드(Shard)
Kinesis는 데이터를 Shard라는 단위로 저장한다.
Shard는 처리량 단위이며 다음 성능을 가진다.
| 항목 | 처리량 |
|---|---|
| Write | 1MB/s 또는 1000 records/s |
| Read | 2MB/s |
Shard를 늘리면 스트림 처리량이 확장된다.
특징
| 특징 | 설명 |
|---|---|
| 실시간 처리 | 밀리초 단위 데이터 처리 |
| 확장성 | Shard 기반 수평 확장 |
| 스트림 구조 | 지속적인 데이터 흐름 |
2.2 MSK (Managed Streaming for Apache Kafka)
MSK는 AWS에서 제공하는 관리형 Apache Kafka 서비스이다.
Kafka는 분산 메시지 스트리밍 플랫폼으로, 대규모 이벤트 데이터를 처리하기 위해 사용된다.
Kafka 기본 구조
Kafka의 기본 구조는 다음과 같다.
Producer → Topic → ConsumerProducer는 데이터를 보내고, Consumer는 데이터를 읽는다.
Topic은 데이터를 저장하는 논리적 채널이다.
Kafka 내부 구조
Kafka 내부에서는 데이터가 다음 구조로 저장된다.
Topic
├ Partition 1
├ Partition 2
├ Partition 3Partition은 병렬 처리를 가능하게 하는 단위이다.
Partition이 많을수록 데이터 처리량이 증가한다.
Kafka 특징
| 특징 | 설명 |
|---|---|
| 분산 시스템 | 여러 서버에 데이터 저장 |
| 높은 처리량 | 대량 메시지 처리 |
| 내구성 | 디스크 기반 저장 |
| 확장성 | Partition 기반 확장 |
MSK 역할
Kafka를 직접 운영하려면
- 서버 설치
- 클러스터 관리
- 확장 관리
등이 필요하다.
MSK는 이러한 Kafka 클러스터 운영을 AWS가 관리해주는 서비스이다.
2.3 Kinesis vs MSK
| 항목 | Kinesis | MSK |
|---|---|---|
| 기반 기술 | AWS 서비스 | Apache Kafka |
| 관리 방식 | 완전 관리형 | Kafka 관리형 |
| 확장 방식 | Shard | Partition |
| 운영 난이도 | 낮음 | 비교적 높음 |
| 사용 사례 | AWS 중심 시스템 | Kafka 기반 시스템 |
2.4 Lambda
AWS Lambda는 서버 관리 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스이다.
약어
FaaS (Function as a Service)Ingestion에서 Lambda 역할
Lambda는 보통 데이터 수집 함수로 사용된다.
Event → Lambda 실행 → API 호출 → S3 저장Lambda 데이터 수집 과정
Event 발생
Lambda 실행 트리거
예
- EventBridge 스케줄
- API Gateway
- Kinesis Stream
외부 데이터 수집
Lambda 함수가 외부 API를 호출한다.
예
- 공공데이터 API
- 외부 서비스 API
최소 전처리
Raw 영역이기 때문에 최소 처리만 수행한다.
예
- JSON 형식 정리
- 파일명 생성
- 메타데이터 추가
S3 업로드
External API
↓
Lambda
↓
S3 Raw2.5 EC2
Amazon EC2는 AWS에서 제공하는 가상 서버 서비스이다.
Ingestion 단계에서는 EC2 위에서 ETL 스크립트를 실행하여 데이터를 수집한다.
데이터 수집 구조
Cron → Python ETL → Data Collection → S3데이터 수집 과정
Cron 스케줄
Linux 작업 스케줄러를 이용하여 ETL 작업을 실행한다.
예
매일 02:00 ETL 실행Python ETL 실행
Python 스크립트가 실행되어
- API 호출
- 데이터 다운로드
- 데이터 정리
등을 수행한다.
S3 업로드
External Data
↓
EC2 ETL Script
↓
S3 Raw2.6 Lambda vs EC2
| 항목 | Lambda | EC2 |
|---|---|---|
| 실행 방식 | 이벤트 기반 | 서버 기반 |
| 서버 관리 | 없음 | 필요 |
| 실행 시간 | 제한 있음 | 제한 없음 |
| 운영 부담 | 낮음 | 높음 |
| 사용 사례 | 짧은 데이터 수집 작업 | 대규모 ETL 작업 |
2.7 S3 Raw
Amazon S3는 AWS의 객체 스토리지 서비스이다.
데이터 레이크에서는 Raw 영역이 원본 데이터를 저장하는 계층이다.
Raw 데이터 의미
Raw 데이터는 가공되지 않은 원본 데이터를 의미한다.
Raw = 원본 데이터데이터 레이크 구조 예
data-lake/
├ raw/
│ └ deal_ymd=202502/
│ └ lawd_cd=11110/
│ └ result.jsonRaw 영역 특징
| 특징 | 설명 |
|---|---|
| 원본 데이터 유지 | 데이터 변경 없음 |
| 재처리 가능 | ETL 재실행 가능 |
| 데이터 히스토리 보존 | 분석 추적 가능 |
전체 흐름 정리
Ingestion 단계의 전체 구조는 다음과 같다.
IAM (권한 관리)
↓
Ingestion Layer
(Kinesis / MSK / Lambda / EC2)
↓
S3 Raw (Data Lake)이를 풀어 쓰면 다음과 같다.
외부 데이터
↓
데이터 수집 서비스
(Kinesis / MSK / Lambda / EC2)
↓
S3 Raw 저장'DataEngineering' 카테고리의 다른 글
| AWS 데이터 파이프라인 구조 정리 ② — Transform부터 Analytics까지 (0) | 2026.03.11 |
|---|