Snowflake Marketplace에 앱을 게시하기 위한 가이드라인

이 항목에서는 Snowflake Marketplace에 Snowflake Native App 을 게시하기 위한 기준에 대해 설명합니다.

Snowflake Marketplace에 앱 게시

애플리케이션 패키지를 Snowflake Marketplace 에 게시할 준비가 되면 Snowflake에 제출해 승인을 받아야 합니다.

참고

Snowflake Marketplace 에 앱을 게시하는 데 필요한 승인 절차는 애플리케이션 패키지의 DISTRIBUTION 속성이 EXTERNAL로 설정된 경우 실행되는 자동 보안 검사 에 추가됩니다.

목록을 작성하기 전에 필수 요구 사항 을 이해하고 애플리케이션 패키지가 각 요구 사항을 준수하는지 확인하십시오. 애플리케이션 패키지가 이러한 요구 사항을 따르지 않는 경우 제출이 거부될 수 있습니다.

제출한 애플리케이션 패키지에 대해 거부 알림을 받은 경우 권장 사항을 변경한 후 애플리케이션 패키지를 다시 제출하여 승인을 받습니다.

Snowflake Marketplace의 Snowflake Native Apps에 대한 표준

Snowflake는 공급자가 앱을 빌드, 배포하고 수익을 창출할 수 있는 플랫폼을 제공합니다.

Snowflake 검토 과정은 Snowflake Marketplace에 게시되는 앱의 품질을 보장합니다. 간소화된 검토 프로세스를 보장하기 위해 Snowflake는 Snowflake Marketplace에 게시된 앱에 대해 다음과 같은 요구 사항과 지침을 제공합니다.

즉각적인 유용성

앱은 컨슈머에게 즉각적인 유용성을 제공해야 하며, 외부 요구 사항 없이 Snowflake 내에서 사용될 수 있어야 합니다.

독립 실행형

앱은 독립 실행형이어야 합니다. 컨슈머는 자신의 계정 내에서 앱과 앱 기능을 사용할 수 있어야 합니다.

책임 있는 데이터 액세스

Snowflake 데이터에 액세스하는 앱은 데이터를 적절하게 사용해야 합니다.

플랫폼에서 수익화

Snowflake는 수익 창출 앱은 Snowflake에서 제공하는 수익화 기능 을 사용할 것을 권장합니다. 앱이 Snowflake 플랫폼 수익 창출을 사용하는 경우 Snowflake 사용자는 용량 약정을 사용하여 서드 파티 해결 방법을 구매할 수 있습니다.

투명

앱은 Snowflake 기능을 사용하여 앱의 리소스와 액세스 가시성을 극대화해야 합니다. 앱은 컨슈머를 위해 구성 과정을 단순화해야 합니다.

필수 요구 사항

Snowflake는 Native App이 Snowflake Marketplace에 게시하는 데 필요한 요구 사항을 충족하는지 확인하기 위해 다음과 같은 기준을 사용합니다. 이러한 요구 사항은 Snowflake Marketplace 애플리케이션 패키지를 첨부하여 목록을 제출하면 유효성 검사가 수행됩니다.

  1. 즉각적인 유용성

    1. 앱은 기능을 광고하는 셸 앱이 아니어야 합니다.

    2. 앱에는 앱 기능을 활용하기 위한 명확한 프레임워크가 포함되어야 합니다.

  2. 독립 실행형

    1. 앱은 애플리케이션 기능을 활성화하기 위해 컨슈머를 외부 서비스로 리디렉션해서는 안 됩니다.

    2. 앱 인터페이스는 설치 후 Snowflake에서 직접 Streamlit UI 또는 Snowflake에서 호스팅되는 사용자 지정 UI를 사용하여 액세스할 수 있어야 합니다.

    3. 앱은 Snowflake 컨슈머 계정에서 외부 서비스에 대한 액세스를 제공하는 사용자나 역할을 생성하도록 컨슈머에게 요구할 수 없습니다.

    4. 앱은 Snowflake Marketplace를 외부 애플리케이션이나 서비스의 교차 판매를 위한 배포 플랫폼으로 사용할 수 없습니다.

  3. 책임 있는 데이터 액세스

    1. 앱은 다음 중 1개의 방법으로 데이터를 활용해야 합니다.

      1. 앱 공급자 계정의 데이터를 공유합니다.

      2. Snowflake Marketplace의 데이터 세트를 사용합니다.

      3. 컨슈머 계정의 데이터에 액세스합니다.

  4. 플랫폼에서 수익화

    1. 플랫폼에서 수익을 창출하는 앱은 Snowflake 내의 모든 기능을 포함해야 합니다.

  5. 투명

    1. 애플리케이션에 필요한 모든 계정 수준 권한 및 참조는 애플리케이션 패키지 매니페스트 파일에 목록으로 표시되어야 합니다.

    2. Snowflake Native App의 모든 리소스 요구 사항은 앱의 marketplace.yml 파일에 나열되어 있어야 합니다. 앱은 설치 및 설정의 일부로 이러한 리소스를 생성해야 합니다.

    3. 목록에 매니페스트 파일의 security 섹션에 계정 수준 권한 또는 참조가 포함되어 있고 애플리케이션 패키지에 Streamlit 앱이 포함되는 경우 Snowsight 를 사용하여 컨슈머로부터 권한과 참조를 요청하는 사용자 인터페이스를 만들어야 합니다.

    4. 애플리케이션 패키지에 Streamlit 앱이나 앱용 사용자 지정 사용자 인터페이스가 포함되지 않은 경우, 애플리케이션 패키지에 포함된 readme 파일에는 다음 정보가 포함되어야 합니다.

      1. 앱의 기능에 대한 설명.

      2. 컨슈머가 앱을 설치한 후에 구성하기 위해 수행해야 하는 단계.

      3. 앱이 사용하는 저장 프로시저와 사용자 정의 함수.

      4. 앱에 필요한 권한.

      5. 컨슈머에게 앱 사용 방법을 보여주는 예제 SQL 명령.

    5. README 파일에 SQL 문이나 코드 예제가 포함된 경우 코드 블록을 사용해야 합니다.

    6. 가능하면 여러 개의 개별 Streamlit 앱 대신 단일 또는 여러 페이지의 Streamlit 앱을 사용합니다. 여기에는 다중 사용자 Streamlit 앱이 포함됩니다.

    7. 앱이 샘플 데이터를 제공하는 경우 필요하다면 데이터베이스를 생성하는 데 필요한 코드를 포함하여 샘플 데이터를 사용하는 방법에 대한 절차를 포함해야 합니다.

    8. 애플리케이션 패키지에 readme 파일이 포함되어 있지 않은 경우 목록의 Sample SQL 섹션에 사용 예제를 제공하거나 기본 Streamlit 앱 또는 기본 웹 엔드포인트를 구성해야 합니다.

