|sf-marketplace|에 앱을 게시하기 위한 지침 및 요구 사항

개요

이 가이드라인에서는 |sf-marketplace|에 애플리케이션(|native-apps| 및 연결된 앱 모두)을 게시할 때 적용되는 표준을 정의합니다.

네이티브 애플리케이션

|sf-marketplace|에 게시

애플리케이션 패키지를 |sf-marketplace|에 게시할 준비가 되면 Snowflake에 제출하여 검토 및 승인을 받아야 합니다.

참고

Snowflake Marketplace 에 앱을 게시하는 데 필요한 승인 절차는 애플리케이션 패키지의 :doc:` 속성이 </developer-guide/native-apps/security-overview>로 설정된 경우 실행되는 자동 보안 검사 DISTRIBUTIONEXTERNAL 추가됩니다. 자세한 내용은 :ref:`label-native_app_listing_approval_flow 섹션을 참조하십시오.

목록을 만들기 전에 적용되는 요구 사항을 이해했으며 애플리케이션 패키지가 각 요구 사항을 준수하는지 확인합니다. 애플리케이션 패키지가 이러한 요구 사항을 따르지 않는 경우 제출이 거부될 수 있습니다.

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

|sf-marketplace|에 등록되는 |native-apps| 표준

Snowflake Native App 기능 검토 프로세스는 |sf-marketplace|에 게시된 앱의 품질을 보장합니다. 이 프로세스에서 평가되는 항목을 명확히 알 수 있도록 다음의 표준이 |sf-marketplace|를 통해 배포되는 모든 |native-apps|에 적용됩니다.

즉각적인 유용성

앱 기능은 컨슈머 계정 내에서 제공되어야 하며, 앱은 설치 후 즉시 작동 가능해야 합니다.

독립 실행형

앱은 Snowflake에서 제품 경험을 제공하고 Snowflake 기능을 통해 외부 요구 사항을 원활하게 처리해야 합니다.

데이터 중심

앱은 Snowflake에 저장된 데이터를 활용하는 데이터 중심 사용 사례를 기반으로 해야 합니다.

투명성, 간결함, 보안

앱은 Snowflake 기능을 사용하여 앱의 리소스 및 액세스 요구 사항을 공개하고 컨슈머를 위한 구성 프로세스를 간소화해야 합니다.

적용된 표준

Snowflake는 다음 요구 사항을 참조하여 |native-app|이 |sf-marketplace|의 게시 표준을 충족하는지 확인합니다. |sf-marketplace|에 애플리케이션 패키지와 함께 목록을 제출할 때 이러한 요구 사항이 확인됩니다.

  1. 즉각적인 유용성

    1. 앱은 기능을 광고하는 껍데기 앱이어서는 안 됩니다. 앱은 광고된 기능을 제공해야 합니다.

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

    3. 앱이 충돌하거나 멈추거나 비정상적으로 작동해서는 안 됩니다.

    4. 앱은 모든 요구 사항 자격 증명을 목록으로 작성해야 하며, 공급자는 테스트를 위해 제출할 때 필요한 자격 증명을 Snowflake와 공유해야 합니다.

    5. 앱이 즉시 실행 가능한 것이 아니라면, 컨슈머가 앱을 완전히 설치하고 구성할 수 있도록 컨슈머에게 예상되는 작업 흐름을 문서화해야 합니다.

  2. 독립 실행형

    1. 앱은 패스스루가 되어서는 안 됩니다. 예를 들어 앱의 핵심 기능을 활성화하기 위해 컨슈머를 외부 서비스로 리디렉션해서는 안 됩니다.

    2. 앱 인터페이스는 설치 후 Snowflake에서 직접 액세스할 수 있어야 합니다.

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

    4. 외부 서비스에 액세스하고 사용자 인증을 활용하는 앱은 다음 표준을 준수해야 합니다.

      1. 앱은 외부 서비스에 액세스하기 위한 목적으로만 컨슈머의 Snowflake 계정에 서비스 사용자를 생성하도록 요청할 수 있습니다.

        1. 허용되는 인증 방법은 프로그래밍 방식 액세스 토큰(PAT), OAuth 또는 키 페어입니다. 서비스 사용자에게는 앱이 작동하는 데 필요한 최소한의 권한만 부여해야 합니다.

      2. 사용자 인증이 필요한 앱의 경우 인증을 위해 컨슈머에게 다음을 수행하도록 요구해서는 안 됩니다.

        1. 컨슈머의 Snowflake 사용자 이름과 비밀번호 입력.

        2. 개인/공용 키 생성 및 개인 키 공유.

  3. 데이터 중심

    1. 앱은 다음 중 한 가지 방법으로 Snowflake 데이터를 활용해야 합니다.

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

      2. |sf-marketplace|의 데이터 세트를 사용합니다.

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

  4. 투명성과 단순성

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

    2. |native-app|의 모든 리소스 요구 사항은 앱의 marketplace.yml 파일에 명시되어 있어야 합니다. 앱은 설치 및 설정의 일부로 이러한 리소스를 생성해야 합니다.

    3. 애플리케이션 패키지 매니페스트 파일에 나열된 모든 계정 수준 권한 및 참조는 Snowsight 또는 Python Permission SDK 를 통해 컨슈머에게 요청해야 합니다.

    4. 앱은 추가 정보 파일을 제공해야 합니다. Streamlit 또는 사용자 지정 사용자 인터페이스를 포함하지 않는 앱은 추가 정보 파일에 다음 정보를 포함해야 합니다.

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

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

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

      4. 앱에 필요한 권한.

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

    5. 모든 필수 SQL 명령은 Snowflake를 사용하여 코드 블록 형식으로 전달해야 합니다.

    6. 앱이 샘플 데이터를 제공하는 경우 샘플 데이터를 사용하는 방법에 대한 절차를 포함해야 합니다.

    7. 애플리케이션 패키지에 Streamlit 앱이 포함되어 있지만 readme 파일이 포함되어 있지 않은 경우, 기본 :ref:`Streamlit 앱<label-streamlit_add_to_manifest>`을 구성해야 합니다.

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

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

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

    • 매니페스트 파일.

    • 설정 스크립트.

    • README 파일.

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

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

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

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

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

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

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

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

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

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

