dbt Projects on Snowflake
dbt Projects on Snowflake
dbt Core는 SQL 변환을 정의·테스트·배포하기 위한 오픈소스 프레임워크예요. dbt Projects on Snowflake는 dbt의 전체 수명 주기를 Snowflake 안으로 가져와요. 개발(develop), 배포(deploy), 오케스트레이션(orchestrate), 관찰(observe)을 데이터가 이미 있는 바로 그곳에서 할 수 있어요.
출처: Snowflake 문서
본문
왜 dbt Projects on Snowflake인가
- 관리할 인프라 없음: Snowflake가 관리형 dbt Core 및 dbt Fusion 런타임을 제공해요. 버전을 고정(pin)하거나 계정 수준 기본값을 설정할 수 있어요.
- 하이브리드 개발: dbt Projects on Snowflake는 Snowflake Workspaces와 CoCo Desktop의 Snowflake 관리 모드에서 지원돼요. 설치 없이 실제 프로덕션 전(pre-production) 런타임 환경을 제공해요.
- 거버넌스가 적용된 구성: 개발자별 설정, 프로덕션 환경 변수, 시크릿을 Git 버전 관리되는 단일
env.yml파일에서 관리해요. - CI/CD: 소프트웨어 개발 모범 사례를 데이터 파이프라인에 적용해요. Snowflake CLI를 GitHub Actions, GitLab, Azure DevOps 또는 다른 CI 플랫폼과 함께 사용해 각 풀 리퀘스트를 격리된 환경에서 검증하고, 머지 후 프로덕션에 배포해요.
- Slim CI: 별도 아티팩트 저장소 관리 없이 프로덕션 dbt 프로젝트 객체에서 최신 성공 state를 직접 가져와요. 검증 시간과 웨어하우스 사용을 줄이기 위해 변경된 모델과 그 다운스트림 의존성만 실행해요.
- 네이티브 defer to production: 변경된 모델을 격리된 CI target에서 빌드하면서, 변경되지 않은 업스트림 참조는 기존 프로덕션 릴레이션으로 해결해 불필요한 재빌드를 피해요.
- 네이티브 오케스트레이션: Snowflake 태스크로 실행을 스케줄하거나 Apache Airflow와 통합해요. 외부 오케스트레이터가 필요 없어요.
- 동시 실행: 같은 배포된 dbt 프로젝트 객체를 동시에 실행해 파이프라인의 독립적인 데이터 슬라이스를 최신 상태로 유지해요.
- 내장 관측성(observability): Snowsight에서 실행 기록, 로그, 아티팩트를 검사하고 컬럼 수준 혈통을 볼 수 있어요.
- AI 지원 개발: CoCo가 Snowflake Horizon Catalog와 통합되어 배포된 dbt 프로젝트 객체의 파일을 검사해 프로덕션 실행을 디버깅하고, 카탈로그 메타데이터에서
sources.yml와models.yml문서를 생성하며,schema.yml에서 dbt 데이터 품질 테스트를 뼈대(scaffold)로 만들 수 있어요. - 추가 비용 없음: 실행은 가상 웨어하우스를 사용하고 표준 컴퓨팅 비용이 발생해요. 라이선스나 사용자당 비용은 없어요.
시작하기
- dbt Projects on Snowflake가 처음인가요? dbt Projects on Snowflake 시작하기 튜토리얼을 따라 해보세요.
- 기존 dbt Core 프로젝트를 마이그레이션하나요? dbt Core에서 dbt Projects on Snowflake로 마이그레이션하기 문서를 참조하세요.
- 규모 있게 dbt를 실행하고 있나요? dbt Projects on Snowflake 모범 사례 문서를 참조하세요.
워크플로
- 유효한 dbt 프로젝트로 시작해요. 프로젝트에는
dbt_project.yml,dbt_projects_profiles.yml또는profiles.yml파일, 그리고 모델 파일이 필요하며, 워크스페이스나 연결된 Git 저장소에 저장돼 있어야 해요. 두 파일이 모두 있으면 Snowflake는dbt_projects_profiles.yml을 사용해요. dbt deps를 실행해 의존성을 설치해dbt_packages폴더를 채워요. dbt Projects on Snowflake 의존성 이해하기 문서를 참조하세요.CREATE DBT PROJECT ... FROM <source>또는snow dbt deploy로 dbt 프로젝트 객체를 배포해요. dbt 프로젝트 객체 배포 문서를 참조하세요.EXECUTE DBT PROJECT또는snow dbt execute로 객체를 실행해요.EXECUTE DBT PROJECT문서를 참조하세요.- Snowflake 태스크 또는 Apache Airflow로 스케줄하고 오케스트레이션해요. Snowflake에서 dbt 프로젝트 객체 실행 스케줄링 문서를 참조하세요.
- Snowflake CLI로 CI/CD 통합을 설정해요. dbt Projects on Snowflake에서 CI/CD 통합 설정 튜토리얼로 시작하거나, 풀 리퀘스트별 제로 복사 클론 데이터베이스를 사용하는 Slim CI 워크플로를 위해 dbt Projects on Snowflake용 Slim CI와 PR별 데이터베이스로 CI/CD 설정 튜토리얼을 사용하세요.
- 실행, 로그, 아티팩트를 모니터링해요. dbt Projects on Snowflake 모니터링 문서를 참조하세요.
더 알아보기
| 주제 | 설명 |
|---|---|
| dbt 프로젝트 객체 이해하기 | dbt 프로젝트 객체가 무엇이고 어떻게 작동하는지 여기서 시작해요. |
| Slim CI와 defer to production에 dbt 아티팩트 사용 | 이전 dbt 실행의 아티팩트를 사용해 변경된 모델을 식별·실행하고, 프로덕션으로 defer하며, 실패한 실행에서 복구해요. |
| SQL 환경 변수와 비공개 Git 패키지 사용 | Git 버전 관리되는 env.yml 파일로 환경 변수, 시크릿, 여러 환경을 관리해요. |
| CI/CD 이해하기 | Snowflake CLI와 OIDC로 테스트와 배포를 자동화해요. |
| dbt 프로젝트 객체 배포 | Snowsight, SQL, 또는 Snowflake CLI에서 dbt 프로젝트 객체를 만들고 업데이트해요. |
| 오케스트레이션 이해하기 | dbt 프로젝트 객체 실행을 Snowflake 태스크, Apache Airflow, 또는 다른 외부 오케스트레이터와 통합해요. |
| 실행 스케줄링 | Snowflake 태스크로 dbt 프로젝트 객체를 스케줄에 따라 실행해요. |
| 모니터링과 관찰 | 실행 기록, 로그, 아티팩트, 컬럼 수준 혈통을 검사해요. |
| 비용 이해하기 | dbt 프로젝트 객체를 실행할 때 컴퓨팅 비용이 어떻게 발생하는지 알아봐요. |
| 접근 제어 | dbt 프로젝트 객체를 생성·실행·관리하기 위한 권한이에요. |
| 지원되는 명령과 플래그 | Snowflake에서 지원되는 dbt 명령과 플래그예요. |
| 제한 사항 | 계획할 때 알아둬야 할 요구 사항과 고려 사항이에요. |