DCM Projects 모니터링 및 문제 해결
DCM Projects 모니터링 및 문제 해결
이 주제는 DCM 배포를 모니터링하고 실패하는 DCM 플랜을 문제 해결하는 방법을 설명해요.
출처: Snowflake User Guide - Monitor and troubleshoot DCM Projects
본문
DCM 프로젝트 문제 해결
DCM 프로젝트에 익숙하지 않다면 잘못된 구성이나 다른 흔한 함정에서 오는 오류를 만날 수 있어요. 이 섹션은 그러한 오류와 해결 방법을 설명해요.
오류의 일반적인 원인:
| 오류 범주 | 일반적인 원인 |
|---|---|
| 보조 역할(Secondary roles) | DCM PLAN과 DEPLOY는 세션에 활성화된 보조 역할과 무관하게 항상 기본(primary) 역할의 권한만으로 실행돼요. 수동으로 실행했을 때 성공하는 DDL 문이, 수동 실행이 DCM이 사용하지 않는 보조 역할의 권한에 의존했다면 DCM PLAN에서 실패할 수 있어요. |
| 불충분한 역할 권한 | 정의된 객체 유형을 만들 권한이 부족함. 지금은 다른 역할이 소유한 기존 객체를 변경하거나 삭제할 권한이 부족함. 시스템 DMF를 사용할 권한이 부족함. |
| 부정확한 식별자 | 부분적으로 한정되거나 모호한 식별자. |
| Jinja 템플릿 오류 | 템플릿 구문 오류, 정의되지 않은 변수, 잘못된 데이터 타입. |
권장 문제 해결 단계:
| 단계 | 세부 사항 |
|---|---|
| 보조 역할을 none으로 설정 | DCM은 항상 기본 역할로만 실행돼요. DDL 문이 수동으로 실행할 때는 작동하지만 DCM PLAN·DEPLOY에서 실패한다면, 그 권한이 세션의 보조 역할에서 온 것일 수 있어요. 임시로 보조 역할을 none으로 설정하고 문을 다시 실행해 봐요. |
| (그 외 단계) | 오류 메시지를 검토하고, 권한을 확인하고, 정의 파일의 식별자·템플릿을 검증해요. |
DCM 프로젝트 배포 관찰 및 감사
DCM Projects는 계정 인프라에 대한 모든 변경에 대해 완전한 투명성과 감사 추적을 제공하도록 설계돼요. 이는 인프라 배포 프로세스를 설정하기 위한 몇 가지 소프트웨어 개발 모범 사례를 따를 것을 요구해요.
배포 아티팩트:
실행된 각 배포에 대해 배포 아티팩트의 불변 스냅샷이 DCM 프로젝트 안에 저장되며, 다음 정보를 포함해요.
- 매니페스트 파일(
manifest.yml) sources폴더 안의 모든 객체 정의·매크로 파일(.sql)- PLAN 출력(변경 사항 포함)
이전에 정의된 상태 복구하기:
이전 정의 상태를 복구하려면 그 배포의 보존된 정의와 유효한 템플릿 구성(런타임 변수 재정의 포함)을 검색해요. 현재 계정 상태에 대해 새 전체 PLAN을 실행하고 결과 체인지셋을 검토한 뒤, 그 정의를 다시 배포해요.
드리프트만 확인하기:
DCM Projects 밖에서 이루어진 변경을 격리하려면 마지막 배포의 정의와 유효한 템플릿 구성(런타임 변수 재정의 포함)을 검색해요. 같은 프로젝트와 계정에 대해 그 정의로 전체 PLAN을 실행해요. 드리프트 전용 확인에는 기능 브랜치를 사용하지 마세요.
배포 기록:
DCM_DEPLOYMENT_HISTORY 정보 스키마 테이블 함수는 선택한 DCM 프로젝트의 성공·실패한 배포를 역할 기반 접근과 저지연 방식으로 볼 수 있게 해줘요. 전체 문법, 인자, 출력 컬럼, 예시는 DCM_DEPLOYMENT_HISTORY 레퍼런스를 참고해요.
이벤트 로그:
DCM 프로젝트 객체에 원하는 LOG_LEVEL을 설정하거나 부모 스키마·데이터베이스·계정에 정의된 LOG_LEVEL을 상속할 수 있어요. DCM 프로젝트의 LOG_LEVEL이 설정되어 있으면 실패한 PLAN과 DEPLOY 실행이 해당 오류 메시지와 함께 이벤트로 기록되고, 확인할 수 있어요.