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 컬럼

 

더 고민해보면 좋을 것들

  1. SPCS 비용 분리 불가 — Streamlit 런타임 자체의 컨테이너 비용은 앱별 구분 불가
  2. Agent 내부 호출 추적 — 앱에서 Cortex Agent를 호출할 때 별도 QUERY_TAG가 생성되는지 추가 확인 필요
  3. 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 복사본 일치 확인 완료