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 실행이 해당 오류 메시지와 함께 이벤트로 기록되고, 확인할 수 있어요.

더 알아보기