Apache Airflow는 작업의 자동화 및 스케줄링을 위한 강력한 플랫폼으로, 여러 중요한 구성 요소가 함께 작동하여 DAG(Directed Acyclic Graph) 기반의 작업 흐름을 관리합니다. 각 구성 요소의 역할과 동작 방식을 정확히 이해하는 것이 중요합니다.


Lifecycle

Scheduler

Scheduler는 시스템 내에서 작업을 예약하는 역할을 합니다. 주기적으로 실행될 작업이나, 수동으로 트리거된 작업을 큐에 추가하고, 해당 작업이 실행될 시점과 우선순위를 결정합니다. Scheduler는 작업의 의존성을 관리하고, 실행할 때 Worker에게 작업을 전달합니다.

  • 작업 예약 및 실행 시점 결정
  • 작업 의존성 관리
  • 작업 큐에 작업 추가 및 실행 준비

Executor

ExecutorWorker가 작업을 실행할 수 있는 환경을 설정합니다. 작업이 실행될 방법과 방식을 결정하는 역할을 하며, Worker가 작업을 어떻게 실행할지 설정합니다.

  • 작업 실행 환경 설정
  • 실행 방식 결정 (로컬, 분산 등)
  • 여러 실행 모드 제공
    • LocalExecutor: 로컬 작업
    • CeleryExecutor: 분산 환경 작업

Worker

Worker는 실제로 Scheduler가 예약한 작업을 실행하는 구성 요소입니다. Scheduler로부터 받은 작업을 Executor가 설정한 환경에 맞춰 실행하고, 그 결과를 다시 Scheduler에게 보고합니다. 여러 Worker가 동시에 작업을 실행하여, 병렬 처리로 시스템의 성능을 향상시킬 수 있습니다.

  • 작업 실행
  • 실행 결과 보고
  • 병렬 처리로 성능 최적화

Architecture

Webserver

Web Server는 클라이언트와 시스템 간의 인터페이스 역할을 합니다. 사용자는 웹 브라우저를 통해 요청을 보내고, Web Server는 이 요청을 처리하여 적절한 응답을 클라이언트에게 반환합니다. 웹 서버는 주로 RESTful API나 웹 애플리케이션을 통해 시스템과 상호작용합니다.

  • HTTP 요청 처리
  • RESTful API 제공
  • 클라이언트와 시스템 간의 인터페이스 역할

Metadata Database

Metadata Database는 시스템에서 발생한 작업의 상태, 실행 기록, 의존성 정보 등을 저장하는 데이터베이스입니다. 이 데이터베이스는 작업 흐름을 추적하고, 실패한 작업의 디버깅을 돕습니다.

  • 작업의 상태, 실행 기록 저장
  • 작업 간 의존성 및 흐름 추적
  • 시스템 모니터링 및 디버깅 지원

References