|sf-dbt|에서의 CI/CD

dbt 프로젝트 오브젝트는 Snowflake CLI 명령을 사용하여 배포 및 실행을 CI/CD 워크플로에 통합하는 기능을 지원합니다.

이 항목에서는 끌어오기 요청을 열거나 기본에 병합할 때마다 GitHub 작업을 사용하여 |sf-dbt|를 자동으로 테스트하고 배포하는 방법에 대해 설명합니다.

연속 통합(CI)은 각 끌어오기 요청에서 개발 스키마에 대해 dbt 프로젝트를 실행합니다. 즉, 누군가가 코드 리포지토리에서 끌어오기 요청을 열거나 업데이트할 때마다 자동으로 테스트를 실행하고 새 코드를 기반으로 빌드합니다. 이를 통해 병합하기 전에 문제를 조기에 포착할 수 있습니다.

연속 배포(CD)는 커밋이 병합된 후 Snowflake의 dbt 프로젝트 오브젝트를 최신 상태로 유지합니다. 즉, 코드가 분기에 병합될 때마다 업데이트된 코드를 프로덕션에 자동으로 배포합니다. 이를 통해 프로덕션 환경을 안정적이고 재현 가능한 최신 상태로 유지할 수 있습니다.

CI/CD는 오류가 발생하기 쉬운 수동 배포를 방지하고, 변경 사항이 병합되기 전에 유효성이 검사되도록 보장하며, 일관되고 반복 가능한 배포 및 버전 관리를 지원합니다.

dbt 프로젝트에 CI/CD를 사용하는 이유

dbt 프로젝트는 모든 데이터 변환을 코드로 정의하므로 자주 업데이트하면 오류가 쉽게 발생할 수 있습니다. CI는 병합하기 전에 별도의 개발 환경에서 모든 변경 사항을 테스트하여 이러한 문제를 조기에 포착합니다.

변경 사항이 병합된 후, CD는 Snowflake 프로덕션 환경에서 공식 dbt 프로젝트 오브젝트를 자동으로 업데이트합니다. 이는 수동 단계를 제거하고, 위험을 줄이고, 모든 기능의 버전을 관리할 수 있게 해주며, 신뢰할 수 있는 협업 워크플로를 지원합니다.

dbt 프로젝트에 CI/CD를 사용하기 위한 상위 수준의 전제 조건

  • Git 리포지토리에 저장된 dbt 프로젝트(예: GitHub).

  • :doc:`/user-guide/data-engineering/dbt-projects-on-snowflake-access-control`에 설명된 대로 권한이 있는 Snowflake 계정 및 사용자.

  • 다음 오브젝트를 생성 및 편집할 수 있는 권한 또는 사용자를 대신하여 각 오브젝트를 생성할 수 있는 관리자에 대한 액세스 권한.

    • Snowflake 계정, 데이터베이스 및 스키마 값과 CI 및 CD 작업을 정의하는 워크플로 파일(예: .github/workflows/…)을 보관하는 GitHub 리포지토리 환경 변수 및 시크릿.

    • GitHub와 통신할 Snowflake 서비스 계정

  • Snowflake에서 개발 환경(CI의 경우) 및 프로덕션 환경(CD의 경우) 간 분리(예: 각 환경에 대한 별도의 데이터베이스 또는 스키마).

  • CI/CD 실행기(예: GitHub 작업)가 OIDC 또는 PAT와 같은 Snowflake에 연결되도록 허용하는 방법. 자세한 내용은 CI/CD 워크플로에서 작업을 안전하게 구성하기 섹션을 참조하십시오.

  • 코드 리포지토리에서 개발 및 프로덕션 대상(예: 데이터베이스/스키마, 웨어하우스)을 지정하도록 구성된 profiles.yml 파일.

  • Git 공급자에서 Snowflake로의 인바운드 액세스를 허용하는 네트워크 정책.

CI/CD 워크플로 개요

다음 단계에서는 CI/CD를 사용한 일반적인 워크플로를 간략하게 설명합니다. 자세한 자습서는 자습서 |sf-dbt|에서 CI/CD 통합 설정하기 섹션을 참조하세요.

  1. 개발자가 분기에서 dbt 코드(모델, 테스트 등)를 작성하거나 수정합니다.

  2. 개발자가 끌어오기 요청을 엽니다.

  3. CI 시작: dbt 프로젝트 오브젝트의 테스터 인스턴스가 dbt rundbt test 명령을 실행하는 Snowflake 개발 환경에 배포됩니다.

    • 작업이 실패하면 끌어오기 요청이 실패합니다. 개발자는 수정하고 업데이트한 후 다시 실행해야 합니다.

    • 모든 작업이 통과하면 끌어오기 요청을 병합할 수 있습니다.

  4. 끌어오기 요청이 기본에 병합됩니다.

  5. CD 시작: Snowflake의 프로덕션 dbt 프로젝트 오브젝트가 최신 코드를 반영하도록 업데이트되었습니다.

  6. 선택적으로, 자동화된 일정(예: Snowflake 작업을 통해)을 배포할 수 있으므로 데이터 파이프라인이 수동 개입 없이 일정에 따라 실행됩니다.