Streamlit을 사용하여 앱에 프런트엔드 경험 추가하기

이 항목에서는 Snowflake Native App 내에 Streamlit 앱을 포함하는 방법을 설명합니다.

Streamlit 및 Snowflake Native App Framework 정보

Streamlit 은 머신 러닝과 데이터 과학을 위한 사용자 지정 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 오픈 소스 Python 라이브러리입니다. Streamlit을 사용하면 강력한 데이터 애플리케이션을 신속하게 개발하여 배포할 수 있습니다.

오픈 소스 라이브러리에 대한 자세한 내용은 Streamlit 라이브러리 설명서 를 참조하십시오.

Snowflake Native App Framework 내에서 Streamlit을 사용하여 다음을 수행할 수 있습니다.

  • 컨슈머가 Snowflake Native App 에서 제공하는 데이터를 시각화할 수 있는 프런트 엔드 웹 앱을 만듭니다.

  • 컨슈머가 권한을 부여하고 계정 내에서 Snowflake Native App 이 사용하는 오브젝트에 대한 참조를 생성할 수 있는 사용자 인터페이스를 만듭니다.

    자세한 내용은 컨슈머 계정의 오브젝트에 대한 액세스 요청하기 섹션을 참조하십시오.

참고

지원되지 않는 Streamlit 기능에 대한 자세한 내용은 지원되지 않는 Streamlit 기능 섹션을 참조하십시오.

지원되는 Streamlit 라이브러리 버전

Snowflake Native App Framework 는 Streamlit 라이브러리 v1.22.0을 지원합니다. Streamlit 라이브러리의 최신 버전에 대한 지원은 최신 버전이 출시될 때 포함될 예정입니다.

지원되는 외부 패키지

기본적으로, Snowflake Native App 내에 포함된 Streamlit 앱은 컨슈머 환경에 미리 설치된 python, streamlitsnowflake-snowpark-python 패키지를 포함합니다. 또한 컨슈머 환경은 이러한 패키지에 필요한 종속성에 액세스할 수 있습니다.

지원되지 않는 Streamlit 기능

Snowflake Native App 에서 Streamlit을 사용할 경우 다음 Streamlit 기능은 현재 지원되지 않습니다.

  • 사용자 지정 구성 요소는 지원되지 않습니다.

  • AWS PrivateLink 또는 Azure PrivateLink 를 사용하여 Streamlit 앱에 액세스하는 기능은 지원되지 않습니다.

Streamlit 앱 생성 및 테스트를 위한 워크플로

