시나리오별 워크플로 예약하기

이 항목에서는 두 가지 일반적인 시나리오에서 노트북을 예약하기 위한 자세한 워크플로를 제공합니다.

  • 시나리오 A: 비공개 작업 영역에서 개발 - Snowsight 에서 직접 노트북 예약

  • 시나리오 B: 프로덕션(CI/CD) - CI/CD 파이프라인을 사용하여 Git 리포지토리에서 노트북 배포

참고

현재 공유 작업 공간에서는 노트북 예약이 지원되지 않습니다.

시나리오 A: 비공개 작업 공간에서 개발

  1. 탐색 메뉴에서 Projects » Workspaces 를 선택합니다.

  2. + Add new » :ui:`Notebook`을 선택하여 새로운 노트북을 생성하거나 예약할 기존 노트북을 엽니다.

    참고

    예약 중인 노트북에서 실행 컨텍스트(데이터베이스 및 스키마)를 지정했는지 확인합니다. 자세한 내용은 :ref:`실행 컨텍스트 설정 <label-nb_in_ws_edit_run_execution_context>`을 참조하세요.

  3. 노트북 편집기 상단에서 Scheduled runs 예약된 실행 아이콘 을 선택합니다.

    • 이 작업이 노트북의 첫 번째 작업인 경우 예약된 실행 아이콘 아이콘은 캘린더입니다.

    • 예약이 이미 있는 경우 예약된 실행 아이콘 아이콘은 시계가 있는 캘린더입니다.

  4. Create Schedule 을 선택합니다.

  5. Schedule a Notebook Task 대화 상자에 다음 정보를 입력합니다.

    기본 설정

    • 작업 이름: 예약된 작업의 고유한 이름입니다. 기본 이름은 :code:`{notebook-name}_task_#`이지만 필요한 경우 업데이트할 수 있습니다.

    • 소유자 역할: 작업이 실행되는 Snowflake 역할입니다. 예약된 노트북에서 수행되는 모든 작업을 실행하는 데 필요한 권한이 있는 역할을 선택합니다. 이 역할에는 다음 권한이 있어야 합니다.

      • 노트북에서 사용하는 데이터베이스 오브젝트 읽기/쓰기 권한.

      • 웨어하우스, 컴퓨팅 풀, 통합에 대한 액세스 권한.

      • 작업 및 프로젝트 오브젝트 생성/업데이트 권한.

    • 위치: 작업 오브젝트 및 관련 노트북 프로젝트 오브젝트가 생성될 데이터베이스 및 스키마입니다. 역할에 CREATE, TASK, USAGE 권한이 있는 스키마를 선택합니다. 역할에 스키마에 대한 USAGE 권한만 있는 경우 CREATE NOTEBOOK PROJECT 권한도 있는지 확인합니다.

    • 빈도: 노트북을 실행해야 하는 빈도입니다. 다음 중에서 선택합니다. 매시간, 매일, 매주, 매월 또는 사용자 지정(Cron 예약). 모든 실행 시간은 현지 타임존을 사용합니다.

    고급 설정(달리 지정하지 않는 한 모든 필드는 필수 입력 사항임)

    • 노트북 프로젝트 이름: Snowflake가 작업 실행을 위해 생성하는 노트북의 프로젝트 컨테이너에 대한 고유한 이름입니다. 편집하지 않는 경우 Snowflake가 기본 이름을 제공합니다.

    • 매개 변수(선택 사항): 런타임 시 노트북에 전달된 키-값 매개 변수이며, 명령줄 인자로 표시됩니다(sys.argv). 매개 변수는 날짜, 환경 플래그, 임계값 또는 모델 버전을 전달하는 데 유용합니다. 매개 변수는 Snowsight 에 공백으로 구분된 값으로 전달하거나 EXECUTE NOTEBOOK PROJECT 명령에 ARGUMENTS = 'env prod'`로 전달할 있습니다. 자세한 내용은 :doc:/user-guide/ui-snowsight/notebooks-in-workspaces/notebooks-in-workspaces-parameters` 섹션을 참조하십시오.

    • 런타임 베리언트: 노트북 실행에 사용되는 런타임 환경입니다. 다음 중에서 선택합니다.

      • CPU: CPU Container Runtime 환경을 사용하며, CPU 컴퓨팅 풀(예: 자동으로 프로비저닝된 SYSTEM_COMPUTE_POOL_CPU)에서 실행됩니다.

      • GPU: GPU 가속 라이브러리가 포함된 GPU Container Runtime 환경을 사용하며, GPU 컴퓨팅 풀(예: SYSTEM_COMPUTE_POOL_GPU)에서 실행됩니다.

      • Python 버전: 작업 실행 중에 사용되는 Python 버전입니다.

      • 런타임 버전: 기본 Container Runtime 이미지입니다. 올바른 런타임 버전을 선택하면 개발 및 예약된 실행 간에 노트북이 일관되게 실행됩니다.

    • 컴퓨팅 풀: 노트북 작업을 실행하는 컴퓨팅 풀입니다. 예약된 실행 시점에 컴퓨팅 풀에 용량(사용 가능한 노드)이 있는지 확인합니다. 예약된 실행이 실패하지 않도록 방지하려면 전용 컴퓨팅 풀을 사용하여 다른 SPCS 서비스가 전체 용량을 차지하지 않도록 하는 것이 좋습니다.

    • 쿼리 웨어하우스: 노트북 내부의 모든 SQL 쿼리에 사용되는 Snowflake 웨어하우스입니다.

    • 외부 액세스 통합(선택 사항): 노트북에서 사용할 수 있는 Snowflake 외부 액세스 통합(EAIs)을 정의합니다. 노트북에 외부 APIs, 서드 파티 서비스 또는 Snowflake 내부 스테이지 외부의 클라우드 저장소가 필요한 경우 EAIs가 필요합니다. EAIs가 나열되지 않은 경우 선택한 역할에는 통합에 대한 소유권 또는 권한이 없습니다.

    • 요구 사항 파일(선택 사항): REQUIREMENTS_FILE 매개 변수를 사용하여 반복 가능한 실행을 위한 Python 종속성을 사전 설치합니다. 자세한 내용은 패키지 및 런타임 관리하기 섹션을 참조하십시오.

  6. 예약 미리 보기를 검토하고 :ui:`Create`를 선택합니다.

