Legacy Notebook과 Workspace Notebook의 차이
1. 컴퓨트 환경
| 항목 | Legacy | Workspace | 체크리스트 |
|---|
| 런타임 | Warehouse 또는 Container Runtime 선택 | Container Runtime만 사용 | Warehouse Runtime 코드 호환 확인 |
| Python 버전 | 3.9 / 3.10 | 3.10 ~ 3.12 (3.9 미지원) | 3.9 전용 문법/패키지 확인 |
| 웨어하우스 | Notebook 실행 + SQL 모두 처리 | SQL/Snowpark pushdown 전용 (Query Warehouse) | 역할 분리 인지 |
2. 시각화
| Legacy | Workspace |
|---|
st. (Streamlit) 사용 가능 | Streamlit 미지원 |
st.dataframe(), st.bar_chart() 등 | matplotlib, seaborn, plotly, altair로 대체 |
import streamlit as st
st.bar_chart(df)
%matplotlib inline
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
df.plot.bar(ax=ax)
display(fig)
plt.close(fig)
3. 패키지 관리
| Legacy | Workspace |
|---|
| Anaconda 채널에서 UI로 추가 | Anaconda 미지원 |
| Packages 패널에서 검색/추가 | pip install 또는 requirements.txt 사용 |
| Snowflake PyPI | Anaconda 대신 기본 PyPI 아티팩트 저장소 사용 |
| EAI | 외부 PyPI 접근 시 External Access Integration 필요할 수 있음 |
| Stage / .whl / Workspace 파일 | stage·whl·workspace 업로드 설치도 지원 |
| 패키지 유지 기간 | Kernel restart 시 변수 삭제 |
| Service suspend 시 pip 패키지·변수 삭제 |
!pip list
!pip freeze
!pip install <package_name>
4. 실행 컨텍스트 (Database/Schema)
| Legacy | Workspace |
|---|
| 노트북 객체가 DB.Schema에 속함 → 자동 설정 | 자동 설정 안 됨 |
노트북 상단에 반드시 추가:
USE DATABASE TESTDB;
USE SCHEMA PUBLIC;
또는 모든 테이블을 fully qualified name으로 참조:
SELECT * FROM testdb.public.my_table;
5. 셀 참조 방식
| Legacy | Workspace |
|---|
SQL 셀 이름으로 참조: S3.to_pandas() | DataFrame 포인터로 참조: dataframe_1 |
Python 변수 Jinja: {{variable}} | 동일: {{variable}} |
df = S3.to_pandas()
df = dataframe_1
6. 스케줄링
| Legacy | Workspace |
|---|
EXECUTE NOTEBOOK | EXECUTE NOTEBOOK PROJECT (NPO 기반) |
| 노트북 객체 직접 실행 | Notebook Project Object 생성 후 실행 |
CREATE NOTEBOOK 권한 | CREATE NOTEBOOK PROJECT 권한 |
7. 협업 및 저장
| Legacy | Workspace |
|---|
| 노트북이 Schema 내 객체 | Workspace 파일시스템에 .ipynb로 저장 |
| 역할 기반 공유 | Shared Workspace 또는 Git-integrated Workspace |
| 셀 출력 결과 저장되지 않음 | Export as HTML로 공유 |
8. 마이그레이션 방법
Snowflake에서 Bulk Migration 기능을 제공합니다:
- Projects > Notebooks (Legacy) 메뉴의 상단 배너에서
Migrate now 클릭
- 마이그레이션할 노트북 선택
- 대상 Workspace 선택 (Shared Workspace 권장)
- 마이그레이션 완료 후
Fix with Cortex Code 버튼으로 Streamlit 코드 자동 변환
- 스케줄이 있었다면
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 Pool | VM 노드들의 집합. 인프라 레이어에 해당하며, 노드의 사양(CPU/GPU, 메모리)과 최소/최대 개수를 정의합니다 |
| Notebook Service | Compute 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에서만 설정 가능

Compute Pool Auto-Suspend
- Manage > Compute > Compute Pools 로 이동
- 대상 Compute Pool 선택
- 예시에서는 DS_NOTEBOOK_POOL 선택

- 우측 상단의
... 아이콘을 클릭해 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은 노트북 실행 시점에 활성화 시간이 오버헤드로 작용할 수 있습니다.