다음 워크플로에서는 Streamlit 앱을 애플리케이션 패키지에 포함하기 위한 일반적인 워크플로를 설명합니다. 앱의 요구 사항에 따라 이는 반복적인 프로세스일 수 있습니다.

  1. 네이티브 앱을 개발합니다.

    여기에는 컨슈머가 Streamlit을 사용하여 액세스할 수 있게 하려는 데이터 콘텐츠를 추가하는 작업이 포함됩니다. 자세한 내용은 Snowflake Native App Framework 워크플로 섹션을 참조하십시오.

  2. 지원되는 Streamlit 라이브러리 버전과 지원되지 않는 기능을 이해하려면 다음 섹션을 살펴보십시오.

  3. Streamlit 앱을 개발합니다.

    Streamlit 오픈 소스 라이브러리 사용에 대한 자세한 내용은 Streamlit 라이브러리 설명서 를 참조하십시오.

  4. Streamlit 앱에 대한 로컬 디렉터리 구조를 만듭니다.

    앱 구조 내에서 Streamlit 파일을 구성하는 방법에 대한 권장 사항은 Streamlit 앱의 디렉터리 구조 예 섹션을 참조하십시오.

  5. Streamlit 앱에 대한 항목을 manifest.yml 파일에 추가합니다.

    Streamlit 앱을 포함하려면 manifest.yml 파일에 기본 Streamlit 파일의 이름을 포함해야 합니다. 자세한 내용은 매니페스트 파일에 Streamlit 앱 추가하기 섹션을 참조하십시오.

  6. 설정 스크립트에 CREATE STREAMLIT 문을 추가합니다.

    CREATE APPLICATION 명령을 실행할 때 설정 스크립트는 CREATE STREAMLIT 문을 실행하여 Streamlit 오브젝트를 생성합니다. 이 오브젝트에는 Streamlit 앱에 필요한 스키마와 Python 파일이 포함됩니다.

  7. Streamlit 앱에 추가 라이브러리를 포함하도록 environment.yml 파일을 구성합니다.

    자세한 내용은 Streamlit 앱에 추가 패키지 추가하기 섹션을 참조하십시오.

  8. Streamlit 파일, environment.yml 파일, 설정 스크립트, manifest.yml 파일을 명명된 스테이지에 업로드합니다. Streamlit 코드 파일을 애플리케이션 패키지에 포함하려면 파일을 명명된 스테이지에 업로드해야 합니다.

  9. 애플리케이션 패키지를 테스트합니다.

    애플리케이션 패키지와 Streamlit 앱에 필요한 파일을 생성한 후 설정 스크립트와 manifest.yml 파일을 테스트하기 위한 애플리케이션 오브젝트를 생성합니다.

    자세한 내용은 Streamlit 앱이 포함된 애플리케이션 패키지 테스트하기 섹션을 참조하십시오.

  10. Snowsight 에서 Streamlit 앱을 확인합니다.

    Streamlit 앱을 테스트하려면 Snowsight 에서 앱을 확인하십시오. Snowsight에서 Streamlit 앱 테스트하기 섹션을 참조하십시오.

Streamlit 앱의 디렉터리 구조 예

다른 Python 모듈과 마찬가지로, Streamlit 앱을 애플리케이션 패키지에 추가하려면 Streamlit 코드 파일을 명명된 스테이지에 업로드해야 합니다. 스테이지에 파일을 업로드하는 방법에 대한 자세한 내용은 PUT 섹션을 참조하십시오.

Snowflake Native App 의 여러 버전을 설명하려면 다음과 유사한 디렉터리 구조를 사용하여 Streamlit 앱과 관련 애플리케이션 파일을 유지하는 것이 좋습니다.

@test.schema1.stage1:
└── /
    ├── manifest.yml
    ├── readme.md
    ├── scripts/setup_script.sql
    └── code_artifacts/
        └── streamlit/
            └── environment.yml
            └── streamlit_app.py
Copy

생성하는 디렉터리 구조는 앱 및 개발 환경의 요구 사항에 따라 달라집니다.

참고

environment.yml 파일은 Streamlit 앱의 주 파일과 동일한 수준에 있어야 합니다.

상대 경로에 대한 자세한 내용은 외부 코드 파일 참조하기 섹션을 참조하십시오.

매니페스트 파일에 Streamlit 앱 추가하기

애플리케이션 패키지에 Streamlit 파일을 포함하려면 manifest.yml 파일에 다음 항목을 추가하십시오.

artifacts:
  ...
  extension_code: true
  default_streamlit: app_schema.streamlit_app_na
  ...
Copy

앱에서 확장 코드를 사용하려면 extension_code: true 항목이 필요합니다.

default_streamlit: app_schema.streamlit_app_na 항목은 Streamlit 앱을 포함하는 스키마의 위치를 지정합니다.

설정 스크립트에서 Streamlit 오브젝트 만들기

다음 예에서는 설정 스크립트 내에서 CREATE STREAMLIT 을 사용하는 방법을 보여줍니다.

CREATE OR REPLACE STREAMLIT app_schema.my_test_app_na
     FROM '/code_artifacts/streamlit'
     MAIN_FILE = '/streamlit_app.py';

