데이터 파이프라인은 여러 단계가 연결된 조립 라인과 같습니다. 데이터를 수집하고, 변환하고, 적재하는 각 단계가 정해진 순서대로, 올바른 조건에서 실행되어야 합니다. 이 흐름을 자동으로 조율하는 것이 바로 "오케스트레이션"입니다. 오케스트라의 지휘자처럼, 오케스트레이션 서비스는 각 연주자(서비스)가 정확한 타이밍에 자신의 파트를 수행하도록 지휘합니다. AWS DEA-C01 시험에서는 "어떤 상황에 어떤 오케스트레이션 서비스를 사용하는가"를 자주 묻습니다.
오케스트레이션 서비스 비교
| 서비스 | 방식 | 특징 | 적합한 상황 | |--------|------|------|-----------| | AWS Step Functions | 서버리스 상태 기계 | 시각적 워크플로, AWS 네이티브, 강력한 오류 처리 | AWS 서비스들을 연결하는 워크플로, 복잡한 분기 로직 | | Amazon MWAA | 관리형 Apache Airflow | Python DAG, 풍부한 오퍼레이터 | 기존 Airflow 팀, 복잡한 DAG, 외부 시스템 통합 | | Amazon EventBridge | 이벤트 버스 + 스케줄러 | 이벤트 기반 라우팅, cron 스케줄 | 이벤트 트리거, 시간 기반 자동화 | | AWS Glue Workflow | Glue 전용 조율 | Glue 작업/크롤러 체인 | Glue ETL 작업만 조율할 때 |
!파이프라인 오케스트레이션 서비스 4가지 비교
AWS Step Functions — 워크플로의 지휘자
AWS Step Functions는 여러 AWS 서비스를 연결하는 서버리스 워크플로 서비스입니다. JSON 기반의 Amazon States Language(ASL)로 워크플로를 정의하면, Step Functions가 각 단계를 자동으로 실행하고 모니터링합니다. 레고 블록처럼 각 "상태(State)"를 연결해 복잡한 파이프라인을 만들 수 있습니다.
상태(State) 유형 이해하기
Step Functions 워크플로는 여러 종류의 상태로 구성됩니다:
Task 상태: 실제 작업을 실행합니다. Lambda 함수 호출, Glue 작업 시작, DynamoDB 쿼리 등 AWS 서비스와 직접 통합됩니다. Choice 상태: 조건에 따라 다른 경로로 분기합니다. "데이터 크기가 1GB 이상이면 EMR로, 아니면 Lambda로"와 같은 로직을 구현합니다. Parallel 상태: 여러 작업을 동시에 실행합니다. 세 개의 지역 데이터를 동시에 처리할 때 유용합니다. Map 상태: 배열의 각 항목에 동일한 처리를 반복합니다. 100개의 파일을 각각 처리하는 루프와 같습니다. Wait 상태: 일정 시간 또는 특정 타임스탬프까지 대기합니다. Succeed / Fail 상태: 워크플로를 성공 또는 실패로 종료합니다.
Standard vs Express 워크플로
| 항목 | Standard | Express | |------|---------|---------| | 최대 실행 시간 | 1년 | 5분 | | 실행 보장 | 정확히 한 번 | 최소 한 번 | | 감사 이력 | 전체 실행 이력 보관 | 제한적 | | 비용 | 상태 전환 횟수 기준 | 실행 횟수 + 지속 시간 기준 | | 적합한 상황 | 장기 실행 워크플로, 감사 필요 | 고빈도 단기 작업 (초당 수천 건) |
오류 처리: Retry와 Catch
현실에서는 작업이 실패할 수 있습니다. Step Functions는 각 상태에 오류 처리를 직접 정의할 수 있습니다:
Retry: 실패 시 자동으로 재시도합니다. 재시도 횟수, 간격, 백오프 계수를 설정합니다. 예: "Lambda 호출이 실패하면 최대 3번, 2초 간격으로 재시도" Catch: 모든 재시도가 실패했을 때 대체 경로로 이동합니다. 예: "처리 실패 시 오류 알림 Lambda를 실행하고 관리자에게 이메일 발송"
Amazon MWAA — Apache Airflow를 AWS에서 관리형으로
Apache Airflow는 데이터 파이프라인을 Python 코드로 정의하고 스케줄링하는 오픈소스 도구입니다. Amazon MWAA(Managed Workflows for Apache Airflow)는 Airflow를 AWS가 직접 설치, 유지보수, 스케일링해주는 관리형 서비스입니다.
DAG(Directed Acyclic Graph)란?
Airflow에서 워크플로는 DAG로 표현됩니다. DAG는 "방향이 있고 순환이 없는 그래프"입니다. 쉽게 말하면, 작업들이 화살표로 연결되어 있는데, 화살표를 따라 가다 보면 절대 처음으로 돌아오지 않는 구조입니다.
오퍼레이터(Operator)
각 작업(Task)의 실행 방법을 정의합니다. Airflow는 수백 개의 오퍼레이터를 제공합니다: AWS 오퍼레이터: GlueJobOperator, EMROperator, S3CopyObjectOperator 등 외부 시스템: PostgresOperator, SparkSubmitOperator, HttpOperator 등
MWAA vs Step Functions 선택 기준
| 상황 | 선택 | |------|------| | 기존 팀이 Airflow를 사용 중 | MWAA | | AWS 외부 시스템(온프레미스 DB 등)과 통합 필요 | MWAA | | AWS 네이티브 서비스만 사용 | Step Functions | | 복잡한 분기/병렬 로직, 시각적 관리 | Step Functions | | 빠른 시작, 낮은 학습 곡선 | Step Functions |
Amazon EventBridge — 이벤트 기반 자동화의 핵심
EventBridge는 이벤트를 감지하고 다른 서비스로 라우팅하는 서비스입니다. "어떤 일이 일어났을 때 자동으로 다른 일을 시작하게" 만드는 것이 EventBridge의 역할입니다.
이벤트 기반(Event-driven) 동작
AWS 서비스 이벤트: EC2 인스턴스 상태 변경, S3 파일 업로드, CodePipeline 완료 등의 이벤트를 감지합니다. 규칙(Rule): 특정 이벤트 패턴과 일치할 때 대상(Target)을 호출합니다. 예: "S3에 새 파일이 생성되면 Step Functions 워크플로를 시작" 대상(Target): Lambda, Step Functions, SQS, SNS, Kinesis, API Gateway 등 다양한 서비스로 이벤트를 전달합니다.
스케줄러(Scheduler)
cron 식 또는 rate 식으로 정기적인 작업을 실행합니다: → 매일 오전 8시 UTC에 실행 → 1시간마다 실행 → 평일 오전 9시에만 실행
EventBridge는 파이프라인의 "시작 신호"를 담당합니다. 예를 들어 "매일 자정에 Glue ETL 작업 시작" 또는 "S3에 파일이 올라오면 Step Functions 파이프라인 시작"과 같은 트리거 역할을 합니다.
시험 핵심 정리
| 키워드 | 선택 서비스 | |--------|-----------| | 서버리스 워크플로, AWS 네이티브, 시각적 | Step Functions | | 분기 로직이 필요한 워크플로 | Step Functions Choice 상태 | | 병렬 처리 단계 | Step Functions Parallel 상태 | | 워크플로 실패 시 재시도 | Step Functions Retry/Catch | | 관리형 Apache Airflow | Amazon MWAA | | 기존 Airflow DAG를 AWS로 이전 | Amazon MWAA | | 이벤트 기반 트리거, cron 스케줄 | EventBridge | | Glue ETL 작업만 조율 | Glue Workflow | | 고빈도 단기 워크플로 (초당 수천 건) | Step Functions Express 워크플로 |
Step Functions와 MWAA의 핵심 구분: AWS 네이티브 서비스 중심이면 Step Functions, Python DAG와 Airflow 에코시스템이 필요하면 MWAA입니다.