DCM Projects 의 엔터프라이즈 사용 사례¶
이 항목에서는 여러 프로젝트 관리, 여러 환경 작업, 프로젝트 공동 작업과 같은 엔터프라이즈 환경에서 DCM Projects 를 사용하는 방법에 대해 다룹니다.
여러 DCM 프로젝트를 사용해야 하는 경우¶
DCM project 를 여러 프로젝트로 분할할지 여부 및 분할 방법을 결정할 때 소유권과 템플릿을 고려합니다.
소유권¶
각 프로젝트에는 정의된 모든 오브젝트를 배포할 수 있는 하나의 소유자 역할이 있습니다. 권한 부여를 사용하면 프로젝트 내의 개별 오브젝트에 대한 세분화된 액세스 관리를 수행할 수 있습니다. 그러나 서로 다른 사용자 그룹이 프로젝트에 변경 사항을 배포해야 하는 경우에는 일반적으로 그에 따라 DCM project 를 분할하는 것이 합리적입니다.
다음은 예시 시나리오입니다.
플랫폼 관리자는 데이터베이스와 웨어하우스를 배포하고, 팀 관리자 역할을 생성하고, 해당 데이터베이스 내부에 정의된 오브젝트 유형 세트에 대해 팀 관리자에게 CREATE 권한을 부여하고, 정의된 계정 수준 통합 세트에 액세스합니다.
이제 팀 관리자는 해당 데이터베이스 내에서 스키마와 동적 테이블을 구성하고, 새로 고침 빈도를 미세 조정하고, 개별 팀 구성원에게 보다 세분화된 읽기 액세스 권한을 부여하는 방법을 결정할 수 있습니다.
다음은 솔루션입니다.
플랫폼 관리자는 팀을 위한 상위 수준 인프라를 배포하고 팀 관리자에게 데이터베이스 내에 DCM project 프로젝트를 생성할 수 있는 권한을 부여합니다.
이제 팀 관리자는 팀 데이터베이스 내에 하나 이상의 프로젝트를 생성하여 테이블을 관리하고 팀 구성원에게 권한을 부여하여 DCM Projects 를 활용할 수도 있습니다.
템플릿 변수¶
DCM project 가 대부분 유사하고, 유사하게 유지해야 하는 오브젝트의 범위를 정의하는 경우, 일반적으로 매개 변수화된 템플릿으로 한 번 정의하는 것이 더 편리합니다.
다음은 예시 시나리오입니다.
플랫폼 팀은 조직의 각 리전 팀을 위한 데이터베이스를 배포합니다.
시간이 지남에 따라 새로운 리전이 추가될 예정입니다.
모든 리전에는 스키마, 랜딩 테이블, 역할 및 웨어하우스에 대해 대부분 동일한 설정이 필요합니다.
이 데이터베이스 템플릿의 변경 사항은 모든 팀에 적용되어야 합니다(예: 읽기 전용 역할 추가).
다음은 솔루션입니다.
매니페스트 프로필에 나열된 각 리전 팀에 대해 루프에서 단일 정의 세트를 실행할 수 있습니다.
이 템플릿의 더 많은 요소가 분기되기 시작하고 템플릿 조건의 수가 증가하면 개별 오브젝트 정의가 있는 별도의 DCM 프로젝트를 읽고 유지 관리하기가 더 쉬워질 수 있습니다.
여러 환경에서 DCM Projects 사용¶
다음 다이어그램은 여러 환경에 DCM project 를 배포하기 위한 일반적인 워크플로를 보여줍니다.
별도의 계정과 별도의 데이터베이스¶
Snowflake는 일반적으로 각 환경을 별도의 Snowflake 계정으로 설정할 것을 권장합니다. 이를 통해 실험적 개발과 프로덕션 인프라를 완전히 분리하고 프로덕션 데이터에 대한 개발자 액세스를 제한할 수 있습니다.
그러나 신중한 액세스 관리를 통해 하나의 Snowflake 계정에서 여러 환경을 성공적으로 관리할 수 있습니다. 이는 데이터베이스가 명확하게 분리되어 있을 때 더 쉽고 계정 수준 오브젝트와 통합이 포함될 때 더 어려워질 수 있습니다.
단일 계정 설정의 이점은 프로덕션에 변경 사항을 배포하기 전에 변경 사항을 테스트하기 위해 프로덕션 인프라와 데이터를 쉽게 복제할 수 있다는 점입니다. 그러나 예를 들어 조직 내부 데이터 공유를 통해 프로덕션 데이터와 인프라의 일부를 다른 계정으로 복사하는 것은 비용이 더 많이 들 수 있습니다.
DCM project 템플릿에 미치는 영향¶
각 환경에 대한 고유한 오브젝트 이름은 단일 계정 설정의 요구 사항입니다(예: EMEA_DB 및 EMEA_ADMIN``을 ``EMEA_DB_DEV 및 EMEA_ADMIN_DEV``와 별도로 유지하기 위해). Snowflake는 다중 계정 설정에도 이 방법을 권장합니다. 템플릿화된 이름을 사용하면 ``EMEA_DB_DEV_JOHN 및 ``EMEA_DB_DEV_MARY``와 같은 엔터티의 여러 인스턴스가 독립적인 개발을 위해 공존하고 샌드박스 환경을 신속하게 생성 및 파괴하여 다양한 솔루션을 테스트할 수 있습니다.
이는 데이터베이스, 역할, 웨어하우스 등 모든 계정 수준 오브젝트에 적용됩니다. 그런 다음 이러한 템플릿화된 이름을 중첩된 오브젝트의 모든 정규화된 이름에 적용해야 합니다.