Snowflake DCM Projects¶
Snowflake DCM Projects (데이터베이스 변경 관리 프로젝트)를 사용하면 Snowflake 오브젝트를 코드로 관리하는 선언적 접근 방식을 사용할 수 있습니다. 정의 파일에서 데이터베이스, 스키마, 테이블 및 기타 오브젝트의 원하는 대상 상태를 정의하면 Snowflake가 해당 상태에 도달하는 데 필요한 변경 사항을 결정하고 적용합니다. 이를 통해 코드로서의 인프라 도구에서 흔히 볼 수 있는 계획 후 배포 워크플로를 사용하여 개발, 스테이징, 프로덕션과 같은 환경 전반에서 버전이 제어되는 반복 가능한 배포를 수행할 수 있습니다.
정의에 반복적인 패턴이 포함된 경우 사전, 루프, 조건, 매크로 등 Jinja 템플릿을 사용하여 코드를 매개 변수화할 수 있습니다.
DCM project 관리를 위한 상위 수준 워크플로는 다음과 같습니다.
Snowflake 작업 공간, 원격 Git 리포지토리 또는 로컬 디렉터리에 DCM project 파일(
manifest.yml및 SQL 정의 파일)을 생성합니다.각 대상 환경에 대한 새 DCM project 를 생성합니다.
DCM project 파일에서 Snowflake 오브젝트를 정의합니다.
DEFINE 키워드를 사용하여 기존 SQL 배포 스크립트를 변환합니다(지원되는 오브젝트 유형의 경우).
(선택 사항) 공유 또는 대체 템플릿 변수 및 매크로를 추가합니다.
DCM PLAN 명령을 실행하여 배포를 모방하고 변경 사항을 미리 봅니다.
프로젝트 버전을 배포하여 Snowflake에 변경 사항을 적용합니다.
프로젝트 실행을 모니터링합니다.
DCM 프로젝트에서 반복합니다. 프로젝트 파일을 업데이트하고, 계획 출력을 검토하고, 필요에 따라 새 버전을 배포합니다.
이 수명 주기는 제어되고 버전이 지정되고 감사 가능한 방식으로 데이터베이스 변경 사항을 빌드, 테스트, 배포 및 모니터링하는 데 도움이 됩니다.
다음 다이어그램은 위에서 설명한 DCM Projects 수명 주기를 보여줍니다.
주요 용어¶
다음은 DCM Projects 로 작업할 때 알아야 할 주요 용어입니다.
- 선언적 정의
DCM Projects 에서 오브젝트의 현재 상태와 관계없이 존재해야 하는 테이블, 스키마 또는 역할과 같이 Snowflake 환경의 원하는 상태를 정의할 수 있습니다. 이를 생성하거나 수정하기 위해 각 단계를 지정하지 않습니다. 사용자가 무엇을 원하는지 설명하면 Snowflake는 이를 실현할 *방법*을 찾아냅니다.
구체적으로, DCM Projects 는 템플릿 기능이 있는 DEFINE 문을 활용합니다. 이를 통해 프로젝트 파일을 재사용하고 다양한 환경에 맞게 사용자 지정할 수 있습니다. 프로젝트 내에서 DEFINE 문의 순서와 위치는 결과에 영향을 주지 않습니다. Snowflake는 변경 사항을 적용하기 전에 모든 문을 수집하고 정렬하므로 시퀀스 또는 종속성을 수동으로 처리할 필요가 없습니다.
- DCM 프로젝트 파일
DCM project 는 SQL 및 YAML 소스 파일 세트를 기반으로 하며, 일반적으로 Git 리포지토리 또는 로컬 작업 공간에서 관리됩니다. 프로젝트 정의 파일(SQL 파일)에서 DCM project 에 대한 Snowflake 오브젝트, 해당 특성, 관계 및 제약 조건을 정의합니다. 개발 작업 공간에서 프로젝트 파일을 업데이트합니다. 변경 사항은 DCM project 오브젝트를 통해 배포한 후에만 Snowflake에 적용됩니다.
- DCM 프로젝트 오브젝트
DCM project 는 DCM project 파일에 정의된 오브젝트를 배포하고 관리하는 데 사용하는 Snowflake의 스키마 수준 오브젝트입니다. 각 대상 환경에 대한 DCM project 오브젝트가 필요합니다.
DCM project 오브젝트는 DCM 명령을 사용하여 실행된 모든 배포의 변경 불가능한 아티팩트와 정의 파일을 저장하는 데 사용됩니다.
DCM project 는 스키마 수준 오브젝트이므로 이를 사용하여 다른 데이터베이스에서 오브젝트를 생성하고 관리할 수 있습니다. DCM project 를 실행하여 변경 사항을 배포하기 전에 미리 볼 수 있도록 워크플로에 대한 변경 사항을 테스트할 수도 있습니다.
요구 사항¶
Snowsight, Snowflake CLI, SQL 또는 Cortex CLI 를 사용하여 DCM Projects 를 관리합니다.
DCM project 오브젝트를 생성할 수 있는 데이터베이스와 스키마가 필요합니다.
DCM project 정의를 로컬 또는 Snowflake 작업 공간에 저장합니다.
협업, 버전 관리, 변경 사항 동기화를 위해 Git을 사용합니다.
Snowflake CLI 를 사용하여 로컬 정의를 실행하려는 경우, 대상 DCM project 오브젝트의 스키마에 임시 스테이지를 생성하기 위한 권한도 필요합니다.
고려 사항 및 제한 사항¶
프로젝트 크기
현재, DCM Projects 는 최대 1,000개의 소스 파일과 10,000개의 렌더링된 오브젝트 정의 또는 권한 부여를 지원합니다.
1,000개의 파일 또는 10,000개의 정의를 초과하면 성능이 저하되고 경우에 따라 실행 실패가 발생할 수 있습니다.
정의를 더 적은 수의 파일로 통합하면 일반적으로 PLAN 및 DEPLOY 명령의 실행 시간이 더 빨라집니다.
성능과 확장성이 지속적으로 개선됨에 따라 공개 미리 보기 기간 동안 이 한도가 증가됩니다.
변경 세트
PLAN 및 DEPLOY 명령은 모두
plan_result.json파일 내부에 모든 DDL 변경 사항을 나열합니다. 변경 세트에는 수행되거나 계획된 작업(CREATE, ALTER, DROP) 및 영향을 받는 개별 특성(예: 설명, 일정, 시간 제한)이 나열됩니다.중요
DCM Projects 의 미리 보기 단계에서, 변경 세트가 각 오브젝트의 속성에 대한 모든 세부적인 변경 사항을 캡처한다고 보장할 수는 없습니다.
템플릿
정의 파일은 Jinja2 템플릿이므로 Jinja2 템플릿에 대한 모든 제한 사항이 적용됩니다.
DCM 템플릿 변수는 자격 증명과 같은 민감한 정보를 위한 것이 아닙니다. 렌더링된 SQL 정의는 환경 변수에 의해 삽입된 값을 수정하지 않습니다.
|dcm|의 주요 사용 사례¶
이 섹션에서는 DCM Projects 의 주요 사용 사례 및 데이터 비즈니스가 대규모로 직면하는 문제를 해결하는 데 어떻게 도움이 되는지 설명합니다. 이러한 사용 사례는 팀의 책임에 따라 두 가지 일반적인 카테고리로 나뉩니다.
인프라 관리를 위한 DCM Projects¶
DCM Projects 은 플랫폼 팀에서 자주 접하게 되는 다음과 같은 문제를 해결하는 데 도움이 됩니다.
플랫폼 팀에서 여러 사업부를 위해 표준화된 인프라를 배포하고 유지 관리하려는 경우 DCM Projects 를 사용하여 코드에서 표준 오브젝트 세트를 SQL 파일로 정의할 수 있습니다. Jinja를 사용하면 이 템플릿을 예를 들어 팀 이름별로 매개 변수화하고 여러 번 배포할 수 있습니다.
예: 각 사업부에 대한 전용 DCM project 생성¶
한 가지 접근 방식은 다음 definitions.sql 예제와 같이 각 사업부에 대해 전용 DCM project 를 생성하고 모든 프로젝트가 동일한 매개 변수화된 정의 파일을 참조하도록 하는 것입니다.
다음 명령으로 DCM project 를 실행합니다.
예: 여러 사업부에 대해 단일 DCM project 생성¶
이 접근 방식에서는 다음 definitions.sql 예제와 같이 Jinja 템플릿에서 루프를 사용하여 여러 사업부의 인프라를 하나의 DCM project 에서 관리합니다.
다음 명령으로 DCM project 를 실행합니다.
이를 통해 플랫폼 팀과 관리자는 다음과 같은 변경 작업을 쉽게 수행할 수 있습니다.
목록에 새 팀을 추가하여 해당 팀의 기존 인프라 템플릿을 배포합니다.
목록에서 팀을 제거하여 해당 팀의 인프라를 삭제합니다.
모든 팀에 대해 새로운 READ_ONLY 역할을 추가합니다.
모든 팀이나 특정 팀에 대한 권한 부여 또는 웨어하우스 크기와 같은 특정 구성을 변경합니다.
PLAN을 실행하여 현재 상태를 예상 표준과 비교하고 다시 배포하여 표준을 복원합니다.
데이터 파이프라인을 위한 DCM Projects¶
DCM Projects 는 기능 팀에서 자주 접하게 되는 다음과 같은 문제를 해결하는 데 도움이 됩니다.
데이터 파이프라인을 쉽게 작성하고 관리하려는 사업부에서는 DCM Projects 를 사용하여 비즈니스 논리를 정의, 테스트, 배포 및 반복할 수 있습니다.
다음을 할 수 있습니다.
테이블, 동적 테이블, 뷰, 웨어하우스, 역할, 권한 부여, 데이터 메트릭 함수, 기대치 등 Snowflake 오브젝트 유형을 하나의 프로젝트에서 모두 관리할 수 있습니다.
파이프라인에 대한 증분 변경을 테스트하고 배포합니다. 구성을 변경하고, 변환 논리를 구현하고, 열과 뷰를 추가할 수 있습니다.
오브젝트를 배포하기 전에 데이터 샘플을 미리 보고 변환 논리의 유효성을 검사합니다.
동일한 파이프라인 정의를 여러 환경에 배포합니다.
프로덕션에 변경 사항을 배포하기 전에 프로덕션 전 환경에서 데이터 품질 기대치를 테스트합니다.
DCM Projects 는 데이터 파이프라인을 작성하고 관리하기 위한 추가 기능을 제공합니다. 자세한 내용은 데이터 파이프라인을 위한 DCM Projects 섹션을 참조하십시오.