#dbt #airflow


tl;dr

overview

  1. dev branch push 발생
    • stash repository trigger 로 build plan 을 실행한다.
      • dev 브랜치를 기반으로 container image 를 빌드하고 푸시한다.
        • tag: dbt-run-dev-{build_number}, latest
      • ligthdash sync DAG 을 트리거 한다. (rest API)
    • build plan 을 성공하면 Atlasian deployment 를 실행한다.
      • build plan 으로 push 한 image 를 이용하여 helm chart 를 업그레이드 한다.
        • helm upgrade: dbt build 를 수행하는 단계이다.
  2. main branch push 발생 시
    • dev branch 코드 변경 시 발생하는 절차는 동일하다. 단, image 를 업로드하고 바라보는 EKS 는 DEV/PRD 로 나누었기 때문에 PRD 에 해당하는 부분들만 변경한다.
  3. scheduled: 매일 오전 8시 main branch 기준
    • build plan 을 실행한다.
      • dbt full build 로 전사 지표에 사용하는 모델들을 업데이트 한다.
  4. dev/main 작업 시 모든 모델들은 full build 로 빌드된다.
    • 변경한 모델만 빌드하지 않고 모든 모델들을 빌드한다.

problem

to-be

  1. dev branch push 발생
    • 아래와 같이 build plan 을 실행한다.
      • dev 브랜치 기반 container image 를 빌드하고 ECR repository 로 push 한다.
        • tag: latest
      • ligthdash sync DAG 을 트리거 한다.
      • dbt build 를 실행하는 DAG 을 트리거 한다. 단, 변경된 모델만 build 하는 slim build 로 변경했다.
  2. main branch push 발생
    • 아래와 같이 build plan 을 실행한다.
      • main 브랜치 기반 container image 를 빌드하고 ECR repsitory 로 push 한다.
        • tag: latest
      • ligthdash sync DAG 을 트리거 한다.
      • dbt build 를 실행하는 DAG 을 트리거 한다.
        • dev 브랜치와 동일하게 slim build 로 실행한다.
  3. scheduled: 매일 오전 8시 main branch 기준
    • build plan 을 실행한다.
      • dbt full build 로 전사 지표에 사용하는 모델들을 업데이트 한다.
  4. 변경 사항만 실행하는 slim build 를 이용하고 지표 활용에 필요한 오전 8시 스케쥴 빌드는 full build 를 이용한다.

improvements

additional improvements

reference