티스토리 뷰
데이터 파이프라인 자동화의 중심에는 워크플로우 오케스트레이션 도구가 있습니다. 그중에서도 Apache Airflow는 유연성과 확장성을 갖춘 강력한 도구로 주목받고 있습니다. 본 글에서는 AWS 환경에서 Airflow를 설치하는 방법부터, DAG(Directed Acyclic Graph) 구성법, 그리고 운영 관리 팁까지 최신 기준에 따라 상세히 안내합니다. 실무 중심의 예제와 함께 따라할 수 있는 가이드로 구성되어 있어, 초보자부터 중급 개발자까지 모두에게 도움이 될 것입니다.
AWS에서의 Airflow 설치 방법
AWS 환경에서 Apache Airflow를 설치하는 방법에는 대표적으로 두 가지 방식이 있습니다. 첫 번째는 AWS Managed Workflows for Apache Airflow(MWAA)를 사용하는 것이고, 두 번째는 EC2 혹은 EKS 기반의 직접 설치 방식입니다. MWAA는 관리형 서비스로, 인프라 운영 부담이 적고 확장성 측면에서 유리하지만 비용과 설정의 제약이 있습니다. 반면, 직접 설치 방식은 커스터마이징 자유도는 높지만 초기 설정이 복잡합니다.
MWAA를 사용할 경우 AWS 콘솔에서 몇 가지 기본 설정만으로 인프라 구성이 완료됩니다. VPC, 서브넷, IAM 역할, S3 버킷 등을 지정한 뒤 DAG 경로와 환경 구성을 마치면 기본적인 운영이 가능합니다. 단, 패키지 의존성 설치는 제한적이므로, requirements.txt나 plugins.zip을 활용해야 합니다.
직접 설치 방식의 경우 Ubuntu 또는 Amazon Linux 기반 EC2 인스턴스를 사용해 Python, Airflow, Celery 등을 수동으로 설정하게 됩니다. 이 경우 다양한 Airflow Executor(Celery, KubernetesExecutor 등) 설정이 가능하며, DB는 PostgreSQL 또는 MySQL을 백엔드로 활용합니다.
설치 후에는 웹서버와 스케줄러를 백그라운드 프로세스로 실행해야 하며, 안정적 운영을 위해 Supervisor나 Systemd 설정도 함께 고려해야 합니다. Docker와 Docker Compose를 활용한 설치도 대안이 될 수 있습니다.
DAG 작성과 운영의 기본 원리
Airflow의 핵심은 DAG(Directed Acyclic Graph) 구조입니다. 이는 작업(Task)들을 순서대로 연결한 그래프로, 작업 실행 순서와 의존성을 정의합니다. DAG 파일은 보통 Python으로 작성되며, 각각의 DAG은 고유한 dag_id와 실행주기(schedule_interval)를 가집니다.
기본적인 DAG 구조는 with DAG(...) as dag: 블록 안에 여러 개의 PythonOperator, BashOperator, DummyOperator 등을 포함해 구성됩니다. 각 작업은 태스크(task)로 정의되며, set_upstream(), set_downstream() 또는 >>, << 연산자로 실행 순서를 정할 수 있습니다.
DAG 작성 시 주의할 점은 다음과 같습니다:
- DAG 파일은 경량화해야 하며, 무한 루프 또는 무거운 로직은 피해야 함
- 각 태스크는 실패했을 경우의 리트라이 전략과 SLA를 설정할 수 있음
- DAG마다 owner, start_date, catchup 등의 파라미터를 명확히 설정해야 함
운영 환경에서는 DAG 실행 기록(Log), Task 상태 모니터링, SLA 알림 설정, Task 재실행 기능 등이 제공되며, 이는 Airflow 웹 UI 또는 CLI를 통해 관리할 수 있습니다. 또한 DAG 내에 다양한 Operator를 조합해 API 호출, 데이터 처리, 메일 전송 등 다양한 자동화 작업을 구현할 수 있습니다.
AWS 환경에서의 운영 및 확장 전략
AWS에서 Airflow를 운영할 경우, 몇 가지 전략적 고려사항이 있습니다. 먼저 로그 관리를 위해 CloudWatch Logs 또는 S3를 백엔드로 설정하는 것이 좋습니다. DAG 파일도 S3에 저장하고, plugins와 requirements 또한 버킷에 포함시켜 버전 관리를 용이하게 해야 합니다.
보안 측면에서는 IAM 역할과 정책을 세밀하게 구성해야 하며, 최소 권한 원칙을 적용해 데이터 및 리소스 접근을 제한해야 합니다. 특히 MWAA에서는 실행 역할(Execution Role)이 DAG 내에서 외부 서비스(Athena, S3, Lambda 등)에 접근할 수 있도록 설정해야 합니다.
확장성과 성능을 고려해 스케줄러와 워커 노드를 분리하고, Auto Scaling을 적용하거나 Kubernetes 기반 Executor를 사용하는 것도 고려할 수 있습니다. DAG의 개수가 많아지면, DAG 파서 성능이 병목이 되므로 DAG 분리 전략과 Tag를 활용한 관리 체계도 필요합니다.
또한 운영 자동화를 위해 Git + CI/CD 파이프라인(GitHub Actions, CodePipeline 등)을 구성하고, DAG 코드 변경 시 자동 배포되도록 설정하면 유지보수가 편리해집니다. 마지막으로 Slack, SNS, 이메일 연동을 통한 알림 시스템도 빠질 수 없는 요소입니다.
Airflow는 단순한 스케줄러를 넘어 다양한 업무 프로세스를 자동화하는 강력한 플랫폼입니다. 특히 AWS 환경과 연동하면 높은 확장성과 안정성을 동시에 확보할 수 있습니다. 설치부터 DAG 작성, 운영까지 본 가이드를 통해 실무에 즉시 적용 가능한 체계를 구축하시기 바랍니다. 앞으로도 변화하는 클라우드 환경에 맞춰 지속적인 업데이트와 테스트를 권장드립니다.