애플리케이션 버전 관리, 패치 적용 및 업그레이드하기

이 항목에서는 Native Apps Framework를 사용하여 만든 애플리케이션에 버전과 패치를 추가하는 방법을 설명합니다. 이 항목에서는 버전이 지정된 스키마를 사용하여 애플리케이션 파일과 애플리케이션 설정 스크립트의 원활한 업그레이드를 보장하는 방법도 설명합니다.

버전, 패치 및 업그레이드 정보

Native Framework는 애플리케이션을 업데이트하거나 문제를 해결할 수 있는 기능을 제공합니다. 또한 컨슈머 계정에 애플리케이션을 설치한 후 원활하게 업그레이드하는 방법도 제공합니다.

버전 및 패치 정보

일반적으로, 새 버전을 사용하여 애플리케이션의 새로운 기능이나 동작 변경 사항을 선보입니다. 한 주 버전에서 다른 주 버전으로의 업그레이드 및 롤백 프로세스를 수행하면 이전 버전에서 어떤 코드도 실행할 수 없습니다. 이는 곧 설정 스크립트가 바로 직전의 주 버전과만 호환되어야 한다는 뜻입니다.

패치는 앱의 정식 버전으로 간주됩니다. 즉, 주 버전과 정확히 동일한 방식으로 설정 스크립트로 패치가 정의됩니다. 하지만 정식 버전 업그레이드와 달리, 공급자가 설치할 수 있는 순서나 코드를 동시에 실행할 수 있는 패치 수에 대한 제한은 없습니다.

특정 버전에 여러 패치를 추가할 수 있습니다. 버전과 달리, 현재 설치된 버전에 패치를 설치하는 데는 아무런 제한도 없습니다. 즉, 빠르게 연속으로 패치를 설치할 때 코드가 여러 다른 패치에서 동시에 실행될 수 있습니다. 이는 또한 새 버전이 이전 버전에서 실행 중일 가능성이 있는 모든 패치와 호환되어야 한다는 의미이기도 합니다.

버전 및 패치 만들기

애플리케이션의 버전 정보는 애플리케이션 패키지에 지정됩니다.

애플리케이션 패키지에 버전 추가하기

다음 예에서는 ALTER APPLICATION PACKAGE 명령을 사용하여 애플리케이션 패키지에 버전을 추가하는 방법을 보여줍니다.

ALTER APPLICATION PACKAGE MyAppPackage
  ADD VERSION v1_0
  USING '@dev_stage/v1_0'
  LABEL = 'MyApp Version 1.0';
Copy

이 예에서 v1_0 은 애플리케이션을 설치할 때 컨슈머에게 표시되지 않는 버전의 식별자입니다. 컨슈머에게는 LABEL 절에 정의된 대로 버전 정보가 표시됩니다.

한 애플리케이션에 대해 동시에 존재할 수 있는 버전 수는 2개뿐입니다. 예를 들어 애플리케이션에서 v1_0 및 v1_1을 정의한 경우 v1_2를 만들려면 v1_0을 삭제해야 합니다. 하지만 패치는 단일 버전에 대해 여러 개 있을 수 있습니다.

manifest.yml 파일에서 버전 이름과 레이블을 정의하거나 ALTER APPLICATION PACKAGE 명령으로 이들을 직접 지정할 수 있습니다. manifest.yml 파일에서 버전 이름과 레이블을 정의할 뿐 아니라 SQL 명령으로도 정의하는 경우 SQL 명령에 지정된 값이 manifest.yml 파일에 지정된 값보다 우선합니다.

애플리케이션 패키지에 패치 추가하기

앱의 버전을 만드는 것 외에 특정 버전에 대한 패치를 만들 수도 있습니다. 버전과 마찬가지로, 앱 패치에도 자체 애플리케이션 파일이 있습니다.

애플리케이션 패키지에 대한 새 패치를 만들려면 다음 예와 같이 ALTER APPLICATION PACKAGE 명령의 ADD PATCH FOR VERSION 절을 사용하십시오.

ALTER APPLICATION PACKAGE MyAppPackage ADD PATCH
 FOR VERSION V1_0
 USING '@dev_stage/v1_0_p1;
Copy

애플리케이션 패키지에 첫 번째 버전을 추가하면 이 버전에 패치 0이 할당됩니다. 패치를 더 추가함에 따라, Snowflake는 패치 번호를 1씩 증가시킵니다.

참고

패치 번호를 직접 지정할 수는 없습니다. Snowflake가 패치 번호를 내부적으로 관리합니다.

애플리케이션 패키지의 버전 및 패치 보기

공급자로서 애플리케이션 패키지에서 SHOW VERSIONS 명령을 실행하여 애플리케이션에 대해 정의된 버전과 패치를 볼 수 있습니다.

다음 명령으로 HelloSnowflakePackage 라는 애플리케이션 패키지에 대해 정의된 버전과 패치를 표시합니다.

SHOW VERSIONS IN APPLICATION PACKAGE HelloSnowflakePackage;
Copy

애플리케이션 패키지에서 버전 제거하기

애플리케이션 패키지에서 버전을 제거하려면 다음 예와 같이 ALTER APPLICATION PACKAGE 명령의 DROP VERSION 절을 사용하십시오.

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  DROP VERSION v1_0;
Copy

참고

설치된 애플리케이션에서 현재 사용 중인 버전을 삭제하면 설치된 애플리케이션이 업그레이드될 때까지 해당 버전을 사용할 수 없게 될 수 있습니다.

이 명령은 모든 애플리케이션이 새 버전으로 업그레이드되어야 실행이 완료됩니다. 컨슈머 계정에서 현재 사용 중인 버전을 삭제할 때는 주의하십시오.

애플리케이션 패키지에 대한 릴리스 지시문 설정하기