시나리오 B: 프로덕션(CI/CD)

프로덕션 환경의 경우 Git 기반 작업 공간에서 노트북 코드를 관리하거나(자세한 내용은 작업 공간을 Git 리포지토리와 통합하기 참조) 선호하는 IDE에서 로컬로 개발하는 것이 좋습니다. CI/CD 파이프라인(예: GitHub Actions)을 사용하여 파일을 Snowflake 내부 또는 임시 스테이지에 배포합니다.

이 패턴에 대한 실습 안내는 Snowflake Notebooks를 사용하여 데이터 엔지니어링 시작하기 빠른 시작 및 함께 제공되는 GitHub의 `코드 리포지토리 <https://github.com/Snowflake-Labs/sfguide-data-engineering-with-notebooks>`_를 참조하세요.

파일이 스테이지에 있으면 다음을 수행할 수 있습니다.

  • 해당 스테이지 위치에서 제공된 노트북 프로젝트 오브젝트(NPO)를 생성합니다.

  • 자동화된 실행을 위해 Snowflake Task를 사용하여 NPO를 예약합니다.

  1. 스테이지 생성

    :doc:`CREATE STAGE </sql-reference/sql/create-stage>`를 사용하여 내부 또는 임시 스테이지를 생성하려면 다음을 수행합니다.

    -- Ensure the landing zone exists
    CREATE STAGE IF NOT EXISTS <database_name>.<schema_name>.<stage_name>;
    
    Copy
  2. 내부 또는 임시 스테이지에 노트북 파일 로드/배포

    해당 CI/CD 파이프라인은 .ipynb`를 Snowflake 스테이지에 업로드해야 합니다. :doc:`PUT </sql-reference/sql/put> 명령을 사용하여 노트북 파일이 노트북 프로젝트에서 읽을 수 있는 스테이지에 로드되었는지 확인합니다.

    PUT file://<absolute_path_to_file>/ @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
    
    Copy

    예:

    PUT file://notebooks/ml_model/train.ipynb @<database_name>.<schema_name>.<stage_name> AUTO_COMPRESS=FALSE OVERWRITE=TRUE;
    
    Copy
  3. 노트북 프로젝트 오브젝트(NPO) 생성 또는 업데이트

    배포된 노트북 파일이 포함된 내부 또는 임시 스테이지를 참조하려면 NPO를 생성(또는 업데이트)합니다.

    CREATE NOTEBOOK PROJECT IF NOT EXISTS <database_name>.<schema_name>.<project_name>
      FROM '@<database_name>.<schema_name>.<stage_name>';
    
    Copy
  4. 노트북 프로젝트 세부 정보 변경

    후속 코드 변경의 경우 파이프라인은 ALTER 명령을 실행합니다. 그러면 오브젝트를 삭제하고 다시 생성할 필요 없이 프로젝트가 최신 버전의 코드로 업데이트됩니다.

    -- Update the project with the latest code from the stage
    ALTER NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
      ADD VERSION FROM '@<database_name>.<schema_name>.<stage_name>';
    
    Copy
  5. 노트북 프로젝트 실행(작업으로 오케스트레이션)

    작업을 생성하여 NPO를 예약하고 실행합니다. Snowflake 작업을 사용하여 NPO의 일정 및 실행 매개 변수를 정의합니다.

    참고

    노트북 실행 컨텍스트를 지정해야 합니다(예약할 노트북의 데이터베이스 및 스키마 사용). 자세한 내용은 실행 컨텍스트 설정 섹션을 참조하십시오.

    -- Create or replace the task to orchestrate the notebook
    CREATE OR REPLACE TASK <database_name>.<schema_name>.<task_name>
      WAREHOUSE = '<warehouse_name>'
      SCHEDULE = 'USING CRON 0 9 * * * America/Los_Angeles'
    AS
      EXECUTE NOTEBOOK PROJECT <database_name>.<schema_name>.<project_name>
        MAIN_FILE = 'snow://workspace/<workspace_hash>/path/to/notebook.ipynb'
        COMPUTE_POOL = 'SYSTEM_COMPUTE_POOL_CPU'
        RUNTIME = 'V2.2-CPU-PY3.12'
        QUERY_WAREHOUSE = '<warehouse_name>'
        ARGUMENTS = '<db_name> <schema_name> <warehouse_name>';
    
    Copy

    예약된 노트북에 매개 변수를 전달하는 방법에 대한 자세한 내용은 매개 변수로 노트북 실행 섹션을 참조하세요.

  6. 노트북 실행 또는 실행 기록 보기

    작업이 실행된 후 CI/CD 배포가 예상대로 수행되고 있는지 확인하기 위해 Snowsight 에서 성공 또는 실패를 모니터링할 수 있습니다. 실행 기록 보기에 대한 자세한 지침은 :ref:`예약된 노트북 실행 보기 <label-nb_in_ws_schedule_view_runs>`를 참조하세요.

|sf-web-interface|는 노트북의 비대화형(헤드리스) 실행을 지원합니다. 이를 통해 |sf-web-interface|를 열지 않고도 반복 일정 없이 노트북의 프로그래밍 방식 실행을 트리거할 수 있습니다.

헤드리스 실행은 Airflow, Prefect, Dagster, CI/CD 파이프라인과 같은 도구 또는 노트북을 프로그래밍 방식으로 실행해야 하는 외부 시스템에 의해 오케스트레이션되는 작업, 예약된 작업, 워크플로를 위해 설계되었습니다. 자세한 내용은 CREATE NOTEBOOK PROJECT 섹션을 참조하십시오.

참고

이 워크플로의 SQL 명령(예: CREATE NOTEBOOK PROJECTCREATE TASK)을 실행하려면 노트북 셀 내부가 아닌 작업 공간의 SQL 파일 또는 SQL 워크시트에서 실행해야 합니다.