MWAA란?
Amazon Managed Workflows for Apache Airflow란 Apache Airflow에 대한 AWS 관리형 오케스트레이션 서비스로 MWAA라고 칭해진다.
MWAA는 관리형 서비스이기 때문에 확장성, 가용성 등 인프라 관리에 대한 고민 없이 Airflow를 사용할 수 있다. 즉, 요구 리소스에 맞춰 워크플로우 용량을 확장하므로 AWS 클라우드 환경에서 데이터 파이프라인을 대규모를 설정하고 운영하는데 적합하다.
이 글에서는 Apache Airflow에 대한 기본 지식은 있다고 가정하고 작성했다.
장점
MWAA를 사용하면 다음과 같은 장점을 가질 수 있다.
- 자동 Airflow 설정 : MWAA를 사용하면 환경 생성 시 필요한 Airflow 버전을 선택하여 환경을 설정할 수 있다.
- 자동 규모 조정 : MWAA 생성 시 지정한 Worker의 최대, 최소 대수 범위 내에서 실행 중인 작업과 대기 중인 작업의 수를 기준으로 Worker 서버의 수를 자동 조정한다.
🤔 Worker를 Scailable 하게 사용할 수 있게 하는 CeleryExecutor를 사용하는 모양이다.
- 인증 및 보안 : IAM을 사용해 Airflow 웹 서버에 대한 역할 기반 권한을 부여할 수 있다. 또한 웹 서버에 대한 퍼블릭 접근 모드를 제어하여 인터넷을 통한 접근을 제한할 수 있다.
- Airflow 버전 업그레이드 : MWAA는 정기적으로 새로 출시된 Airflow 버전을 제공한다. (https://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/airflow-versions.html)
🤔 단, 버전 출시 간격과 버전 수명 주기 관리 기간에 따라 EKS처럼 1년마다 업그레이드를 진행해야 하는 부담이 있을 수 있을 것 같다.
- 모니터링 : CloudWach에서 Airflow 로그와 지표를 통해 작업 처리 지연 또는 에러를 확인할 수 있다.
- AWS 연동 : MWAA는 AWS 서비스이므로 Athena, DynamoDB, DataSync, EMR, EKS, Glue 등의 서비스와 연동할 수 있다.
구조
MWAA는 다음과 같은 구조로 구현되어 있다. 구조도에 눈에 띄는 부분만 적어둔다.
- Web Server와 Meta DB가 동작하는 Service VPC와 Scheduler와 Worker가 동작하는 Customer VPC로 나뉘어 있다.
- Web Server / Scheduler / worker는 모두 서버리스 도커 컨테이너 서비스인 AWS Fargate로 동작한다.
- Meta DB로는 Aurora를 사용한다.
- 여러 스케쥴러와 Worker가 접근할 수 있는 dags 폴더가 필요한데 이 부분은 S3를 참조하는 것 같다.
코드 저장소에서 관리하는 코드를 S3로 업로드하여 배포하는 방법에 대한 고민이 필요할 것 같다.
참고 문서
https://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/what-is-mwaa.html
https://docs.aws.amazon.com/ko_kr/mwaa/latest/migrationguide/mwaa-architecture.html