ssung_데이터 엔지니어링/11주차_Airflow 고급

Airflow 고급_(1), (2)

ssungcohol 2024. 1. 3. 10:44

Airflow 실행환경 관리방안

  • 기타 환경설정 값들 (Variables, Connections 등등)을 어떻게 관리하고 배포하는가?
    • 주로 docker-compose.yml(yaml) 파일의 아래 부분에 정의
      (환경변수가 아니라 별도 credentials 전용 Secrets 백엔드라는 것을 사용하기도 함)

      enviroment:
        &airflow-common-env
          AIRFLOW_VAR_DATA_DIR: /opt/airflow/data
          AIRFLOW_CONN_TEST_ID: test_connection
  • Airflow 이미지를 통해 어디까지 관리하고 무엇을 docker-compose.yml에서 관리할지 생각
    • 회사마다 조금씩 다름
    • Airflow 자체 이미지를 만들고 거기에 넣을 경우 환경변수를 자체 이미지에 넣고 이를 docker-compose.yaml에서 사용
    • 또는 docker-compose.yaml에서 환경변수를 직접 설정

      x-airflow-common:
        &airflow-common
      image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.5.1}
      (환경변수가 정의되어 있으면 정의된 것을 사용하고 아닐경우, 기본값인 apache/airflow:2.5.1 사용)
  • DAG 코드 또한 마찬가지
    • Airflow image로 DAG 코드를 복사하여 만드는 것이 조금 더 깔끔
    • 또는 docker-compose에서 host volume 형태로 설정 (개발/테스트용으로 더 적합)
  • .airflowignore
    • Airflow의 DAG 스캔 패턴
       - dags_folder가 가리키는 폴더를 서브폴더들까지 다 스캔하여 DAG 모듈이 포함된 모든 파이썬 스크립트를 실행하여 해로운 DAG를 찾게 되지만 가끔 사고가 발생
    • Airflow가 의도적으로 무시해야하는 DAG_FOLDER의 디렉터리 또는 파일을 지정
    • .airflowignore의 각 줄은 정규식 패턴으로 지정하며 매칭되는 파일들은 무시됨

SLACK 연동하기

  1. 슬랙 내의 별도의 WORKSPACE를 생성하여 에러 발생을 alert 할 수 있는 Channel을 생성
  2. https://api.slack.com/messaging/webhooks 방문
  3. Create New App -> From scratch -> app 이름 설정 -> Workspace 설정 -> Incoming Webhooks 선택
  4. Incoming Webhooks 화면에 들어오면 Incoming을 활성화 (off -> on)
  5. 페이지 하단의 Webhook URL에서 Add New Webhook to Workspace 를 선택하여 alert를 할 채널 지정
  6. cmd 창을 통한 test를 위해 아래의 명령어를 복사하여 cmd (터미널)에서 test 진행
    ※ 주의점! mac os의 경우 해당 명령어를 바로 입력해도 되지만, ms os의 경우 큰따옴표는 작은 따옴표로, 작은 따옴표는 큰 따옴표로 변경하여 입력!
    curl -X POST -H "Content-type: application/json" --data "{'text' : 'Hello, World!'}" https://hooks.slack.com/services/....

 

728x90

'ssung_데이터 엔지니어링 > 11주차_Airflow 고급' 카테고리의 다른 글

Airflow 고급_(5)  (0) 2024.01.05
Airflow_고급(4)  (1) 2024.01.04
Airflow 고급_(3)  (0) 2024.01.03