Terraform 및 Lambda와 함께 AWS에서 모듈형 서버리스 ETL 파이프라인 구축
Source: Dev.to
개요
많은 애플리케이션, 특히 작은 애플리케이션도 원시 CSV 파일(고객 내보내기, 로그, 파트너 데이터 덤프) 형태로 데이터를 받습니다. 데이터를 표준 형식으로 정리·검증·저장하는 자동화가 없으면 팀은 데이터가 엉망이 되고, 작업이 중복되며, 형식이 일관되지 않고, 새 데이터가 들어올 때마다 수동 작업을 해야 합니다.
이 파이프라인이 제공하는 기능:
- 원시 CSV 업로드 자동 처리
- 기본 데이터 정제(클리닝·검증)
- 분석 또는 다운스트림 시스템에서 바로 사용할 수 있는 출력
- 모듈화되고 재현 가능하며 확장 가능한 인프라
Terraform, AWS Lambda, Amazon S3를 결합해 서버리스, 확장성, 재배포 용이성을 확보했습니다.
아키텍처 및 설계
고수준 흐름:
Raw CSV file
↓
S3 raw‑bucket
↓ (S3 event trigger)
Lambda function (Python)
↓
Data cleaning / transformation
↓
Save cleaned CSV to S3 clean‑bucket
↓ (optional)
Push cleaned data to DynamoDB / RDS
작동 방식
- 사용자(또는 다른 시스템)가 CSV 파일을 raw S3 버킷에 업로드합니다.
- S3가 객체 생성 이벤트를 감지해 Lambda 함수를 자동으로 트리거합니다.
- Lambda가 CSV를 읽고 행을 파싱한 뒤, 검증·변환 로직을 적용합니다(예: 잘못된 행 제거, 텍스트 정규화, 스키마 강제).
- 정제된 데이터는 clean S3 버킷에 다시 저장되며, 필요에 따라 DynamoDB·RDS 등 데이터베이스로도 전송됩니다.
모든 것이 Terraform으로 관리되므로 인프라를 버전 관리하고, 환경(dev / staging / prod) 간에 일관되게 재배포하며, 권한을 깔끔하게 관리할 수 있습니다.
활용 사례 예시
- 고객 데이터 수집: 파트너 또는 내부 팀이 사용자 데이터를 내보내면 파이프라인이 이를 정제·표준화해 분석이나 임포트에 바로 사용할 수 있게 합니다.
- 일일 매출/거래 보고서: 일일 업로드 파일을 정제된 형식으로 자동 처리해 대시보드나 청구 시스템에 바로 활용합니다.
- 로그/이벤트 데이터 처리: 원시 로그나 CSV 내보내기를 정규화된 데이터로 변환해 분석 또는 저장에 사용합니다.
- 분석·머신러닝 전처리: 원시 데이터를 정제·표준화해 데이터 웨어하우스나 데이터 레이크에 적재하기 전에 전처리합니다.
- 보관·컴플라이언스 워크플로: 감사나 기록 보관을 위해 정제되고 버전 관리된 검증된 데이터 세트를 유지합니다.
Terraform을 활용한 인프라 코드(IaC)
- 이벤트 기반 서버리스 아키텍처와 Lambda
- 보안 IAM 정책 및 리소스 권한
- 모듈화된 재사용 가능한 Terraform 모듈
- Python으로 구현된 깔끔하고 유지보수 가능한 ETL 로직
가능한 확장 기능
- 스키마 검증 및 오류 로깅
- DynamoDB 또는 파일 해시를 이용한 중복 제거 로직
- 다중 대상 지원(S3, DynamoDB, RDS)
- 모니터링 및 CloudWatch 메트릭
- 다중 포맷 지원(CSV, JSON, Parquet)
- CI/CD 통합
- 다중 환경 배포(dev, staging, prod)
결론
이 프로젝트는 AWS에서 실제 운영 수준의 ETL 파이프라인을 구축하는 방법을 보여줍니다. 작지만 강력한 예제로 서버리스 컴퓨팅, IaC, 자동화를 결합했습니다. 이러한 도구들을 실험해 보면 베스트 프랙티스를 배우면서 포트폴리오에 실질적인 결과물을 만들 수 있는 좋은 방법이 됩니다.
GitHub repository: