JUST DO IT!

Airflow 운영에 주의사항과 Airflow 대안 서비스 알아보기 - TIL230622 본문

TIL

Airflow 운영에 주의사항과 Airflow 대안 서비스 알아보기 - TIL230622

sunhokimDev 2023. 6. 22. 20:14

📚 KDT WEEK 12 DAY 4 TIL

  • Airflow 운영
  • Airflow 대안

 

🟥 프로덕션 사용을 위한 Airflow 환경 설정

 

1. airflow.cfg

  • core 섹션의 dags_folder가 들어있는 디렉토리 설정
  • dag_dir_list_interval에 설정된 dag 폴더 스캔 주기 설정(초단위)
    • 모든 DAG를 한번씩 실행해보기 때문에, 이게 곤란한 DAG들은 airflowignore 활용

 

2. DB의 정보를 주기적으로 백업하는게 좋다.

  • Airflow의 기본 DB는 Sqlite이지만 Postgres나 MySQL로 바꾸는 경우,
  • airflow.cfg의 core 섹션의 sql_alchemy_conn 설정 변경과 Executor 변경필요

 

3. Authentication과 보안

  • 기본으로 주어지는 어드민 계정은 보안에 매우 취약하다. > 변경필요
  • Authentication의 경우 Airflow 2.0에서는 기본으로 주어진다.
  • 되도록이면 Airflow를 VPN 뒤에 설치하는 것이 안전하다.

4. log파일 관리

  • airflow.cfg의 core 섹션에 log 파일 디렉토리 설정 가능
  • log는 DAG의 수가 늘어남에 따라 허용한 공간이 생각보다 금방 찬다, > 다 차면 Airflow 동작 X
  • 주기적으로 Log 폴더를 Clean Up 필요 ( 삭제 or 다른 DB에 업로드 등)

 

5. 주기적으로 Airflow Metadata Database 백업하기

  • Variables와 Connection 정보를 커맨드 라인이나 API를 통해 백업하기
    • ex) airflow variables export variables.json

 

6. Airflow의 Health API를 모니터링 툴과 연동하여 지속적인 health-check monitoring

 


 

Airflow 로그 파일 삭제하기

Airflow는 두 군데에 별도의 로그를 기록한다.

 

[logging]
base_log_folder = /var/lib/airflow/logs

[scheduler]
child_process_log_directory = /var/lib/airflow/logs/scheduler

 

Log 폴더의 허용량이 초과하면, Airflow가 동작을 멈추므로 이를 주기적으로 삭제하거나 S3와 같은 저장소에 백업하는 것이 중요하다. (DAG 활용하면 좋음)

 

docker compose로 실행된 경우 logs 폴더가 host volume 형태로 유지되어 있다.

 

logs 폴더에 각종 DAG RUN log와 scheduler 로그가 남아있는 모습

 

 


 

Airflow 대안

 

아래의 세 서비스는 모두 오픈 소스이다.

  • Prefect : Airflow와 흡사하고 경량화된 버전으로, 데이터 파이프라인을 동적으로 생성할 수 있음
  • Dagster : 데이터 파이프라인과 데이터를 동시에 관리할 수 있는 툴
  • Airbyte : 코딩이 최소화된 간단하게 활용가능한 툴