Apache Airflow와 AWS Lambda의 만남: AWSLambdaExecutor로 구현하는 완벽한 서버리스 워크플로우
엔지니어링 생태계에서 Apache Airflow는 이미 워크플로우 오케스트레이션의 표준으로 자리 잡았습니다.
하지만 대규모 트래픽이나 불규칙한 워크로드를 처리해야 하는 상황에서, 고정된 Worker 자원을 관리하는 것은 여전히 비용과 운영 면에서 큰 부담이 될 수 있습니다
이전 글의 AWS ECS Executor에서 다룬 것 처럼 서버리스 환경에서 테스크를 실행할 수 있는 또다른 방법인 AWS Lambda Executor에 대해 소개시켜드리려 합니다.
이는 Airflow의 강력한 스케줄링 기능과 AWS Lambda의 무한한 확장성을 결합합니다. 별도의 Worker 노드를 상시 가동할 필요 없이, 태스크가 실행될 때만 Lambda 함수를 트리거하여 작업을 수행하는 ‘진정한 서버리스’ 환경을 제공하죠.
AWS Lambda vs AWS ECS Executor
| AWS Lambda Executor | AWS ECS Executor (Fargate) | |
| 실행 모델 | 함수 단위 실행 (Event-driven) | 컨테이너 단위 실행 (Task-based) |
| 최대 실행 시간 | 최대 15분 (엄격한 제한) | 무제한 (장시간 작업 가능) |
| 확장 속도 | 수 밀리초(ms) 단위의 즉각적인 확장 | 컨테이너 프로비저닝에 수십 초~수 분 소요 |
| 리소스 제한 | 메모리 최대 10GB, CPU 제한적 | 높은 메모리 및 vCPU 할당 가능 (GPU 지원 가능) |
| 비용 모델 | 밀리초 단위 호출당 과금 | 컨테이너 가동 시간(초 단위) 동안 과금 |
| 적합한 작업 | 짧고 독립적인 연산, API 호출, 가벼운 ETL | 복잡한 데이터 처리, 장시간 소요 작업, 무거운 종속성 |
AWS Lambda Executor
장점
-
극강의 가성비: 태스크가 실행되는 짧은 순간(밀리초 단위)에만 비용이 발생합니다. 대기 상태의 워커 유지비가 전혀 없습니다.
-
무한에 가까운 확장성: 수천 개의 태스크가 한꺼번에 몰려와도 별도의 클러스터 확장 없이 즉시 병렬 처리가 가능합니다.
-
운영 오버헤드 제로: 인스턴스 관리, 패치, OS 업데이트 등 인프라 관리가 완전히 불필요합니다.
단점
-
15분 시간 제한: 작업이 15분을 넘어가면 강제 종료됩니다. 데이터가 크거나 복잡한 로직에는 치명적입니다.
-
콜드 스타트(Cold Start): 함수가 처음 호출될 때 초기화 시간이 발생하여 지연이 생길 수 있습니다.
-
로컬 디스크 제한: 임시 저장 공간(
/tmp)이 제한적(최대 10GB)이라 대용량 파일 처리에 제약이 있습니다.
AWS ECS Executor (Fargate 기반)
장점
-
실행 시간의 자유: 15분이라는 시간 제한이 없습니다. 몇 시간이 걸리는 복잡한 배치 작업도 안정적으로 처리합니다.
-
고성능 컴퓨팅: 람다보다 훨씬 높은 CPU와 메모리 자원을 할당할 수 있어 무거운 라이브러리나 대규모 데이터 연산에 적합합니다.
-
환경 일관성: Docker 이미지를 그대로 사용하므로 개발 환경과 프로덕션 환경의 일치도가 매우 높습니다.
단점
-
상대적으로 느린 기동: 컨테이너 이미지를 불러오고 인프라를 할당하는 데 시간이 걸려, 아주 짧은 작업들을 수없이 실행하기에는 비효율적일 수 있습니다.
-
비용 관리: 람다보다는 비싸며, 작업이 완료된 후 컨테이너가 내려가기까지의 미세한 유휴 시간에도 비용이 청구됩니다.
AWS Lambda Executor를 선택할 때:
-
각각의 태스크가 15분 이내에 확실히 끝나는 경우
-
워크로드가 불규칙하여 초기 비용을 최소화하고 싶을 때
-
수천 개의 작은 작업(예: API 호출, 작은 파일 변환)을 동시에 병렬 처리해야 할 때
AWS ECS Executor를 선택할 때:
-
작업 시간이 15분을 초과하거나 예측 불가능할 때
-
Pandas, Scikit-learn 등 무거운 라이브러리를 로드하고 대용량 데이터를 메모리에 올려야 할 때
-
태스크마다 독립된 컨테이너 환경의 격리성이 중요할 때
다음 글에선 이어서 AWS Lambda Executor 적용법에 대해 소개해드리겠습니다.