앱 버전 및 업그레이드 개요

이 항목에서는 버전, 패치 및 업그레이드가 Snowflake Native App Framework 에서 작동하는 방식에 대한 정보를 제공합니다.

앱 버전 및 패치 정보

공급자는 Snowflake Native App Framework 에서 앱의 버전과 패치를 만들 수 있습니다. 버전과 패치를 통해 공급자는 컨슈머에게 새로운 기능과 업데이트를 릴리스할 수 있습니다.

버전

일반적으로 Snowflake Native App 에 대한 주요 업데이트가 포함되어 있습니다. 버전에는 일반적으로 앱의 새로운 기능과 변경된 기능이 도입됩니다.

패치

일반적으로 Snowflake Native App 에 대해 더 작은 업데이트가 포함됩니다. 버전과 달리 패치는 보안 수정과 같은 소규모 업데이트만 포함해야 합니다.

앱의 버전과 패치는 애플리케이션 패키지에 지정되어 있습니다.

조심

앱은 한 번에 두 개의 활성 버전만 가질 수 있습니다. 앱의 각 버전에는 최대 130개의 패치가 포함될 수 있습니다.

현재 두 가지 버전이 정의되어 있는 애플리케이션 패키지에 새 버전을 추가하려면 공급자는 기존 버전 중 하나를 제거해야 합니다. 버전을 제거하려면 공급자가 제거해야 합니다.

  1. 모든 컨슈머가 제거할 버전으로 업그레이드했는지 확인합니다.

  2. 애플리케이션 패키지에서 버전을 제거합니다.

  3. 새 버전을 만듭니다.

  4. 앱을 업그레이드합니다.

조심

컨슈머 계정에서 앱이 업그레이드되더라도 이전 버전의 앱이 여전히 실행 중인 코드가 있을 수 있습니다. 공급자는 이전 버전의 실행 중인 코드가 모두 완료될 때까지 애플리케이션 패키지에서 이전 버전의 앱을 제거할 수 없습니다. 이는 모든 컨슈머 계정에서 설치된 모든 버전의 앱에 적용됩니다. 단일 업그레이드가 실패한 경우 공급자는 업그레이드 실패 원인을 수정한 후에야 해당 버전을 제거할 수 있습니다.

애플리케이션 패키지에는 한 번에 두 개의 활성 버전만 포함될 수 있지만, 한 버전에 여러 패치가 있을 수 있습니다. Snowflake Native App Framework 는 패치 삭제 기능을 지원하지 않습니다. 공급자가 애플리케이션 패키지에 새 버전을 추가하면 기본적으로 새 버전에 패치 0이 자동으로 할당됩니다. 이 설정은 변경할 수 없습니다.

공급자가 버전에 새 패치를 추가할 때 패치의 식별자를 수동으로 지정할 수 있습니다. 패치 번호를 따로 입력하지 않으면 패치 버전이 자동으로 1씩 증가합니다.

참고

각 버전과 패치에는 고유한 설정 스크립트 및 애플리케이션 파일 버전이 있어야 합니다.

버전 및 패치 업그레이드하기

공급자가 새 버전의 앱을 게시할 때 Snowflake Native App Framework 는 이전 버전의 앱만 활성화되도록 보장합니다. 예를 들어 공급자가 앱의 버전 v1 및 v2를 게시한 경우 Snowflake Native App Framework 는 현재 v2만 컨슈머 계정에 설치되어 있는지 확인한 후 v3으로 업그레이드합니다. 이를 위해서는 버전 v1을 사용하여 설치된 모든 앱을 버전 v2로 마이그레이션해야 합니다.

이를 통해 앱의 설정 스크립트가 v2와 v3 간의 차이점만 처리하면 되도록 합니다. 설정 스크립트는 최신 버전의 앱에서만 이전 버전과 호환됩니다. 공급자가 새 테이블을 만들거나 테이블에 열을 추가하는 등 앱의 상태를 변경하는 경우 공급자는 두 버전 간에 호환성 문제가 없는지 확인하기만 하면 됩니다.

반면, 공급자가 앱 버전에 대해 새 패치를 생성하면 Snowflake Native App Framework 에서는 실행 중인 활성 패치 수에 아무런 제한도 적용되지 않습니다. 공급자는 여러 패치에서 호환되지 않도록 패치에서 앱의 상태를 변경하지 않아야 합니다.

