Data-Driven System Development/Airflow로 시작하는 워크플로우 자동화

Docker로 Airflow 실행하기: 설정부터 운영까지

Data Jun 2025. 1. 27. 09:40

 

Airflow 웹 UI의 로그인 페이지를 보여줍니다. Airflow는 파이프라인 관리 도구로, 사용자는 설정된 포트(기본적으로 8080)를 통해 웹 인터페이스에 접근할 수 있습니다. 로그인 화면에서 UsernamePassword를 입력해야 대시보드에 접속 가능하며, 접속 후 DAG 실행, 상태 모니터링, 작업 스케줄 관리와 같은 기능을 사용할 수 있습니다.

이 화면은 Airflow 서버가 정상적으로 실행되고 웹 서버가 작동 중임을 나타냅니다.

 

 

사용자가 Docker 컨테이너 내부로 접속한 상태를 보여줍니다. 명령어 docker exec -it b7bc774f96c5 bash를 사용하여 컨테이너 ID b7bc774f96c5에 접속했고, 현재 위치는 컨테이너의 /usr/local/airflow 디렉토리입니다.

이를 통해 사용자는 컨테이너 내부의 파일 시스템에 접근하고, 추가적인 설정이나 디버깅 작업(예: Airflow 구성 파일 확인, 플러그인 설치 등)을 수행할 수 있습니다.

 

 

위 명령어를 실행한 후 Airflow UI에서 admin_user  로그인할 수 있습니다. 필요한 경우 이메일, 이름, 패스워드를 수정해 사용하세요

 

Airflow에서 dag_command.py 또는 특정 DAG 파일의 문제를 찾을 때, airflow dags reserialize 명령어를 활용하세요. 이 명령어는 Airflow가 DAG 파일을 로드하면서 발생한 오류와 경고를 자세히 보여줍니다. 이를 통해 누락된 모듈(ModuleNotFoundError)이나 의존성 문제를 빠르게 확인할 수 있습니다. 예를 들어, pandas 또는 kubernetes와 같은 라이브러리가 누락된 경우 해당 메시지를 확인하고 적절히 설치하여 문제를 해결할 수 있습니다.

 

Airflow 실행 화면
select_best_model Logs

Airflow DAG 시각화 및 구성: 모델 학습 및 선택

이 이미지는 Apache Airflow를 사용하여 model_training_selection DAG(Directed Acyclic Graph)의 워크플로를 시각화한 화면입니다. DAG는 머신러닝 모델 학습 및 최적 모델 선택 작업을 자동화하기 위해 설계되었습니다.

워크플로 구성

  1. feature_engineering:
    • 데이터를 전처리하고 모델 학습에 적합한 형태로 변환.
  2. train_rf & train_gb:
    • 랜덤 포레스트(Random Forest)와 그래디언트 부스팅(Gradient Boosting) 모델 학습.
  3. select_best_model:
    • 학습된 모델 중 최적 성능을 가진 모델 선택.

Airflow Task Logs를 보여주는 페이지로, model_training_selection DAG의 마지막 태스크인 select_best_model의 실행 결과를 확인할 수 있습니다.

결과 내용

  1. 태스크 상태:
    • 태스크는 성공적으로 실행되었음을 나타냅니다.
  2. 로그 주요 내용:
    • Best Model: GradientBoosting 모델이 선택되었으며, 성능(performance)은 0.9555555555555556으로 기록되었습니다.
    • 실행 완료 로그: INFO - Done. Returned value was: GradientBoosting.
  3. 추가 정보:
    • 실행 전, 실행 중, 실행 후 단계별 로그를 확인 가능하며, 모델 학습 및 평가의 모든 단계를 기록합니다.

Airflow 장점

  • 워크플로를 시각적으로 이해할 수 있고, 태스크의 상태(성공, 실패 등)를 실시간으로 확인 가능.
  • 태스크 간 의존 관계를 설정해 효율적인 작업 순서를 관리.