시험 목록에 대한 권장 사항

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

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

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

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

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

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

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

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

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

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

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

연결된 앱

Snowflake는 SaaS 공급자가 |sf-marketplace|에 연결된 앱을 등록하도록 지원합니다. 연결된 앱은 Snowflake 고객의 계정에 안전하게 연결되어 워크플로 중에 특정 데이터를 읽거나 수집하는 통합 SaaS 애플리케이션입니다. 컨슈머는 연결된 앱을 사용하여 외부 UI를 통해 Snowflake 데이터와 직접 상호 작용할 수 있습니다.

|sf-marketplace|에 연결된 앱을 게시하기 위한 요구 사항

  • 파트너 네트워크 계층: 공급자는 `Snowflake 파트너 네트워크(SPN) <https://www.snowflake.com/en/why-snowflake/partners/>`_의 구성원이어야 하며 Select, Premier, Elite 계층 중 하나를 보유해야 합니다.

  • CSID 요구 사항: 각 연결된 앱은 연결 문자열 식별자(CSID)를 사용하여 전체 원격 분석 및 사용 추적을 할 수 있습니다. 공급자는 애플리케이션당 하나의 CSID로 통합하는 것이 좋지만 필요한 경우 여러 CSIDs를 사용하는 것도 지원됩니다. CSID는 먼저 SPN를 통해 제출해야 하며, 이후에 목록을 제출할 때도 필요합니다. 그리고 검토 프로세스 중에 확인됩니다.

  • 보안 투명성: 공급자는 앱 등록 프로세스 중에 간단한 **보안 및 데이터 처리 확약서**를 작성해야 합니다.

  • 목록 유형: 모든 연결된 앱 목록은 공개 유료 목록을 사용해야 하며, 표준 또는 비공개 오퍼를 통해 거래를 이행해야 합니다.

|sf-marketplace|에 등록되는 연결된 앱의 지속적 표준

  1. 에코시스템 기여: 연결된 앱은 **Snowflake Data Cloud 에코시스템**에 실질적으로 기여해야 하며, 데이터 공동 작업, 사용량 또는 워크로드 도입을 촉진하는 데 도움이 되어야 합니다.

  2. 적극적인 파트너십: 공급자는 Snowflake 에코시스템에 **적극적으로 기여**해야 합니다. Marketplace에 목록을 계속 유지하려면 공급자는 파트너 네트워크 내에서 Select 이상의 계층을 계속 유지해야 하며, 제공하는 애플리케이션이 에코시스템에 계속해서 기여해야 합니다. 공급자가 더 이상 에코시스템에 기여하지 않거나(Snowflake의 재량에 따라) 더 이상 파트너 자격 기준을 충족하지 못할 경우 Snowflake는 목록을 제거할 수 있습니다.