상태 저장 및 상태 비저장 오브젝트

새 버전의 앱을 개발할 때 공급자는 수정하는 구성 요소의 상태를 한 버전에서 다른 버전으로 유지하거나 패치해야 하는지 고려해야 합니다. 일반적인 앱에는 두 가지 유형의 구성 요소가 포함됩니다.

상태 비저장 오브젝트

앱의 새 버전이나 패치가 적용될 때마다 상태 비저장 오브젝트가 다시 생성됩니다. 상태 비저장 오브젝트는 해당 버전의 수명 기간 동안만 가용성을 유지하면 되며 필요에 따라 다시 생성할 수 있습니다. 상태 비저장 오브젝트는 일반적으로 저장 프로시저, 사용자 정의 함수, Streamlit 앱 및 이와 유사한 내용을 포함한 앱의 코드입니다.

상태 비저장 오브젝트는 버전 스키마 에서 생성해야 합니다.

상태 저장 오브젝트

상태 저장 오브젝트는 앱의 한 버전 또는 패치에서 다른 버전으로 공유됩니다. 상태 저장 구성 요소는 여러 버전의 앱에서 수명을 가지도록 설계되었습니다. 예를 들어 앱이 테이블을 사용하여 컨슈머 계정 내에 구성 정보를 저장하는 경우 업그레이드하는 동안 이 테이블의 내용을 보존해야 합니다.

상태 저장 오브젝트는 일반 스키마를 사용하여 만들어야 합니다.

버전 스키마 정보

새 버전의 앱에 대한 설정 스크립트를 작성할 때 공급자는 상태 비저장 및 상태 저장 구성 요소를 설명해야 합니다. 상태 비저장 오브젝트를 처리하기 위해 Snowflake Native App Framework 에서는 버전 스키마라고 하는 특수한 유형의 데이터베이스 스키마를 제공합니다. 버전 스키마는 일반 데이터베이스 스키마와 유사하지만 여러 앱 버전에서 생성된 오브젝트의 여러 버전을 처리하는 기능을 추가했습니다.

자세한 내용은 버전 스키마를 사용하여 여러 버전에 걸쳐 앱 오브젝트 관리하기 섹션을 참조하십시오.

앱 업그레이드 정보

공급자는 Snowflake Native App Framework 에서 앱을 새 버전 또는 패치로 업그레이드할 수 있습니다. 앱의 새 버전 또는 패치 개발을 위한 전체 워크플로에서 업그레이드가 어떻게 적용되는지 확인하려면 앱 업데이트를 위한 워크플로 섹션을 참조하십시오.

공급자는 애플리케이션 패키지에 릴리스 지시문을 설정하여 새 버전 또는 패치로 앱 업그레이드를 시작할 수 있습니다. 릴리스 지시문이 수정되면 Snowflake는 현재 버전의 앱에 설치된 모든 인스턴스를 릴리스 지시문에 지정된 버전으로 자동 업그레이드합니다.

공급자가 업그레이드를 시작하면 Snowflake는 업그레이드할 각 앱을 큐에 추가합니다. 각 앱은 리소스 가용성에 따라 업그레이드됩니다. 설치된 모든 버전의 앱에서 업그레이드 프로세스를 완료하는 데 시간이 걸릴 수 있습니다. 업그레이드 프로세스를 신속하게 진행하기 위해 컨슈머는 새 버전이나 패치가 가용할 때 앱의 업그레이드를 수동으로 시작할 수도 있습니다.

참고

앱에 대한 업그레이드 프로세스가 시작되면 컨슈머는 더 이상 수동으로 앱을 업그레이드할 수 없습니다.

자세한 내용은 앱 업그레이드하기 섹션을 참조하십시오.

리전 간 업그레이드

클라우드 간 자동 복제를 사용하여 리전 간에 설치된 앱을 업그레이드하는 방법에 대한 자세한 내용은 리전 간 앱 업그레이드하기 섹션을 참조하십시오.

앱 버전 및 패치 수명 주기

