Snowflake가 저장소와 컴퓨트 분리를 대중화한 방식, 그것이 확장성과 비용 트레이드오프를 어떻게 바꿨는지, 그리고 속도만큼이나 생태계가 왜 중요한지를 알아봅니다.

Snowflake는 클라우드 데이터 웨어하우징에서 단순하지만 영향력 큰 아이디어를 대중화했습니다: 데이터 저장소와 쿼리 컴퓨트를 분리하라. 이 분리는 데이터 팀의 일상적 문제 두 가지—웨어하우스의 확장 방식과 비용 지불 방식—을 바꿉니다.
하나의 고정된 ‘상자’(더 많은 사용자, 더 많은 데이터, 더 복잡한 쿼리가 모두 같은 자원을 두고 경쟁하는 환경)처럼 웨어하우스를 다루는 대신, Snowflake 모델은 데이터를 한 번만 저장하고 필요할 때 적절한 컴퓨트를 띄우도록 합니다. 결과는 종종 더 빠른 응답 시간, 피크 사용 시 병목 감소, 그리고 비용이 언제 어떻게 발생하는지에 대한 명확한 통제입니다.
이 글은 저장소와 컴퓨트를 분리한다는 것이 실제로 무엇을 의미하는지, 그리고 그것이 다음에 어떤 영향을 주는지 평이한 언어로 설명합니다:
또한 이 모델이 모든 문제를 마법처럼 해결하지는 않는다는 점도 지적합니다—일부 비용과 성능의 놀라움은 플랫폼 자체가 아니라 워크로드 설계에서 옵니다.
빠른 플랫폼이 전부는 아닙니다. 많은 팀에겐 가치 실현 시간(time-to-value)이 웨어하우스를 기존 툴(ETL/ELT 파이프라인, BI 대시보드, 카탈로그/거버넌스 툴, 보안 제어, 파트너 데이터 소스)과 얼마나 쉽게 연결할 수 있는지에 달려 있습니다.
Snowflake의 생태계(데이터 공유 패턴과 마켓플레이스식 배포 포함)는 구현 기간을 단축하고 맞춤 엔지니어링을 줄여줍니다. 이 글은 실무에서 ‘생태계의 깊이’가 어떤 모습인지, 조직에 맞게 어떻게 평가할지 다룹니다.
이 가이드는 데이터 리더, 분석가, 비전문 의사결정자를 위해 씌어졌습니다—판매사 홍보 문구에 파묻히지 않고 Snowflake 아키텍처, 확장, 비용, 통합 선택의 트레이드오프를 이해해야 하는 사람들을 위한 글입니다.
전통적 데이터 웨어하우스는 하나의 단순한 가정 위에서 만들어졌습니다: 고정된 하드웨어 용량을 구매(또는 임대)한 뒤 모든 것을 그 상자나 클러스터에서 실행한다는 것. 워크로드가 예측 가능하고 성장 속도가 완만할 때는 잘 동작했지만, 데이터 양과 사용자 수가 급증하면 구조적 한계가 생겼습니다.
온프레미스 시스템(및 초기 클라우드 ‘리프트 앤 시프트’)은 보통 다음과 같았습니다:
벤더가 ‘노드’를 제공해도 핵심 패턴은 동일하게 남았습니다: 확장은 보통 더 크거나 더 많은 노드를 하나의 공유 환경에 추가하는 방식이었습니다.
이 설계는 몇 가지 공통된 골칫거리를 만듭니다:
이 웨어하우스들은 환경에 강하게 결합되어 있었기 때문에 통합도 유기적으로 자라났습니다: 커스텀 ETL 스크립트, 수작업 커넥터, 일회성 파이프라인 등. 작동은 했지만, 스키마가 바뀌거나 상류 시스템이 이동하거나 새 툴이 도입되면 금방 문제가 생겼습니다. 유지보수는 점진적 진전이 아니라 항시 관리처럼 느껴졌습니다.
전통적 데이터 웨어하우스는 종종 두 가지 전혀 다른 역할을 결합합니다: **스토리지(데이터가 저장되는 곳)**와 컴퓨트(데이터를 읽고, 조인하고, 집계하고, 결과를 만드는 연산 자원).
저장소는 장기 보관 식료품 저장고와 같습니다: 테이블, 파일, 메타데이터가 안전하고 비용 효율적으로 보관되며 내구성 있고 항상 사용 가능하도록 설계됩니다.
컴퓨트는 주방 스태프와 같습니다: 쿼리를 ‘요리’하는 CPU와 메모리의 집합으로, SQL을 실행하고 정렬, 스캔, 결과 생성, 다중 사용자 동시 처리 등을 담당합니다.
Snowflake는 이 둘을 분리하여 하나를 바꾸기 위해 다른 하나를 강제로 바꿀 필요가 없게 합니다.
실무적으로 이는 일상 운영을 바꿉니다: 저장소가 커졌다고 컴퓨트를 과다 구매할 필요가 없고, 워크로드를 분리해(예: 분석가 vs ETL) 서로를 느리게 하지 않게 할 수 있습니다.
이 분리는 강력하지만 마법은 아닙니다.
가치는 통제에 있습니다: 저장소와 컴퓨트를 각자의 관점에서 지불하고 팀의 실제 필요에 맞춰 매칭하는 것입니다.
Snowflake는 세 개의 레이어로 보면 이해하기 쉽고, 이 레이어들은 함께 작동하지만 독립적으로 확장됩니다.
테이블은 궁극적으로 클라우드 제공자의 오브젝트 스토리지(S3, Azure Blob, GCS 등)에 데이터 파일로 보관됩니다. Snowflake가 파일 포맷, 압축, 조직을 관리합니다. 디스크를 ‘붙인다’거나 저장소 볼륨을 사이즈링할 필요가 없고, 데이터가 늘면 스토리지가 함께 늘어납니다.
컴퓨트는 가상 웨어하우스로 포장됩니다: 쿼리를 실행하는 독립적인 CPU/메모리 클러스터입니다. 동일한 데이터에 대해 여러 웨어하우스를 동시에 실행할 수 있습니다. 이것이 이전 시스템과의 핵심 차이점으로, 무거운 워크로드가 동일한 자원 풀을 두고 경쟁하는 일을 피할 수 있게 합니다.
별도의 서비스 레이어가 시스템의 ‘두뇌’를 담당합니다: 인증, 쿼리 파싱 및 최적화, 트랜잭션/메타데이터 관리, 조정 등. 이 레이어는 컴퓨트가 데이터에 접근하기 전에 쿼리를 어떻게 효율적으로 실행할지 결정합니다.
SQL을 제출하면 Snowflake의 서비스 레이어가 이를 파싱하고 실행 계획을 만들고, 선택된 가상 웨어하우스에 그 계획을 전달합니다. 웨어하우스는 오브젝트 스토리지에서 필요한 데이터 파일만 읽고(캐싱을 활용할 수 있음), 처리한 뒤 결과를 반환합니다—기저 데이터를 웨어하우스에 영구적으로 옮기지는 않습니다.
많은 사용자가 동시에 쿼리하면 다음 중 하나를 선택할 수 있습니다:
이것이 Snowflake 성능과 ‘소음 이웃(noisy neighbor)’ 제어의 아키텍처적 기초입니다.
Snowflake의 큰 실용적 변화는 컴퓨트를 **데이터(스토리지)**와 독립적으로 확장한다는 것입니다. “웨어하우스가 커진다”는 대신, 워크로드별로 자원을 올리거나 내릴 수 있고—테이블 복사, 디스크 재파티셔닝, 다운타임 없이—이를 수행할 수 있습니다.
Snowflake에서 가상 웨어하우스는 쿼리를 실행하는 컴퓨트 엔진입니다. 웨어하우스는(예: Small에서 Large로) 몇 초 만에 리사이즈할 수 있고 데이터는 제자리에 남습니다. 따라서 성능 튜닝은 종종 간단한 질문이 됩니다: “이 워크로드에 지금 더 많은 연산 능력이 필요한가?”
또한 임시 버스트가 가능해져 월말 결산처럼 한 달 동안만 확장하고 스파이크가 끝나면 다시 줄이는 식으로 운영할 수 있습니다.
전통적 시스템은 서로 다른 팀이 같은 컴퓨트를 공유하게 만들어 바쁜 시간대에 대기열이 생기기 쉬웠습니다.
Snowflake는 팀이나 워크로드별로 별도 웨어하우스를 운영할 수 있게 해(예: 분석가용, 대시보드용, ETL용), 동일한 기저 데이터를 읽으면서 ‘네 대시보드가 네 보고서를 느리게 하는’ 문제를 줄이고 성능을 더 예측 가능하게 만듭니다.
탄력적 컴퓨트가 자동 성공을 보장하지는 않습니다. 흔한 함정은:
총체적으로: 확장과 동시성 관리는 인프라 프로젝트에서 일상 운영 결정으로 이동합니다.
Snowflake의 ‘사용한 만큼 지불’은 기본적으로 병렬로 작동하는 두 개의 미터와 같습니다:
이 분리가 절감이 가능한 지점입니다: 많은 데이터를 비교적 저렴하게 저장해두고, 컴퓨트는 필요할 때만 켜서 지불할 수 있습니다.
대부분의 ‘예상치 못한’ 지출은 스토리지보단 컴퓨트 행태에서 옵니다. 일반적 원인은:
스토리지와 컴퓨트 분리는 쿼리를 자동으로 효율적으로 만들지 않습니다—나쁜 SQL은 여전히 크레딧을 빨리 소모합니다.
재무 부서를 동원할 필요 없이 몇 가지 가드레일로 충분합니다:
적절히 사용하면 이 모델은 짧게 실행되는, 적정 사이즈의 컴퓨트와 예측 가능한 스토리지 증가를 장려합니다.
Snowflake는 공유를 수출, 파일 전달, 일회성 ETL 위에 덧붙이는 애프터마켓 기능으로 보지 않습니다. 공유를 플랫폼 설계의 일부로 취급합니다.
추출물을 여기저기 보내는 대신, Snowflake는 다른 계정이 안전한 ‘공유’를 통해 같은 기저 데이터를 쿼리하도록 허용할 수 있습니다. 많은 시나리오에서 데이터를 두 번째 웨어하우스에 복제하거나 다운로드용으로 오브젝트 스토리지에 밀어넣을 필요가 없습니다. 소비자는 공유된 데이터베이스/테이블을 로컬 것처럼 보게 되고, 제공자는 어떤 것을 노출할지 통제할 수 있습니다.
이 ‘디커플드’ 방식은 데이터 확산을 줄이고 접근 속도를 높이며 유지해야 할 파이프라인 수를 줄이는 데 유용합니다.
파트너·고객 공유: 벤더가 고객에게 큐레이션된 데이터셋(예: 사용 분석, 참조 데이터)을 발행할 수 있으며 허용된 스키마/테이블/뷰만 노출합니다.
내부 도메인 공유: 중앙 팀이 인증된 데이터셋을 제품/재무/운영팀에 노출해 각 팀이 별도 복사본을 만들지 않도록 합니다. 이는 ‘하나의 공식 수치’ 문화를 지원하면서도 각 팀이 자체 컴퓨트를 운영하도록 허용합니다.
거버넌스된 협업: 기관, 공급업체, 자회사와의 공동 프로젝트는 민감 컬럼을 마스킹하고 접근을 로깅하면서 공유 데이터로 작업할 수 있습니다.
공유가 ‘설정 후 방치’ 가능한 것은 아닙니다. 필요 항목은:
빠른 웨어하우스는 가치가 있지만, 프로젝트가 제때 배포되는지를 결정짓는 요인은 보통 그 주위의 생태계입니다: 기존 연결, 툴, 전문 지식이 맞춤 작업을 얼마나 줄여주는지.
실무적으로 생태계는 다음을 포함합니다:
벤치마크는 통제된 조건에서 좁은 성능 영역만 측정합니다. 실제 프로젝트는 대부분 시간을 다음에 씁니다:
플랫폼에 이러한 단계에 대한 성숙한 통합이 있다면, 글루 코드(연결 코드)를 만들고 유지보수하는 일을 피할 수 있어 구현 기간이 짧아지고 신뢰성이 좋아지며 공급자 전환 시 전면 재작성 필요성이 줄어듭니다.
생태계를 평가할 때 확인할 것:
성능은 능력을 주지만, 생태계는 그 능력을 비즈니스 성과로 전환하는 속도를 좌우합니다.
Snowflake는 빠른 쿼리를 실행할 수 있지만, 가치를 드러내는 건 데이터가 스택을 통해 신뢰성 있게 이동할 때입니다: 소스에서 Snowflake로, 다시 사람들이 매일 사용하는 툴로. ‘라스트 마일’이 플랫폼을 수월하게 느끼게 할지 끊임없이 불안정하게 느끼게 할지를 결정합니다.
대부분의 팀은 다음을 혼합해 필요로 합니다:
모든 ‘Snowflake 호환’ 툴이 동일하게 동작하지 않습니다. 평가 시 실무적 세부사항에 집중하세요:
통합은 Day-2 준비성도 필요합니다: 모니터링과 알림, 라인리지/카탈로그 훅, 사건 대응 워크플로(티케팅, 온콜, 런북). 강한 생태계는 더 많은 로고가 아니라 밤 2시에 파이프라인이 실패할 때 놀랄 일이 적은 것을 의미합니다.
팀이 커지면 분석의 가장 어려운 부분은 속도가 아니라 적절한 사람이 적절한 목적을 위해 적절한 데이터에 접근할 수 있게 하고, 통제가 작동한다는 증거를 남기는 일입니다. Snowflake의 거버넌스 기능은 많은 사용자, 많은 데이터 제품, 빈번한 공유라는 현실을 위해 설계되었습니다.
명확한 역할과 최소 권한(least-privilege) 사고방식으로 시작하세요. 개인에게 직접 권한을 주기보다 ANALYST_FINANCE나 ETL_MARKETING 같은 역할을 정의하고, 그 역할에 데이터베이스/스키마/테이블/뷰 접근을 부여합니다.
민감 필드(PII, 금융 식별자 등)는 마스킹 정책을 사용해 쿼리는 가능하지만 원문 값은 역할에 따라 보이지 않게 하세요. 이를 **감사(auditing)**와 결합하면 누가 언제 무엇을 쿼리했는지 추적할 수 있어 보안·컴플라이언스 팀이 추후 질문에 답하기 쉬워집니다.
좋은 거버넌스는 데이터 공유를 더 안전하고 확장 가능하게 만듭니다. 공유 모델이 역할, 정책, 감사된 접근에 기반하면 더 많은 사용자가 셀프서비스로 데이터를 탐색하게 허용하되 우발적 노출을 막을 수 있습니다.
또한 정책이 반복 가능한 통제로 바뀌어 규정 준수가 쉬워집니다. 프로젝트·부서·외부 파트너 전반에서 데이터셋이 재사용될 때 이 점이 중요합니다.
PROD_FINANCE, DEV_MARKETING, SHARED_PARTNER_X). 일관성은 리뷰 속도를 높이고 실수를 줄입니다.대규모 신뢰는 하나의 ‘완벽한’ 통제보다는 접근을 의도적이고 설명 가능하게 유지하는 작은 습관의 집합입니다.
Snowflake는 많은 사람과 툴이 동일한 데이터를 다양한 목적으로 쿼리할 때 빛을 발합니다. 컴퓨트가 독립적 ‘웨어하우스’로 패키지화되어 있으니 각 워크로드를 적절한 형태와 스케줄에 맞춰 매핑할 수 있습니다.
분석 및 대시보드: BI 툴은 안정적이고 예측 가능한 쿼리 볼륨에 맞게 전용 웨어하우스를 두세요. 이렇게 하면 대시보드 새로고침이 애드혹 탐색 때문에 느려지지 않습니다.
애드혹 분석: 분석가에게는 보통 소형 웨어하우스(종종 auto-suspend 설정)를 별도로 제공합니다. 빠른 반복을 하면서 유휴 시간에 대한 비용을 줄일 수 있습니다.
데이터 사이언스 및 실험: 무거운 스캔과 가끔 발생하는 버스트에 맞춘 웨어하우스를 사용하세요. 실험이 급증하면 일시적으로 확장하되 BI 사용자에 영향 주지 않게 하세요.
데이터 앱 및 임베디드 분석: 앱 트래픽은 운영 서비스처럼 취급하세요—별도 웨어하우스, 보수적인 타임아웃, 비용 서프라이즈를 막기 위한 리소스 모니터.
가벼운 내부 데이터 앱(예: Snowflake를 쿼리해 KPI를 보여주는 운영 포털)을 만들 때는 React + API 스캐폴드를 빠르게 생성하고 이해관계자와 반복하는 것이 빠른 경로입니다. Koder.ai 같은 플랫폼(챗을 통해 웹/서버/모바일 앱을 생성하는 vibe-coding 플랫폼)은 이러한 Snowflake 기반 앱을 빠르게 프로토타이핑하고, 운영 준비가 되면 소스 코드를 내보내는 데 도움이 될 수 있습니다.
간단한 규칙: 청중과 목적별로 웨어하우스를 분리(BI, ELT, 애드혹, ML, 앱). 여기에 좋은 쿼리 습관을 결합하세요—범용 SELECT *를 피하고, 가능한 한 빨리 필터링하고, 비효율적 조인을 주시하세요. 모델링 측면에서는 사람들이 어떻게 쿼리하는지에 맞춘 구조(종종 깔끔한 시맨틱 레이어나 정의된 마트)가 물리적 레이아웃 과도 최적화보다 효과적입니다.
Snowflake가 모든 것을 대체하지는 않습니다. 고처리량·저지연의 트랜잭션 작업(전형적 OLTP)에는 전문 DB가 더 적합하며, Snowflake는 분석, 리포팅, 공유, 다운스트림 데이터 제품에 사용되는 경우가 많습니다. 하이브리드 구성이 흔하며 실용적인 경우가 많습니다.
Snowflake 마이그레이션은 대개 단순한 ‘리프트 앤 시프트’가 아닙니다. 저장소/컴퓨트 분리는 사이징, 튜닝, 비용 지불 방식을 바꾸므로 사전 계획이 나중의 놀라움을 막습니다.
인벤토리로 시작하세요: 어떤 데이터 소스가 웨어하우스로 들어오는지, 어떤 파이프라인이 변환을 수행하는지, 어떤 대시보드가 이에 의존하는지, 각 항목의 소유자가 누구인지 파악합니다. 그런 다음 비즈니스 영향도와 복잡성에 따라 우선순위를 정합니다(예: 핵심 재무 리포팅을 먼저, 실험적 샌드박스는 나중).
다음으로 SQL과 ETL 로직을 변환합니다. 표준 SQL은 대부분 이전되지만 함수, 날짜 처리, 절차식 코드, 임시 테이블 패턴 등은 종종 재작성해야 합니다. 결과를 조기 검증하세요: 병렬 출력 실행, 행수·집계 비교, 엣지 케이스(널, 타임존, 중복 로직) 확인. 마지막으로 컷오버 계획: 변경 금지 창, 롤백 경로, 각 데이터셋/리포트의 ‘완료 정의’.
숨겨진 의존성이 가장 흔합니다: 스프레드시트 추출, 하드코딩된 연결 문자열, 아무도 기억 못하는 다운스트림 잡 등. 성능 놀라움은 이전 튜닝 가정이 통하지 않을 때 발생합니다(예: 작은 웨어하우스를 과도하게 사용하거나 동시성을 고려하지 않은 많은 작은 쿼리). 비용 급증은 웨어하우스 방치, 통제되지 않은 재시도, 중복된 dev/test 워크로드에서 옵니다. 권한 간극은 거칠게 부여된 권한에서 더 세분화된 거버넌스로 마이그레이션할 때 드러납니다—테스트에는 최소 권한 사용자 실행을 포함하세요.
소유권 모델(데이터, 파이프라인, 비용 누가 소유할지)을 설정하고, 분석가와 엔지니어를 위한 역할 기반 교육을 제공하며 컷오버 후 첫 몇 주의 지원 계획(온콜 로테이션, 사고 런북, 이슈 보고 장소)을 정의하세요.
현대 데이터 플랫폼 선택은 단순한 벤치마크 최고 속도 문제가 아닙니다. 플랫폼이 실제 워크로드, 팀의 작업 방식, 이미 의존하는 툴에 맞는지가 핵심입니다.
다음 질문을 후보군 선정과 벤더 대화에 활용하세요:
두세 개의 대표 데이터셋을 선택하세요(대형 팩트, 지저분한 반구조화, 비즈니스 핵심 도메인).
그런 다음 실제 사용자 쿼리를 실행합니다: 아침 피크 대시보드, 분석가 탐색, 스케줄 로드, 몇 건의 최악의 조인 쿼리 등. 추적할 항목: 쿼리 시간, 동시성 행동, 수집 시간, 운영 노력, 워크로드별 비용.
평가에 ‘사용 가능한 무언가를 얼마나 빨리 배포할 수 있나’가 포함된다면 파일럿에 내부 메트릭 앱이나 거버넌된 데이터 요청 워크플로 같은 작은 산출물을 추가하세요. 얇은 앱 레이어를 만드는 것이 통합·보안 실무를 벤치마크보다 빠르게 드러냅니다. Koder.ai 같은 도구는 챗을 통해 앱 구조를 생성하고 소스 코드를 내보내 프로토타입을 가속화하는 데 도움이 될 수 있습니다.
비용 산정과 옵션 비교 지원이 필요하면 /pricing에서 시작하세요.
마이그레이션과 거버넌스 안내가 필요하면 관련 글을 /blog에서 찾아보세요.
Snowflake는 데이터를 클라우드 오브젝트 스토리지에 저장하고, 쿼리는 가상 웨어하우스(virtual warehouses)라 불리는 별도의 컴퓨트 클러스터에서 실행합니다. 저장소와 컴퓨트가 분리되어 있기 때문에 기저 데이터를 이동하거나 복제하지 않고도 컴퓨트를 위아래로 조정하거나(스케일 업/다운), 추가 웨어하우스를 늘릴 수 있습니다.
리소스 경합을 줄입니다. 서로 다른 워크로드를 별도의 가상 웨어하우스에 배치(예: BI vs ETL)하거나, 수요 급증 시 컴퓨트를 늘리는 멀티클러스터 웨어하우스를 사용하면 전통적 MPP 환경에서 발생하던 단일 클러스터 큐잉 문제를 피할 수 있습니다.
자동으로 비용을 줄여주진 않습니다. 탄력적 컴퓨트는 ‘통제력’을 제공합니다만, 다음과 같은 가드레일이 필요합니다:
나쁜 SQL, 빈번한 대시보드 새로고침, 항상 켜져 있는 웨어하우스는 여전히 많은 컴퓨트 비용을 발생시킬 수 있습니다.
대체로 두 가지 주요 항목으로 청구됩니다:
이 구분 덕분에 지금 당장 비용을 발생시키는 것은 컴퓨트, 시간이 지남에 따라 증가하는 비용은 스토리지로 파악하기 쉽습니다.
대부분의 비용 서프라이즈는 데이터 크기 자체보다 운영 행태에서 옵니다:
간단한 통제(자동 일시중지, 리소스 모니터, 스케줄링)만으로도 상당한 비용 절감 효과를 얻을 수 있습니다.
‘콜드 스타트’는 일시중지된 웨어하우스가 다시 시작되어 쿼리/작업을 실행할 준비가 될 때까지 지연되는 현상입니다. 빈번하지 않은 워크로드에서는 자동 일시중지로 비용을 절감할 수 있지만, 유휴 후 첫 쿼리에 소폭의 지연이 추가될 수 있습니다. 사용자 대면 대시보드는 잦은 suspend/resume 대신 안정적인 전용 웨어하우스를 고려하세요.
가상 웨어하우스는 SQL을 실행하는 독립적 컴퓨트 클러스터입니다. 팀은 보통 다음과 같이 웨어하우스를 분리해 사용합니다:
이렇게 하면 성능을 격리하고 비용 소유권을 명확히 할 수 있습니다.
대부분의 경우 가능합니다. Snowflake의 공유 기능은 다른 계정이 여러분이 노출한 테이블/뷰를 쿼리하도록 허용할 수 있습니다(파일로 추출하거나 오브젝트 스토리지로 밀어넣을 필요 없음). 다만 공유를 안전하게 유지하려면 소유권 명확화, 접근 리뷰, 민감 데이터 정책 등 강력한 거버넌스가 필요합니다.
배포 시간은 대개 벤치마크보다 통합과 운영 작업에 좌우됩니다. 강력한 생태계는 맞춤 엔지니어링을 줄여주는데 기여합니다:
이런 요소들이 구현 시기 단축과 운영 부담 감소에 더 큰 영향을 줍니다.
실무형 파일럿(보통 2–4주)을 권합니다:
비용 추정이 필요하면 /pricing을 시작점으로, 마이그레이션·거버넌스 가이드는 /blog를 참고하세요.