Appendix. Workspace Notebook

Snowflake SE·2026년 6월 6일

Legacy Notebook과 Workspace Notebook의 차이

1. 컴퓨트 환경

항목LegacyWorkspace체크리스트
런타임Warehouse 또는 Container Runtime 선택Container Runtime만 사용Warehouse Runtime 코드 호환 확인
Python 버전3.9 / 3.103.10 ~ 3.12 (3.9 미지원)3.9 전용 문법/패키지 확인
웨어하우스Notebook 실행 + SQL 모두 처리SQL/Snowpark pushdown 전용 (Query Warehouse)역할 분리 인지

2. 시각화

LegacyWorkspace
st. (Streamlit) 사용 가능Streamlit 미지원
st.dataframe(), st.bar_chart()matplotlib, seaborn, plotly, altair로 대체
# Legacy
import streamlit as st
st.bar_chart(df)

# Workspace
%matplotlib inline
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
df.plot.bar(ax=ax)
display(fig)
plt.close(fig)

3. 패키지 관리

LegacyWorkspace
Anaconda 채널에서 UI로 추가Anaconda 미지원
Packages 패널에서 검색/추가pip install 또는 requirements.txt 사용
Snowflake PyPIAnaconda 대신 기본 PyPI 아티팩트 저장소 사용
EAI외부 PyPI 접근 시 External Access Integration 필요할 수 있음
Stage / .whl / Workspace 파일stage·whl·workspace 업로드 설치도 지원
패키지 유지 기간Kernel restart 시 변수 삭제
Service suspend 시 pip 패키지·변수 삭제
# 현재 컨테이너에 기본 설치된 패키지 목록
!pip list
# 또는
!pip freeze

# Workspace에서 패키지 설치
!pip install <package_name>

4. 실행 컨텍스트 (Database/Schema)

LegacyWorkspace
노트북 객체가 DB.Schema에 속함 → 자동 설정자동 설정 안 됨

노트북 상단에 반드시 추가:

USE DATABASE TESTDB;
USE SCHEMA PUBLIC;

또는 모든 테이블을 fully qualified name으로 참조:

SELECT * FROM testdb.public.my_table;

5. 셀 참조 방식

LegacyWorkspace
SQL 셀 이름으로 참조: S3.to_pandas()DataFrame 포인터로 참조: dataframe_1
Python 변수 Jinja: {{variable}}동일: {{variable}}
# Legacy
df = S3.to_pandas()

# Workspace
df = dataframe_1  # SQL 셀 결과는 자동으로 dataframe_N으로 할당

6. 스케줄링

LegacyWorkspace
EXECUTE NOTEBOOKEXECUTE NOTEBOOK PROJECT (NPO 기반)
노트북 객체 직접 실행Notebook Project Object 생성 후 실행
CREATE NOTEBOOK 권한CREATE NOTEBOOK PROJECT 권한

7. 협업 및 저장

LegacyWorkspace
노트북이 Schema 내 객체Workspace 파일시스템에 .ipynb로 저장
역할 기반 공유Shared Workspace 또는 Git-integrated Workspace
셀 출력 결과 저장되지 않음Export as HTML로 공유

8. 마이그레이션 방법

Snowflake에서 Bulk Migration 기능을 제공합니다:

  1. Projects > Notebooks (Legacy) 메뉴의 상단 배너에서 Migrate now 클릭
  2. 마이그레이션할 노트북 선택
  3. 대상 Workspace 선택 (Shared Workspace 권장)
  4. 마이그레이션 완료 후 Fix with Cortex Code 버튼으로 Streamlit 코드 자동 변환
  5. 스케줄이 있었다면 Reschedule tasks로 NPO 기반 재스케줄링

9. 기타

  • Jupyter magic: %run, %time, %autoreload 등 전면 지원
  • iPywidgets: Container Runtime 2.6+
  • Role / Warehouse picker 상단 배치 — Legacy 자동 컨텍스트와의 차이
  • Export as HTML (... 메뉴) + Export options
  • 2026년 4월 이후 신규 계정은 Legacy Notebook 생성 불가
  • Bulk Migration 후 Legacy Task는 명시적으로 reschedule/pause하기 전까지 계속 실행