앱 버전과 패치가 함께 작동하는 방식을 이해하려면 공급자가 앱의 초기 버전인 v1을 게시하고 컨슈머 A와 컨슈머 B가 각자의 계정에 해당 버전의 앱을 설치한 시나리오를 생각해 보십시오.

이 시나리오는 다음 섹션에 나와 있습니다.

버전 v1.0은 컨슈머 계정에 설치됨

그림 1 은 공급자가 게시한 앱의 버전 v1.0 을 보여주며, 두 컨슈머가 계정에 앱을 설치했습니다.

../../_images/na-app-lifecycle-1.png

그림 1 - 버전 v1.0

이 그림은 다음을 보여줍니다.

  • v1.0 의 애플리케이션 파일은 스테이지에 저장됩니다.

  • 애플리케이션 패키지의 릴리스 지시문은 v1.0 으로 설정됩니다.

  • 컨슈머가 계정에 v1.0 을 설치했습니다.

  • 공급자가 계정에서 버전 v2.0 개발을 시작했습니다.

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

그림 2 는 공급자가 버전 v2.0 을 업로드하고 애플리케이션 패키지에 새 버전을 생성했음을 보여줍니다.

../../_images/na-app-lifecycle-2.png

그림 2 - 스테이지에 파일 업로드하기

이 그림에서는 다음을 보여줍니다.

  • 앱의 v2.0 버전을 로컬에서 테스트한 후 공급자는 v2.0 파일을 스테이지에 업로드합니다.

  • 공급자는 애플리케이션 패키지에서 앱의 새 버전을 만듭니다.

  • 릴리스 지시문은 계속해서 앱의 버전 v1.0 을 가리킵니다.

  • 컨슈머는 계정에 v1.0 버전이 계속 설치되어 있습니다.

앱을 버전 v1.0에서 버전 v2.0으로 업그레이드하기

앱의 버전 v1.0 에서 버전 v2.0 으로 업그레이드를 수행하려면 공급자는 애플리케이션 패키지의 릴리스 지시문 을 버전 v2.0 으로 설정합니다. 이렇게 하면 컨슈머 계정에서 앱 업그레이드 프로세스가 시작됩니다.

업그레이드가 완료되면 그림 3 다이어그램과 같이 컨슈머 A와 B 모두 계정에 버전 v2.0이 설치됩니다.

../../_images/na-app-lifecycle-3.png

그림 3 - 버전 v1.0 에서 v2.0 으로 업그레이드하기

또한 이 시나리오에서 공급자는 로컬 개발 환경에서 버전 v3.0을 개발 및 테스트하기 시작했습니다.

버전 v1.0을 삭제하면 v3.0을 만들 수 있음

테스트가 완료되면 공급자는 스테이지에 버전 v3.0 을 업로드합니다. 공급자가 버전 v3.0 으로 업그레이드를 시작하려면 먼저 모든 컨슈머가 버전 v1.0 에서 마이그레이션했는지 확인해야 합니다.

이전 섹션에 표시된 시나리오에서 모든 컨슈머는 현재 v2.0 에 있습니다.

공급자는 그림 4 와 같이 애플리케이션 패키지에서 버전 v1.0 을 삭제해야 합니다.

../../_images/na-app-lifecycle-4.png

그림 4 - 애플리케이션 패키지에서 버전 v1.0 삭제하기

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

공급자는 버전 v1.0 을 삭제한 후 애플리케이션 패키지에 버전 v3.0 을 추가할 수 있습니다. 이러한 맥락에서 릴리스 지시문은 여전히 v2.0 을 가리키고 있으며 컨슈머는 계정에 v2.0 을 설치하고 있습니다.

../../_images/na-app-lifecycle-5.png

그림 5 - 애플리케이션 패키지에 버전 v3.0 추가하기

버전 v3.0 으로 업그레이드하기

v3.0 으로 업그레이드하려면 공급자가 릴리스 지시문을 v3.0 을 가리키도록 업데이트합니다. 이렇게 하면 업그레이드가 시작됩니다. 업그레이드가 완료되면 컨슈머는 다음 그림과 같이 v3.0 버전으로 업그레이드됩니다.

../../_images/na-app-lifecycle-6.png

그림 5 - 버전 v3.0 으로 업그레이드하기