Snowflake Native App 을 게시할 경우의 모범 사례

애플리케이션 패키지를 Snowflake Marketplace 에 제출하기 위한 요구 사항 외에도 Snowflake에서는 Snowflake Native App 을 게시할 때 다음 모범 사례를 권장합니다.

  • 다음을 포함하여 제출하는 앱 버전에 대해 지정된 스테이지에 필요한 모든 파일이 업로드되었는지 확인하십시오.

    • manifest.yml 파일.

    • 설정 스크립트.

    • readme.md 파일.

    • 애플리케이션 패키지에 필요한 외부 저장 프로시저 또는 사용자 정의 함수.

    • 애플리케이션 패키지에 필요한 모든 Streamlit 파일.

    • Python, Java 등을 포함한 모든 외부 소스 코드.

  • 개발 중인 앱 버전이 자동 보안 검사 를 통과하는지 확인하십시오.

  • CREATE APPLICATION 명령을 사용하여 로컬에서 애플리케이션 오브젝트를 생성하여 애플리케이션 패키지의 새 버전을 테스트합니다.

    • 앱을 개발하고 테스트하는 동안 애플리케이션 패키지에 새 버전을 추가하거나 DISTRIBUTION 속성을 EXTERNAL로 설정하지 마십시오. 이러한 작업은 자동 보안 검사 를 트리거하여 개발 주기를 지연시킵니다.

      대신, 명명된 스테이지의 파일 을 사용하여 애플리케이션 오브젝트를 생성하십시오.

    • 앱에 Streamlit 앱이 포함된 경우 Snowsight 에서 애플리케이션을 테스트하여 Streamlit 앱이 예상대로 작동하는지 확인하십시오.

    • Streamlit 앱과 Snowflake Worksheets 간의 상호 작용이 원활하고 컨슈머가 둘 사이를 과도하게 탐색할 필요가 없는지 확인하십시오.

  • 승인을 위해 제출하기 전에 목록의 모든 부분을 검토하십시오.

  • 목록, readme 파일 및 Streamlit 앱에 오타나 기타 텍스트 오류가 없는지 확인하십시오.

시험 목록에 대한 권장 사항

앱 체험판 목록이 만료되면 Snowflake는 자동으로 앱을 일시 중단하여 컨슈머가 추가적인 컴퓨팅 비용을 부담하지 않도록 합니다. Snowflake는 현재 활성화된 앱이 소유한 오브젝트만 일시 중단합니다. Snowflake는 이미 일시 중단된 오브젝트의 상태를 수정하지 않습니다.

평가판 목록이 전체 목록이나 유료 목록으로 변환되면 Snowflake는 작업, 컨테이너 및 컴퓨팅 풀을 재개하여 앱을 다시 활성화하려고 시도합니다. Snowflake는 auto_resume 속성이 false로 설정된 서비스 및 컴퓨팅 풀만 다시 시작합니다.

컨테이너가 있는 앱에 대한 권장 사항

  • 컴퓨팅 풀은 Snowpark Container Services 작업과 함께 자동으로 일시 중단되도록 설정하여 유휴 컴퓨팅 노드가 발생하는 것을 방지해야 합니다.

  • 업그레이드 중 가용성을 높이고 콜드 스타트 지연 시간을 줄이려면 MIN_NODES 매개 변수를 1보다 크게 설정하는 것이 좋습니다.

  • 동일한 앱에서 여러 서비스 간 연결이 필요한 경우 외부 액세스 통합을 구성하는 대신 DNS 서비스 이름을 사용합니다.

이벤트 공유를 위한 권장 사항

  • 공급자는 지원되는 이벤트 정의 에 따라 로그 메시지를 전송하고 이벤트를 추적하도록 앱을 구성하여 컨슈머가 어떤 정보가 수집되는지 이해할 수 있도록 해야 합니다.

  • 필수 이벤트 정의는 앱에 필요한 로그 메시지와 추적 이벤트로 제한되어야 합니다. 과도하거나 불필요한 필수 이벤트 정의는 피해야 합니다.

  • 버전 업그레이드에서 새로운 필수 이벤트 정의를 추가하려면 컨슈머가 앱에 대한 이벤트 정의를 다시 활성화해야 합니다.

  • Python Permission SDK 를 사용하여 컨슈머가 선택적 이벤트를 공유할 수 있도록 합니다.