NYC Taxi Snowflake 마이그레이션 랩
프로덕션 형태의 Snowflake 워크로드를 ClickHouse Cloud로 마이그레이션한다 — 5천만 행, dbt Medallion 파이프라인, 7개의 분석 쿼리, 라이브 프로듀서, BI 대시보드 — 그리고 자신의 결정을 방어한다.
NYC Taxi Snowflake 마이그레이션 랩 플레이북에 온 것을 환영한다. 이 랩은 프로덕션급 Snowflake 워크로드를 ClickHouse Cloud로 마이그레이션하는 방법을 배우는 ClickHouse 솔루션 아키텍트와 파트너를 위한 것이다. 대상은 5천만 행 규모의 합성 NYC 택시 승차 스트림, 완전한 Medallion dbt 파이프라인, 7개의 복잡한 분석 쿼리, 라이브 데이터 프로듀서, 그리고 Superset 대시보드로, 실제 고객 프로젝트에서 마주칠 워크로드를 시뮬레이션하도록 만들어졌다.
이 워크샵이 필요한 이유
이 랩의 목적은 한 웨어하우스에서 다른 웨어하우스로 행을 옮기는 것이 아니다 — 복사
스크립트로도 할 수 있는 일이다. 목적은 실제 마이그레이션이 강제하는 결정을 내리고
방어하는 것이다. 각 테이블에 어떤 MergeTree 엔진 계열이 맞는지, 값을 하는 ORDER BY
키를 어떻게 설계하는지, 그리고 어떤 Snowflake SQL 관용구에 직접적인 ClickHouse
대응물이 없는지. 이 랩을 끝내면 Snowflake 워크로드를 프로파일링하고, 올바른 엔진과
스키마 결정을 내리고, 재개 가능한 스크립트로 프로덕션 스타일의 마이그레이션을
실행하고, ClickHouse에서 dbt 파이프라인을 재구축하고, 7개 쿼리 벤치마크로 비즈니스
케이스를 정량화하고, 그 모든 결정을 설명하고 방어할 수 있게 된다.
이 플레이북은 세 개의 트랙으로 구성된다. Learner 트랙은 직접 진행하는 수업이다. Instructor 트랙은 같은 모듈에 대한 진행자용 동반 자료로, 타이밍, 토크 트랙, 흔한 실패, 리셋 절차를 담는다. Reference는 상시 참고 자료 — 엔진, dbt, 대시보드 가이드 — 로, 순서대로 읽는 것이 아니라 어떤 모듈과도 함께 읽도록 만들어졌다.
모듈
| # | Learner | Instructor | 결과 |
|---|---|---|---|
| 00 | 환경 설정 | 노트 | 툴체인 설치, 두 클라우드 트라이얼 계정 생성, 리포지토리 클론, 두 dbt 가상환경 구축 — 데이터를 건드리기 전에 마이그레이션에 필요한 모든 것 |
| 01 | 소스 환경 | 노트 | 실제 고객 배포를 반영하는 Snowflake 환경: 5천만 행, dbt Medallion 파이프라인, 라이브 트립 프로듀서, 3개의 Superset 대시보드 |
| 02 | 계획과 설계 | 노트 | Snowflake 워크로드를 프로파일링하고 마이그레이션이 실행할 아키텍처 결정을 명시화한다: 엔진 선택, 정렬 키, 스키마 변환, 배포 웨이브, dbt 모델 설계 |
| 03 | 프로비저닝과 마이그레이션 | 노트 | Terraform으로 ClickHouse Cloud 프로비저닝, 계획에 따른 타깃 테이블 생성, 재개 가능한 Python 마이그레이션 스크립트로 5천만 행 이전 |
| 04 | dbt 파이프라인 재구축 | 노트 | dbt-clickhouse로 ClickHouse에서 Medallion 파이프라인 재구축 — delete_insert 증분 모델, ReplacingMergeTree, 갱신 가능한 materialized view — 그리고 존 딕셔너리 생성 |
| 05 | 벤치마크와 컷오버 | 노트 | ClickHouse에서 대시보드 재구축, 7개 쿼리 전부를 양쪽 엔진에서 벤치마크, 프로듀서 컷오버, 패리티 검증, 양쪽 클라우드 정리 |
| 06 | 평가 | 노트 | 20문항 객관식과 4문항 서술형 평가를 오픈북으로 완료하고 ClickHouse Migration Proficiency Badge를 획득 |
이 랩이 다루지 않는 것
이 랩은 핵심 마이그레이션 패턴으로 범위를 한정했다. 다음 주제는 의도적으로 범위 밖이다.
- 실시간 스트리밍 인제스트 — 이 랩은 컷오버 이후의 라이브 쓰기에 Docker 기반 트립 프로듀서를 사용하며, Kafka, Kinesis, ClickPipes 스트리밍 소스는 쓰지 않는다.
- 다중 노드 ClickHouse 클러스터 — 모든 작업은 ClickHouse Cloud 단일 서비스 배포에서 이루어진다. 셀프 호스팅 분산 배포(샤딩, 복제 토폴로지)는 다루지 않는다.
- 데이터 거버넌스와 접근 제어 — 역할 기반 접근, 행 수준 보안, 마스킹 정책은 구현하지 않는다.
- 점진적 스키마 진화 — 이 랩은 처음부터 끝까지 고정된 스키마를 사용한다. 마이그레이션 중 라이브 스키마 변경 처리는 다루지 않는다.
- Snowflake 이외의 소스 — 마이그레이션 패턴은 Snowflake에 특화된다. PostgreSQL, MySQL, BigQuery 등 다른 소스는 SQL 방언과 CDC 접근법이 다르다.
- 프로덕션 SLA와 모니터링 — 프로덕션 ClickHouse Cloud의 관측성, 알림, SLA 관리는 다루지 않는다.
시간과 비용
| 모듈 | 실제 소요 시간 | Snowflake 크레딧 | ClickHouse Cloud |
|---|---|---|---|
| 00 — 환경 설정 | 약 30분 | — | — |
| 01 — 소스 환경 | 약 45분 | 약 2–4 크레딧 | — |
| 02 — 계획과 설계 | 약 90분 | 약 0.5 크레딧 | — |
| 03 — 프로비저닝과 마이그레이션 | 약 60분 | 약 1–2 크레딧 | 약 $1–2 (트라이얼) |
| 04 — dbt 파이프라인 재구축 | 약 30분 | 약 0.5–1 크레딧 | 약 $0.5–1 (트라이얼) |
| 05 — 벤치마크와 컷오버 | 약 45분 | 약 1–2 크레딧 | 약 $0.5–1 (트라이얼) |
| 06 — 평가 | 약 60분 | — | — |
| 합계 | 약 6시간 | 약 6–10 크레딧 | 약 $2–4 |
Snowflake 크레딧 추정치는 표준 X-Small 웨어하우스를 가정한다. ClickHouse Cloud 비용은 몇 시간 내에 정리하는 Development 티어 서비스를 가정한다.