Notebook Service와 Compute Pool

Snowflake Notebook 구성요소

Workspace Notebooks에서 Python 커널 코드는 Compute Pool 위의 Notebook Service(컨테이너)에서 실행되지만, SQL·Snowpark는 여전히 Query Warehouse로 pushdown됩니다.
이 구조를 이해하려면 세 가지 개념을 알아야 합니다

구성 요소설명
Compute PoolVM 노드들의 집합. 인프라 레이어에 해당하며, 노드의 사양(CPU/GPU, 메모리)과 최소/최대 개수를 정의합니다
Notebook ServiceCompute Pool의 노드 위에서 실행되는 컨테이너 환경. Python 커널, 설치된 패키지, 메모리 변수가 이 안에 존재합니다. 사용자별로 개인 서비스를 생성하며, 서비스 1개 = 노드 1개를 점유합니다.
Notebook실제 .ipynb 파일. 하나의 Notebook Service에 여러 노트북을 연결하여 동일한 커널 환경을 공유할 수 있습니다

아키텍처

  • Compute Pool 생성: 관리자가 노드 사양과 수를 정의하여 Pool을 만듭니다.
  • Notebook Service 생성: 사용자가 노트북에서 Connect 시 Notebook Service를 생성하며, Pool에서 노드 1개를 할당받습니다.
  • 노트북 연결: 생성한 Service에 여러 노트북을 연결할 수 있습니다. 연결된 노트북들은 동일한 Python 커널과 메모리를 공유합니다.
  • SQL 실행: 셀에서 SQL이나 Snowpark pushdown이 발생하면 별도의 Query Warehouse에서 처리됩니다.

Suspend 상태로 전환될 때의 변화

(1) Notebook Service가 suspend될 때

항목상태
Python 커널종료
메모리 변수 (df, model 등)삭제
pip install로 추가 설치한 패키지삭제
/tmp 디렉토리 파일삭제
터미널에서 생성한 파일삭제
Workspace에 저장된 .ipynb 파일유지
셀 코드 내용유지

(2) Compute Pool이 suspend될 때

항목상태
VM 노드모두 해제
그 위에 있던 모든 Notebook Service이미 종료된 상태 (Pool suspend 전에 Service가 먼저 종료됨)
크레딧 과금중지
Compute Pool 객체 자체유지 (설정, 이름 보존)

유휴시간 조정

Notebook Service Idle Timeout

  • 노트북 상단의 Connect버튼 옆에 아래 화살표 () 를 클릭
  • 노트북 서비스 이름 옆의 연필 아이콘 () 클릭
  • Idle timeout 값 변경
  • Save 클릭
    • Notebook Service Idle Timeout은 UI에서만 설정 가능
      NotebookServiceIdleTimeout

Compute Pool Auto-Suspend

  • Manage > Compute > Compute Pools 로 이동
  • 대상 Compute Pool 선택
    • 예시에서는 DS_NOTEBOOK_POOL 선택
      ComputePools
  • 우측 상단의 ... 아이콘을 클릭해 Edit 메뉴 선택
  • Advanced Options 안에서 Auto suspend 값 설정
  • Save compute pool 클릭
    • 다음과 같이 쿼리로도 설정 가능
      -- 초 단위로 설정 
      ALTER COMPUTE POOL DS_NOTEBOOK_POOL SET AUTO_SUSPEND_SECS = 3600;
      -- 현재 설정 확인
      DESCRIBE COMPUTE POOL DS_NOTEBOOK_POOL;
      
    • Idle Timeout이 줄어들수록 Compute 사용 비용을 절감할 수 있으나, 너무 짧은 Idle Timeout은 노트북 실행 시점에 활성화 시간이 오버헤드로 작용할 수 있습니다.
profile
Snowflake Korea SE

0개의 댓글