데이터 파이프라인은 초기엔 단순한 스크립트로 시작하지만 규모가 커질수록 변환 로직이 중복되고 작은 변경이 여러 워크플로우에 걸쳐 연쇄 영향을 미친다. 명세 기반 컴포지션 패턴은 워크플로우의 의도(intent)를 구현(implementation)에서 분리해 헬스케어·금융·생명과학처럼 감사 추적과 역할 분리가 중요한 규제 환경에서 특히 빛을 발한다. AWS Lambda, Step Functions, S3, OpenSearch를 조합해 JSON/YAML 명세로 파이프라인을 정의하고, Composer가 이를 실행 가능한 Step Functions 워크플로우로 조립하는 구조다.
핵심 포인트- 파이프라인을 Intent(명세), Composition(검증·조립), Processing(실행) 세 레이어로 분리해 코드 수정 없이 새 데이터셋을 지원한다.
- 구조화된 JSON/YAML 명세가 기능 레지스트리를 참조하면 Composer가 AWS Step Functions 워크플로우를 자동으로 생성한다.
- 처리 전 명세 단계에서 검증이 이뤄져 파이프라인 실행 중 오류 발견 시점을 앞당긴다.
- 워크플로우 의도가 코드가 아닌 명세에 담겨 거버넌스와 감사 추적이 용이해진다.
- 헬스케어·금융·생명과학 등 규제 산업에서 역할 분리(separation of duties)를 코드 레벨로 강제할 수 있다.
상세 정리- 기존 문제: 파이프라인이 성장하면서 변환 로직 복사·붙여넣기, 워크플로우 의도 파악 어려움, 검증 지연, 오케스트레이션과 변환 로직이 동일 스크립트에 혼재하는 문제 발생.
- 아키텍처 3계층: Intent 계층(JSON/YAML 명세에 무엇을 처리할지 선언), Composition 계층(명세 검증 + 기능 레지스트리 참조 + Step Functions 워크플로우 조립), Processing 계층(실제 파이프라인 실행).
- 기능 레지스트리: 재사용 가능한 변환 기능들을 카탈로그화해서 명세에서 이름으로 참조하는 방식.
- Composer: 명세를 파싱해 레지스트리에서 기능을 조회하고 실행 가능한 Step Functions 정의로 변환하는 핵심 컴포넌트.
- AWS Step Functions: 파이프라인 실행 오케스트레이터. 상태 머신 형태로 각 변환 스텝을 연결.
- AWS Lambda: 각 변환 기능의 실제 실행 단위. 명세에서 참조된 기능이 Lambda 함수로 매핑.
- Amazon S3: 입출력 데이터 스토리지. 파이프라인 단계별 중간 결과물 저장.
- Amazon OpenSearch Service: 파이프라인 실행 결과와 감사 로그 인덱싱 및 조회에 활용.
- 새 데이터셋 추가: 기존 코드 수정 없이 새 JSON/YAML 명세 파일만 추가하면 Composer가 워크플로우를 생성.
- 조기 검증: Composer가 명세의 유효성을 파이프라인 실행 전에 검증해 런타임 오류를 줄임.
- 거버넌스 이점: 명세 파일이 워크플로우 의도의 단일 진실 공급원(SSOT)이 되어 변경 추적이 용이.
- 적합한 환경: 복수 팀이 파이프라인을 관리하거나, 감사 요구사항이 있거나, 데이터셋 종류가 자주 추가되는 프로젝트에 특히 효과적.
왜 읽나중대형 데이터 파이프라인을 AWS 서비스 위에서 유지보수 가능한 구조로 설계하려는 아키텍트·데이터 엔지니어에게 실무에 바로 적용 가능한 레이어드 아키텍처 패턴을 제시한다.