![]()
어느 날 갑자기 청구서가 3배로 뛰었다면
월 50만 원이던 데이터 웨어하우스 비용이 갑자기 150만 원으로 치솟는 경험. 클라우드 데이터 분석 팀이라면 한 번쯤 겪는 악몽이다. 문제는 어디서 비용이 새는지 찾기가 쉽지 않다는 점이다. 쿼리가 잘못된 건지, 스토리지가 불어난 건지, 아니면 예약 용량이 만료된 건지 원인이 복합적으로 얽혀 있기 때문이다.
이 글은 BigQuery, Redshift, Snowflake 세 플랫폼에서 비용이 폭증했을 때 원인을 빠르게 찾아내는 체크리스트와, 같은 일이 반복되지 않도록 과금 모니터링을 설정하는 실전 가이드다. 끝까지 읽으면 비용 이상 징후를 당일 안에 감지하고, 원인을 30분 안에 진단하는 체계를 갖출 수 있다.
비용 폭증 원인 진단, 어떤 기준으로 비교해야 할까
세 플랫폼의 과금 구조가 다른 이유
BigQuery는 스캔한 데이터 양으로, Redshift는 클러스터 가동 시간으로, Snowflake는 크레딧 소비량으로 과금한다. 같은 “비용 폭증”이라도 원인 진단 방법이 완전히 다르다. 물탱크에 비유하면 BigQuery는 수도꼭지를 몇 번 틀었느냐, Redshift는 수도관 굵기를 얼마로 깔았느냐, Snowflake는 물을 얼마나 빨리 뽑아 썼느냐의 차이다.
비교 기준은 크게 네 가지로 나뉜다.
- 컴퓨팅 비용: 쿼리 실행에 드는 연산 비용
- 스토리지 비용: 데이터 저장 용량에 따른 비용
- 네트워크 비용: 리전 간 데이터 전송 비용 (의외로 이 항목에서 새는 경우가 많다)
- 부가 서비스 비용: 스트리밍 삽입, 머신러닝 추론, 데이터 공유 등
각 플랫폼의 과금 구조별 핵심 차이점을 먼저 이해해 두면 진단 속도가 훨씬 빨라진다.
BigQuery·Redshift 비용 폭증 원인 체크리스트
BigQuery에서 흔히 발생하는 비용 누수 5가지
실제 적용 사례를 살펴보면, BigQuery 비용 폭증의 80% 이상이 다음 다섯 가지 중 하나에 해당한다.
- SELECT * 남용: 파티션이 있어도 전체 컬럼을 스캔하면 소용없다. 필요한 컬럼만 지정했는지 확인
- 파티션 필터 누락: WHERE절에 파티션 키가 빠지면 전체 테이블 스캔이 발생한다.
require_partition_filter옵션을 켜두면 실수를 원천 차단할 수 있다 - 구체화된 뷰 미사용: 반복 쿼리를 매번 풀스캔으로 돌리는 것은 같은 택시 요금을 매일 내는 것과 같다
- 스트리밍 삽입 과다:
insertAllAPI는 건당 과금된다. 배치 로드로 전환하면 이 비용이 0원에 가까워진다 - 슬롯 예약 미적용: 온디맨드 과금 상태에서 분석량이 일정 수준을 넘으면 정액제(에디션)가 유리해지는 손익분기점이 존재한다
Redshift에서 놓치기 쉬운 비용 함정
Redshift는 클러스터가 켜져 있는 동안 계속 과금된다. 많은 사람이 처음에는 이 사실을 간과한다.
- 유휴 클러스터 방치: 개발·테스트용 클러스터를 퇴근 후에도 켜두면 하루 비용의 60%가 낭비된다
- 노드 타입 미스매치: 스토리지 중심 워크로드에 컴퓨팅 최적화 노드를 쓰면 비용 대비 성능이 급락한다
- Redshift Spectrum 과다 사용: S3 스캔량 기반 과금이므로 BigQuery와 동일한 스캔 최적화가 필요하다
- 동시성 스케일링 설정을 점검하지 않으면 피크 타임에 추가 클러스터가 자동 생성되며 비용이 급등한다

