DataEngineering

AWS 데이터 파이프라인 구조 정리 ① — 데이터 수집(Ingestion)과 S3 Raw 적재

cheshire5 2026. 3. 9. 20:36

데이터 엔지니어링에서 데이터 파이프라인은 일반적으로 다음과 같은 흐름을 가진다.


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)
   ↓
S3

Producer는 데이터를 생성하는 시스템이다.

  • 웹 서비스 로그
  • 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 → Consumer

Producer는 데이터를 보내고, Consumer는 데이터를 읽는다.

Topic은 데이터를 저장하는 논리적 채널이다.


Kafka 내부 구조

Kafka 내부에서는 데이터가 다음 구조로 저장된다.

Topic
 ├ Partition 1
 ├ Partition 2
 ├ Partition 3

Partition은 병렬 처리를 가능하게 하는 단위이다.

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 Raw

2.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 Raw

2.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.json

Raw 영역 특징

특징 설명
원본 데이터 유지 데이터 변경 없음
재처리 가능 ETL 재실행 가능
데이터 히스토리 보존 분석 추적 가능

전체 흐름 정리

Ingestion 단계의 전체 구조는 다음과 같다.

IAM (권한 관리)
      ↓
Ingestion Layer
(Kinesis / MSK / Lambda / EC2)
      ↓
S3 Raw (Data Lake)

이를 풀어 쓰면 다음과 같다.

외부 데이터
      ↓
데이터 수집 서비스
(Kinesis / MSK / Lambda / EC2)
      ↓
S3 Raw 저장