Terraform 및 Lambda와 함께 AWS에서 모듈형 서버리스 ETL 파이프라인 구축

발행: (2025년 12월 7일 오후 05:20 GMT+9)
5 min read
원문: Dev.to

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

작동 방식

  1. 사용자(또는 다른 시스템)가 CSV 파일을 raw S3 버킷에 업로드합니다.
  2. S3가 객체 생성 이벤트를 감지해 Lambda 함수를 자동으로 트리거합니다.
  3. Lambda가 CSV를 읽고 행을 파싱한 뒤, 검증·변환 로직을 적용합니다(예: 잘못된 행 제거, 텍스트 정규화, 스키마 강제).
  4. 정제된 데이터는 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:

Back to Blog

관련 글

더 보기 »