[TIL] Airflow의 다양한 고급 기능과 CI / CD 환경에 대해 학습 (1)

이원진·2023년 6월 19일
0

데브코스

목록 보기
51/54
post-thumbnail
post-custom-banner

학습내용


  1. Airflow Docker 환경설정

  2. Summary 테이블 구현

  3. Slack 연동하기

1. Airflow Docker 환경설정


  • Docker 사용해 Airflow 실행 시 Variables, Connections 등의 환경설정 값은 docker-compose.yml에서 아래와 같이 정의

    x-airflow-common:
        &airlfow-common
        ...
    
        environment:
            &airflow-common-env
            AIRFLOW_VAR_DATA_DIR: /opt/airflow/data
            AIRFLOW_CONN_TEST_ID: test_connection

  • DAG 코드도 Airflow Image로 만들어 관리하는 것이 깔끔함

    • 개발 / 테스트 시에는 docker-compose에서 host volume 형태로 설정 가능

2. Summary 테이블 구현


  • CTAS 부분을 별도의 환경설정 파일로 분리 가능

    • config 폴더 생성 후 Summary 테이블별로 하나의 환경설정 파일 생성

    • Python dictionary 형태로 저장하기 위해 .py 확장자로 생성

      {
          'table': 'mau_summary',
          'schema': 'XXX',
          'main_sql': """SELECT ...;""",
          'input_check': [],
          'output_check': [],
      }


3. Slack 연동하기


  • DAG 실행 중 에러 발생 시 슬랙 워크스페이스 채널로 메시지 전송

    • 해당 워크스페이스에 Incoming Webhooks App 생성

    • 연동을 위한 함수(plugins/slack.py)를 생성하고, 이를 태스크에 적용되는 dafault_args의 on_failure_callback에 지정

      from plugins import slack
      
      ...
      default_args = {
          'on_failure_callback': slack.on_failure_callback,
      }

메모



post-custom-banner

0개의 댓글