Snowflake 비용 진단과 과금 모니터링 설정 방법
크레딧 소비를 잡아먹는 주범들
Snowflake의 비용 구조는 웨어하우스 크기와 가동 시간의 곱으로 결정된다. X-Small 웨어하우스를 1시간 돌리면 1크레딧, X-Large는 같은 시간에 16크레딧을 소비한다. 16배 차이다.
- 웨어하우스 자동 중지 미설정: 기본값이 10분인데, 이를 1분으로 줄이면 유휴 비용을 대폭 절감할 수 있다
- 웨어하우스 크기 과잉: “혹시 느릴까 봐” Large로 올려놓고 방치하는 사례가 흔하다. Snowflake 공식 문서에서는 Small부터 시작해 점진적으로 올리는 방법을 권장한다
- 클론 테이블 남용: 제로카피 클론은 스토리지 비용이 없다고 알려져 있지만, 클론 후 데이터를 수정하면 별도 스토리지가 발생한다
리소스 모니터로 자동 차단 설정하기
RESOURCE MONITOR는 Snowflake에서 제공하는 비용 안전장치다. 월 크레딧 상한을 설정하면 일정 비율 도달 시 알림을 보내거나, 쿼리를 자동 중단시킬 수 있다.
실전 팁: 모니터 임계값을 75%, 90%, 100% 세 단계로 설정하는 것을 추천한다. 75%에서 경고 알림, 90%에서 신규 쿼리 차단, 100%에서 전체 중지가 가장 안정적인 구성이다.
BigQuery에서도 유사하게 커스텀 할당량을 설정할 수 있다. 프로젝트별 또는 사용자별 일일 스캔량 상한을 지정하면 예상치 못한 비용 폭증을 막을 수 있다. Redshift의 경우 AWS CloudWatch에서 CPUUtilization, QueryDuration 등의 지표에 경보를 걸어 이상 징후를 감지한다.

비용 이상 징후, 어떤 상황에서 어떤 도구를 써야 할까
워크로드 유형별 모니터링 전략
“모니터링을 설정했는데도 비용이 줄지 않아요.” 이런 질문이 나오는 이유는 도구만 설치하고 대응 프로세스를 만들지 않았기 때문이다. 모니터링은 감지 → 진단 → 조치의 3단계가 한 세트로 움직여야 한다.
- 배치 분석 중심: 야간에 대량 쿼리를 돌리는 환경이라면 일 단위 비용 추이 대시보드가 핵심이다. BigQuery의 INFORMATION_SCHEMA.JOBS 뷰, Snowflake의 QUERY_HISTORY 함수를 활용해 일별 비용 상위 쿼리 10개를 자동 추출하는 것이 효과적이다
- 실시간 대시보드 중심: BI 도구 사용자가 많은 환경에서는 동시 쿼리 수와 큐 대기 시간을 감시해야 한다. Redshift의 WLM 큐 설정, Snowflake의 멀티클러스터 웨어하우스 설정이 여기에 해당한다
- 데이터 파이프라인 중심: ETL/ELT 파이프라인 실패 후 재시도가 반복되면 비용이 눈덩이처럼 불어난다. 파이프라인 실패율 모니터링을 비용 모니터링과 연동해야 한다
알림 채널과 에스컬레이션 규칙
알림이 Slack 채널에 쌓이기만 하고 아무도 안 보는 상황은 모니터링이 없는 것과 같다. 일일 비용 10% 초과 시 담당자에게 DM, 30% 초과 시 팀 리더에게 전화 알림처럼 단계별 에스컬레이션 규칙을 정해두면 실효성이 올라간다.
클라우드 데이터 웨어하우스 비용 관리, 최종 선택 가이드
플랫폼별 핵심 진단 포인트 요약
세 플랫폼의 비용 진단 체크리스트를 한 장에 정리하면 다음과 같다.
- BigQuery: 스캔량 확인 → 파티션/클러스터링 적용 여부 → 온디맨드 vs 에디션 비교 → 스트리밍 삽입 비율 점검
- Redshift: 클러스터 가동률 확인 → 유휴 시간 비율 → 노드 타입 적정성 → Spectrum 사용량 점검
- Snowflake: 웨어하우스별 크레딧 소비 확인 → 자동 중지 설정 → 리소스 모니터 임계값 → Time Travel 스토리지 점검
어떤 플랫폼을 쓰든 공통적으로 적용할 수 있는 원칙이 있다. 첫째, 비용 태깅을 통해 팀·프로젝트·파이프라인별로 비용을 분리 추적하라. 둘째, 주 1회 비용 리뷰 미팅을 운영하라. 셋째, 파티셔닝과 클러스터링 설정은 비용 절감의 기본 중 기본이니 반드시 적용하라.
모든 조직에 동일한 최적화 전략이 통하지는 않는다. 데이터 규모가 수 TB 이하인 소규모 팀이라면 정교한 모니터링보다 쿼리 습관 개선이 더 효과적일 수 있다. 비용 최적화에 투입하는 시간 자체도 비용이라는 점을 기억하자.
정리하며
클라우드 데이터 웨어하우스 비용 관리의 핵심은 세 가지다. 플랫폼별 과금 원리를 정확히 이해할 것, 비용 상한과 알림을 반드시 설정할 것, 그리고 감지-진단-조치의 대응 프로세스를 갖출 것.
오늘 당장 할 수 있는 첫 번째 행동은 지금 쓰는 플랫폼의 비용 대시보드에 접속해서 최근 30일간 비용 상위 쿼리 5개를 뽑아보는 것이다. 거기서 비용 누수의 실마리가 보이기 시작한다.