애플리케이션 패키지에 버전을 추가하면 애플리케이션 패키지에 대한 릴리스 지시문을 지정할 수 있습니다. 릴리스 지시문에 따라 애플리케이션을 설치할 때 컨슈머가 사용할 수 있는 애플리케이션의 버전이 결정됩니다.

릴리스 지시문 정보

애플리케이션 패키지에 대한 기본 릴리스 지시문을 설정 할 수 있습니다. 기본 릴리스 지시문은 애플리케이션을 설치할 때 모든 컨슈머에게 적용 가능한 버전을 지정합니다. 예를 들어 애플리케이션의 V1 및 V2를 만든 경우 기본 릴리스 지시문을 V2로 설정하면 컨슈머가 애플리케이션을 설치할 때 v2 버전이 설치됩니다.

애플리케이션 패키지에 사용자 지정 릴리스 지시문을 추가 할 수도 있습니다. 사용자 지정 릴리스 지시문을 통해 특정 Snowflake 계정이 설치할 수 있는 애플리케이션의 버전을 지정할 수 있습니다.

예를 들어 애플리케이션의 V2 및 V3를 만드는 경우 V2를 기본 릴리스로 할당하고 특정 계정과 V3를 공유하도록 하는 사용자 지정 릴리스 지시문을 생성할 수 있습니다. 사용자 지정 릴리스 지시문의 한 가지 일반적인 사용 사례는 테스트에 사용하는 컨슈머 계정과 애플리케이션을 공유하는 것입니다.

참고

기본 및 사용자 지정 릴리스 지시문을 모두 지정하면 사용자 지정 릴리스 지시문이 항상 우선합니다. 위의 예에서 사용자 지정 릴리스 지시문에 지정된 컨슈머 계정에서는 애플리케이션의 v3만 설치할 수 있습니다.

다음을 수행할 수 있도록 애플리케이션 패키지에 대한 릴리스 지시문을 정의해야 합니다.

  • 컨슈머 계정에 애플리케이션을 설치합니다.

  • 애플리케이션 패키지에 대한 비공개 목록을 만듭니다.

릴리스 지시문 설정에 필요한 권한

릴리스 지시문을 지정하려면 애플리케이션 패키지의 MANAGE RELEASES 권한 또는 소유권이 필요합니다.

GRANT MANAGE RELEASES ON APPLICATION PACKAGE HelloSnowflakePackage
  TO ROLE release_mgr;
Copy

애플리케이션 패키지에 대한 기본 릴리스 지시문 설정하기

다음 예와 같이 SET DEFAULT RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 사용하여 기본 릴리스 지시문을 설정합니다.

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  SET DEFAULT RELEASE DIRECTIVE
  VERSION = v1_0
  PATCH = 2;
Copy

애플리케이션 패키지에 대한 기본 릴리스 지시문을 업데이트하려면 VERSION 및 PATCH에 새 값을 지정하여 SET DEFAULT RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 다시 실행하십시오.

애플리케이션 패키지에 사용자 지정 릴리스 지시문 추가하기

사용자 지정 릴리스 지시문을 추가하려면 SET RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 사용하십시오. ACCOUNTS 절을 사용하여 이 릴리스 지시문이 적용되는 계정을 지정합니다. 예:

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  SET RELEASE DIRECTIVE HelloSnowflakePackage_Custom
  ACCOUNTS = (CONSUMER_ORG.CONSUMER_ACCOUNT)
  VERSION = v1_0
  PATCH = 0;
Copy

애플리케이션 패키지에 사용자 지정 릴리스 지시문을 추가하면 MODIFY RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 를 실행하고 VERSION 및 PATCH 에 대해 업데이트된 값을 지정하여 릴리스 지시문의 버전과 패치를 업데이트 할 수 있습니다.

하지만 릴리스 지시문과 연결된 계정은 수정할 수 없습니다. 릴리스 지시문과 연결된 조직과 계정을 변경하려면 다음을 수행하십시오.

  1. UNSET RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 실행하여 애플리케이션 패키지에서 릴리스 지시문을 제거합니다.

  2. SET RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 실행하고 ACCOUNTS 절로 계정 목록을 지정하여 릴리스 지시문을 애플리케이션 패키지에 다시 추가합니다.

애플리케이션 패키지에서 사용자 지정 릴리스 지시문 업데이트하기

사용자 지정 릴리스 지시문에 대해 버전 또는 패치를 업데이트하려면 다음 예와 같이 MODIFY RELEASE DIRECTIVE 명령과 함께 ALTER APPLICATION PACKAGE 명령을 사용하십시오.

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  MODIFY RELEASE DIRECTIVE HelloSnowflakePackage_Custom
  VERSION = v1_0
  PATCH = 0;
Copy

애플리케이션 패키지에서 사용자 지정 릴리스 지시문 제거하기

애플리케이션 패키지에서 사용자 지정 릴리스 지시문을 제거하려면 다음 예와 같이 UNSET RELEASE DIRECTIVE와 함께 ALTER APPLICATION PACKAGE 명령을 사용하십시오.

ALTER APPLICATION PACKAGE HelloSnowflakePackage
  UNSET RELEASE DIRECTIVE HelloSnowflakePackage_Custom;
Copy

버전 및 패치 릴리스하기

개발 모드의 애플리케이션 패키지에서 애플리케이션을 설치할 때 버전과 패치가 명시적으로 지정됩니다. 단, 다음과 같이 애플리케이션이 정상적으로 설치된 경우

CREATE APPLICATION HelloSnowflake
  FROM APPLICATION PACKAGE HelloSnowflakePackage
Copy

릴리스 지시문에 따라 이 명령을 실행할 때 설치되는 버전이 결정됩니다.