GRANT USAGE ON SCHEMA APP_SCHEMA TO APPLICATION ROLE app_public;
GRANT USAGE ON STREAMLIT APP_SCHEMA.MY_TEST_APP_NA TO APPLICATION ROLE app_public;
Copy

이 예에서는 app_schema 라는 스키마 내에 Streamlit 오브젝트를 생성합니다. CREATE STREAMLIT 명령은 MAIN_FILE 절로 지정된 Streamlit 앱을 사용합니다. 디렉터리 위치는 FROM 절의 값으로 지정됩니다.

애플리케이션 패키지 내에서 Streamlit 앱의 디렉터리 구조를 생성하는 방법에 대한 자세한 내용은 Streamlit 앱의 디렉터리 구조 예 섹션을 참조하십시오.

또한 이 예에서는 스키마 및 Streamlit 오브젝트에 대한 필수 권한을 애플리케이션 역할에 부여합니다.

Streamlit 앱에 추가 패키지 추가하기

environment.yml 파일을 사용하여 Streamlit 앱에 추가 Python 패키지를 추가합니다. 예를 들어 Streamlit 앱에 scikit-learn 라이브러리를 추가하려면 environment.yml 파일에 다음을 추가하십시오.

name: sf_env
channels:
- snowflake
dependencies:
- scikit-learn
Copy

namechannels 속성이 모두 필요합니다.

또한 channels 속성 아래에 - snowflake 키가 필요합니다. 이는 Snowflake Anaconda Channel 을 나타냅니다.

참고

Snowflake Anaconda 채널 에 나열된 패키지만 설치할 수 있습니다. Snowflake는 Streamlit에서 외부 Anaconda 채널을 지원하지 않습니다.

Streamlit 앱이 포함된 애플리케이션 패키지 테스트하기

Streamlit 앱이 포함된 애플리케이션 패키지를 테스트하려면 다음 예와 같이 CREATE APPLICATION 을 실행하여 명명된 스테이지에서 파일을 사용하여 애플리케이션 오브젝트를 만드십시오.

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

테스트해야 하는 대상에 따라 CREATE APPLICATION 의 다른 형식을 사용하여 애플리케이션 오브젝트를 만들 수 있습니다. 예를 들어, 버전 또는 업그레이드의 일부로 Streamlit 앱을 테스트할 수 있습니다. 애플리케이션 오브젝트를 만듭니다. 섹션을 참조하십시오.

Snowsight에서 Streamlit 앱 테스트하기

Streamlit 앱을 테스트하려면 다음을 수행하여 Snowsight 에서 앱을 확인하십시오.

  1. Snowsight 에 로그인합니다.

  2. 왼쪽 탐색 모음에서 Streamlit 를 선택합니다.

  3. 보려는 Streamlit 앱을 선택합니다.

    Snowsight 에서 주 Streamlit 앱이 열립니다.

  4. 선택 사항: 다중 페이지 Streamlit 앱을 보고 있는 경우 추가 페이지를 보려면 탭을 선택하십시오.

Snowflake Native App Framework 에서 Streamlit 앱 문제 해결하기

앱에서 알 수 없는 오류를 표시할 경우 다음 섹션에 설명된 해결책을 시도해봤는지 확인하십시오.

서비스 약관 동의하기

Snowflake 내에서 Anaconda가 제공하는 패키지와 Streamlit을 사용하려면 외부 제공 서비스 약관 에 동의해야 합니다. 자세한 내용은 Anaconda의 서드 파티 패키지 사용하기 을 참조하십시오.

방화벽 허용 목록 설정하기

각 Streamlit 앱은 고유한 하위 도메인을 사용합니다. 엄격한 방화벽을 사용하는 경우 *.snowflake.app 을 방화벽 허용 목록에 추가하십시오. 이 항목을 허용 목록에 추가하면 앱이 Snowflake 서버와 제한 없이 통신할 수 있습니다.