[데이터 엔지니어링 데브코스 2기] TIL-12주차 Airflow의 다양한 고급 기능과 CI/CD 환경 설정에 대해 학습 (1)

이재호·2024년 1월 3일
0

1. Airflow 설정


1-1. Airflow Docker 환경 설정


  • 다음 명령어로 airflow 레포 클론. git clone https://github.com/learndataeng/learn-airflow.git
  • learn-airflow 폴더에서 이미지 관련 yml 파일 다운로드. curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.5.1/docker-compose.yaml'

docker-compose.yaml 수정.

  • _PIP_ADDITIONAL_REQUIREMENTS 수정. (:- 뒤에 dag 실행에 필요한 모듈 설치 명령어 추가)
  • data 폴더를 호스트 폴더에서 만들고 volume으로 지정. (AIRFLOWVAR변수명 : 폴더 경로)
  • yml 파일에서 AIRFLOAW_VAR or AIRFLOW_CONN 등으로 변수 및 커넥션과 같은 환경 설정 가능.
  • airflow-common에서 image에 대한 환경 변수 설정 가능. (만약 커스텀으로 이미지를 사용할 시 직접 설정해야 함.)
  • airflow image로 dag 코드를 복사하여 만드는 것이 좀더 깔끔함. 만약, docker compoase에서 host volume 형태로 설정하면 개발/테스트용으로 적합함.

1-2. Docker 실행


-docker compose -f docker-compose.test.yaml up -d 명령어로 detached 모드로 실행.

  • http://localhost:8080 으로 웹 UI 로그인 (airlfow / airflow).
  • docker exec -it learn-airflow-airflow-scheduler-1 airflow variables get DATA_DIR로 DATA_DIR 환경 변수 확인.

1-3. .airflowignore


gitignore와 유사함.

  • airflow가 무시할 DAG_FOLDER의 디렉토리 혹은 파일 지정.
  • 아직 완성이 안 된 DAG 실행을 방지함.
  • 정규식 패턴으로 지정.

2. ELT


CTAS 부분을 별도의 환경 설정 파일로 분리하면, 비개발자들이 사용할 때 편리하다는 장점이 있음.
ex) mau_summary.py

{
	'table': 'mau_summary',
    'schema': '',
    'main_sql': '',
    'input_check': [{'sql': '', 'count': ''}],
    'output_check': [{'sql': '', 'count': ''}],
}

가장 좋은 방법은 dbt 방법을 이용하는 것.


3. slack 연동


DAG 실행 중 에러가 발생하면 슬랙 워크스페이스에 알리기.

  • on_failure_callback을 통해 태스크에 대한 콜백 함수 지정 가능.
profile
천천히, 그리고 꾸준히.

0개의 댓글