Main Quest - Snowflake/비용 관리 | 거버넌스
무엇보다 중요한 $ : Cost Monitoring
포스 삼촌
2026. 7. 7. 22:24
조직에서 무엇보다 중요한 것은 비용 관리겠져, 나연 대표님?
Snowflake에서 비용을 발생하는 SERVICE_TYPE을 아래와 같이 나눠서 관리할 거에요.
| 일반 | WAREHOUSE_METERING | 가상 웨어하우스의 쿼리 실행 컴퓨트 비용. SELECT, INSERT, COPY 등 모든 SQL 실행 시 발생. 웨어하우스 크기(XS~6XL)와 가동 시간에 비례 |
| 일반 | SNOWPARK_CONTAINER_SERVICES | Snowpark Container Services 비용. Container Runtime 기반 Streamlit 앱, 노트북, 커스텀 서비스가 Compute Pool 위에서 실행될 때 노드 수 × 가동 시간으로 과금 |
| AI | CORTEX_CODE | Cortex Code(CoCo) AI 코딩 어시스턴트 사용량. Snowsight 웹, Desktop 확장, CLI 세 가지 환경 모두 포함. LLM모델별 토큰 소비량 기준 과금 |
| AI | AI_SERVICES | Cortex AI Functions 호출 비용. AI_COMPLETE, AI_EXTRACT, AI_CLASSIFY, AI_SUMMARIZE 등 SQL 함수 호출 시 입출력 토큰 기준 과금 |
| AI | SNOWFLAKE_INTELLIGENCE | Snowflake CoWork (자연어 데이터 질의) 사용량. 사용자가 자연어로 질문하면 내부적으로 LLM이 오케스트레이션, SQL을 생성·실행하며, LLM모델별 토큰 소비량 기준 과금 |
| AI | CORTEX_AGENTS | Cortex Agents API 호출 비용. 에이전트가 오케스트레이션(계획 수립) + 각 도구(Analyst, Search, Python 등) 호출 시 발생하는 토큰의 합산 |
| AI | CORTEX_SEARCH | Cortex Search Service 비용. 벡터 인덱스 구축(인덱싱)과 검색 질의(서빙) 두 가지로 분리 과금. 서비스가 활성 상태인 동안 지속 발생 |
| 일반 | ETC | 위 7개 외 기타 서비스. TRUST_CENTER(보안 스캐너), SERVERLESS_TASK, AUTO_CLUSTERING, COPY_FILES, PIPE 등 소량 비용을 통합 분류 |

Streamlit 앱별 비용 분류 가능 여부
SERVICE_TYPE앱별 분류방법비고
| WAREHOUSE_METERING | ✅ 가능 | QUERY_HISTORY → QUERY_TAG의 StreamlitName 필드 | 실행시간 기반 크레딧 추정 |
| CORTEX_SEARCH | ✅ 가능 | DB_HDC_OPS.COST.APP_SERVICE_MAPPING 매핑 테이블 | 이미 구축됨 |
| AI_SERVICES | ✅ 가능 | QUERY_HISTORY → QUERY_TAG + QUERY_TYPE 조합 | 앱 내 AI 호출도 태깅됨 |
| CORTEX_AGENTS | ⚠️ 간접 가능 | QUERY_TAG에 agent 호출 기록될 경우 | 확인 필요 |
| SNOWPARK_CONTAINER_SERVICES | ❌ 불가 | METERING_DAILY_HISTORY에 앱별 구분 컬럼 없음 | 계정 전체 합산만 |
| SNOWFLAKE_INTELLIGENCE | ❌ 불가 | 앱 연결 식별자 없음 | |
| CORTEX_CODE | ❌ 해당없음 | Streamlit과 무관 |
핵심 데이터 소스
1. QUERY_HISTORY (앱별 분류의 핵심)
- Streamlit 앱 실행 시 자동으로 QUERY_TAG에 JSON 설정됨
- 태그 형식: {"StreamlitEngine":"ExecuteStreamlit","StreamlitName":"DB.SCHEMA.APP_NAME"}
- QUERY_TYPE = EXECUTE_STREAMLIT으로 기록됨
2. METERING_DAILY_HISTORY (앱별 분류 불가)
- 계정 전체 SERVICE_TYPE별 일별 크레딧 총합만 제공
- 앱명, 엔티티ID 등 연결 식별자 없음
- 컬럼: SERVICE_TYPE, USAGE_DATE, CREDITS_USED_COMPUTE, CREDITS_USED_CLOUD_SERVICES, CREDITS_USED, CREDITS_BILLED
3. QUERY_ATTRIBUTION_HISTORY (제한적)
- 100ms 미만 쿼리 제외
- 서버리스/에이전트 웨어하우스(WH_AGENT 등) 크레딧 미기록
- DX_PORTAL 앱: 0건 (모두 WH_AGENT_XS에서 실행됨)
4. APP_SERVICE_MAPPING (커스텀)
- Cortex Search 서비스 → Streamlit 앱 매핑
- SERVICE_TYPE, SERVICE_NAME, STREAMLIT_NAME 컬럼
더 고민해보면 좋을 것들
- SPCS 비용 분리 불가 — Streamlit 런타임 자체의 컨테이너 비용은 앱별 구분 불가
- Agent 내부 호출 추적 — 앱에서 Cortex Agent를 호출할 때 별도 QUERY_TAG가 생성되는지 추가 확인 필요
- APP_SERVICE_MAPPING 확장 — AI_FUNCTIONS, CORTEX_AGENTS 등도 매핑 테이블에 추가하면 종합 비용 추적 가능
배경
- 2026년 4월 Snowflake AI 크레딧 단가 인하(4.05 → 2.00) 반영 필요
- 기존 WH Runtime 앱을 Container Runtime으로 마이그레이션
주요 변경
1. Container Runtime 전환
- get_active_session() → st.connection("snowflake") 방식으로 변경
- st.set_page_config()을 최상단으로 이동 (Container Runtime 필수)
2. AI/Compute 크레딧 단가 분리
- AI 서비스(Code, AI Functions, Agents, Intelligence, Search): $2.00
- Compute 서비스(Warehouse, SPCS, ETC): $4.05
- 2026.04 기준 분기 로직 적용 (이전 월은 전부 $4.05)
- 환율은 사이드바에서 동적 입력
3. 데이터 파이프라인 수정
- SP_LOAD_CORTEX_USAGE 프로시저의 METERING 수집을 INSERT → MERGE로 변경
- ACCOUNT_USAGE 값이 사후 갱신되는 문제 해소 (과거 월 정합성 확보)
- CORTEX_CODE_DESKTOP_USAGE, CORTEX_CODE_CLI_USAGE 테이블 및 수집 추가
- 검증: 원본(ACCOUNT_USAGE) vs OPS 복사본 일치 확인 완료