본문으로 이동
기사 목록으로 돌아가기
Data14分

변환 레이어 2026: dbt Core 1.10 vs SQLMesh 0.150 vs Dagster 1.10

Transformation Layer 2026: dbt Core 1.10 vs SQLMesh 0.150 vs Dagster 1.10

久保 真由美Lead Analytics Engineer
2026-04-2114分
dbtSQLMeshDagsterSemantic LayerMetricFlowCube.devCI/CD

분석 변환 도구의 3파전, 2026년의 현황

  • 년 무렵까지 '데이터 변환이라면 dbt'라는 암묵적 합의가 있었지만, 2024년 이후에는 선택지가 명확히 갈리기 시작하였습니다. SQLMesh가 가상 데이터 환경(virtual data environments)과 column-level lineage로 기술적 우위를 보이고, Dagster가 asset-centric 오케스트레이션으로 dbt를 포함하는 형태로 세력을 확장하였으며, dbt Labs 자체도 2025년의 Fusion 엔진(Rust 구현의 dbt 런타임) 도입과 Semantic Layer의 본격화로 반격을 꾀하였습니다.
  • 년 4월 시점에 KGA가 고객에게 권장하는 것은 규모와 특성에 따라 다음과 같습니다. 기존의 중~대규모 dbt 프로젝트(모델 500개 이상)는 dbt Core 1.10 + Fusion 그대로 유지합니다. 그린필드로 PostgreSQL/BigQuery/Snowflake 중심이고 CI 대기 시간이 문제가 되는 프로젝트는 SQLMesh 0.150을 권장합니다. 데이터 파이프라인 전체(ML, reverse ETL, BI 업데이트 포함)를 단일 오케스트레이터로 관리하고 싶은 프로젝트는 Dagster 1.10 + dbt 또는 Dagster 1.10 + SQLMesh 통합을 권장합니다.

dbt Core 1.10과 Fusion 엔진

  • 년 말에 GA된 dbt Fusion은, Python으로 구현되었던 dbt의 컴파일·파싱 페이즈를 Rust로 다시 작성한 것으로, 모델 1,000개 규모의 프로젝트에서 `dbt parse`가 3~4배, `dbt compile`이 2~3배 빨라졌습니다. 이는 CI 시간 단축으로 직결되었으며, KGA의 소매 고객에서는 PR마다의 CI가 18분에서 7분으로 단축되었습니다.
  • 10에서 특히 주목할 점은 세 가지입니다. 첫째, `microbatch` incremental strategy의 안정화입니다. 시계열 데이터의 ingestion에서, 과거분의 재실행과 신규 배치의 추가를 동일한 모델 정의로 처리할 수 있게 되어, Lambda 아키텍처 방식의 이중 관리가 불필요해졌습니다. 둘째, Python models의 행 파티션 실행 지원입니다. dbt Python model을 Snowpark/Databricks/BigQuery DataFrames에서 실행할 때, 자동으로 파티션 단위 병렬화가 이루어집니다. 셋째, MetricFlow(Semantic Layer의 핵심)의 정의 파일 구문 안정화로, 메트릭 정의의 YAML이 1.9 시점의 실험적 구문에서 깔끔해졌습니다.

약점은 여전히 존재합니다. column-level lineage는 dbt Cloud에서만 이용 가능하며, OSS 버전에는 없습니다. unit test는 도입되었지만 SQLMesh의 audits만큼 표현력이 없습니다. virtual environment(blue-green 방식의 테이블 전환)는 미지원으로, zero-copy clone에 의존하는 운영이 필요합니다.

SQLMesh 0.150의 virtual data environments

SQLMesh 최대의 차별화 요소는 가상 데이터 환경입니다. 개발자가 feature branch에서 변경한 모델을 `sqlmesh plan dev`로 실행하면, 테이블을 물리적으로 복사하지 않고 '변경한 모델만 별도 이름으로 실체화하고, 나머지는 본番 테이블을 참조하는 논리 뷰'가 생성됩니다. 이를 통해 CI 시의 풀 빌드 비용이 극적으로 낮아집니다.

  • 150의 주요 기능은 다음과 같습니다.

Column-level lineage OSS 제공: dbt Cloud의 유료 기능과 동등한 열 수준 계보를 OSS 상태로 SQLMesh UI에서 시각화할 수 있습니다. 영향 범위 분석에서 '이 칼럼 정의를 변경하면, 하류의 어떤 대시보드의 어떤 지표가 바뀌는지'까지 추적 가능합니다.

Incremental by time range의 자동 최적화: 시계열 incremental 모델에서, 로드 대상 파티션의 자동 감지와 과거 재실행의 멱등성 보장이 dbt microbatch보다 유연합니다. 데이터 도착 지연(late-arriving facts)의 처리를 선언적으로 작성할 수 있습니다.

Audits(데이터 품질 어설션): SQL로 작성한 audit이, 모델의 update/append/backfill 전후에 자동 실행됩니다. 실패 시 롤백되는 사양으로, 본番 데이터 파괴 리스크가 실질적으로 제로가 됩니다.

네이티브 Python models: dbt의 Python model 상당 기능이지만, 인수의 타입 힌트를 기반으로 암묵적으로 의존성이 해결됩니다.

  • 년 시점의 약점은 에코시스템 규모입니다. dbt의 패키지(dbt-utils, dbt-expectations, dbt-snowflake-monitoring 등)에 해당하는 커뮤니티 자산이 아직 얇으며, 직접 작성해야 하는 양이 많아집니다. 또한 일본어 문서와 사내 연수 콘텐츠가 dbt에 비해 압도적으로 부족합니다.

Dagster 1.10의 asset-centric 접근

Dagster는 원래 Python 기반의 오케스트레이터이지만, software-defined assets 개념을 핵심으로 삼아, dbt/SQLMesh/Airbyte/Fivetran/Hightouch 등 각종 도구를 단일 자산 그래프로 통합할 수 있다는 점이 최대의 강점입니다.

  • 10에서의 진화 포인트는 다음과 같습니다.

dbt + SQLMesh 모두를 자산으로 처리 가능: 동일 파이프라인에서 전환 기간에 dbt와 SQLMesh를 공존시키는 구성이 문제없이 동작합니다. KGA의 금융 고객에서는 기존 dbt 800개 모델을 단계적으로 SQLMesh로 이전 중이며, 양쪽을 Dagster에서 일괄 관리하고 있습니다.

Pipes protocol의 확장: Databricks/EMR/Kubernetes의 외부 실행 환경에서 실행되는 잡과 Dagster 본체의 오케스트레이션 레이어를 경량으로 연계할 수 있는 구조로, Python/Scala/Rust 등 언어를 불문합니다.

Declarative scheduling의 성숙: '자산 A는 B가 업데이트된 후 15분 이내에 업데이트한다'는 방식의 선언적 SLA 스케줄이, cron보다 직관적이며 의존 관계의 변화에 자동으로 추종합니다.

Asset checks: 데이터 품질 체크를 자산 자체의 메타데이터로 정의하고, 실패 시 하류의 업데이트를 자동 중지할 수 있습니다.

약점은 학습 곡선입니다. asset-centric 사고방식은 Airflow의 task-centric에서의 전환 비용이 적지 않으며, 팀 전체가 모델을 바꿀 필요가 있습니다. 또한 SQL만으로 돌아가는 소규모 프로젝트에는 명백히 과잉 장비입니다.

Semantic Layer 구현 전략

  • 년의 데이터 스택에서 빼놓을 수 없는 것이 Semantic Layer입니다. BI 도구, LLM 에이전트, reverse ETL 모두가 동일한 메트릭 정의를 일원 참조할 것이 요구됩니다. 주요 선택지는 세 가지입니다.

dbt MetricFlow: dbt Semantic Layer의 핵심 엔진입니다. dbt 모델과 밀결합되어 있으며, semantic_model과 metric을 YAML로 정의하고, JDBC/GraphQL API 경유로 소비됩니다. Tableau, Hex, Mode, Lightdash, Metabase가 대응합니다. 장점은 dbt와의 밀결합으로 메트릭 변경이 모델 CI에 자동으로 포함된다는 점입니다. 단점은 dbt Cloud의 전체 기능을 활용하려면 유료 플랜이 필요하고, Semantic Layer API의 동시 접속 수 제한도 플랜에 따라 다르다는 점입니다.

Cube.dev: Semantic Layer 특화의 OSS/상용 도구입니다. dbt/SQLMesh/직접 SQL 어느 것과도 접속 가능하며, 캐시 레이어와 access control이 강력합니다. LLM 에이전트 향 MCP 서버도 표준 제공되어, 자연어로 안전하게 메트릭을 도출할 수 있습니다. KGA의 EC 고객에서는 Cube.dev + dbt 조합으로 LLM 대시보드(Slack에서 메트릭을 질문하는 구조)를 구축하였습니다.

SQLMesh Metrics: SQLMesh 0.150에서 도입된 새 기능입니다. SQLMesh 모델과 동일한 리포지토리에서 metric 정의를 관리하며, column-level lineage와의 통합이 깊습니다. 성숙도는 아직 MetricFlow/Cube.dev보다 낮지만, SQLMesh를 채택하는 프로젝트라면 자연스러운 선택지입니다.

CI/CD 패턴과 비용 모니터링

변환 도구의 운영에 있어서 2026년식 베스트 프랙티스는 다음과 같습니다.

Blue-green 배포: SQLMesh의 virtual data environments 또는 dbt + Snowflake zero-copy clone/BigQuery snapshot으로 구현합니다. 본番과 동일한 데이터로 PR 시에 풀 빌드하고, 검증 후 전환합니다.

Slim CI: 변경에 영향을 주는 모델만 빌드하는 차분 실행입니다. dbt라면 `dbt build --select state:modified+`, SQLMesh는 표준 기능으로 갖추고 있습니다.

Model-level 비용 귀속: Snowflake라면 QUERY_HISTORY + ACCESS_HISTORY의 결합, BigQuery라면 INFORMATION_SCHEMA.JOBS, Databricks라면 system.billing.usage를 dbt의 model metadata와 대조하여 모델 단위의 과금을 시각화합니다. 2026년은 dbt의 `dbt-snowflake-monitoring` 패키지, SQLMesh의 built-in cost tracker, Dagster의 asset insights가 각각 다르지만 거의 동등한 가시성을 제공합니다.

PR 단위 비용 예산: KGA에서는 GitHub Actions 내에서 CI 풀 빌드의 예상 비용을 산출하여, 1 PR당 500엔을 초과하는 변경은 자동으로 approval reviewer를 늘리는 운영을 합니다. 불필요한 `SELECT *` 쿼리나 비효율적인 CTE가 커밋 전에 걸러집니다.

결론: 2026년 권장 스택

처음부터 시작한다면 KGA의 권장은 Dagster + SQLMesh + Cube.dev입니다. 이유는 virtual environments에 의한 CI 고속화, asset-centric 오케스트레이션, Semantic Layer의 명확한 책임 분리가 갖춰져 있으며, 게다가 모두 OSS로 운영 가능하기 때문입니다.

기존 자산(dbt 모델 300개 이상)이 있다면 당분간은 dbt Core 1.10 + Fusion + MetricFlow가 합리적입니다. dbt Cloud는 Semantic Layer와 column-level lineage가 필요한 경우에만 검토합니다. Airflow가 조직의 기존 스택이라면, dbt + Airflow 구성을 서둘러 버릴 필요는 없지만, 신규 프로젝트는 Dagster를 검토할 가치가 있습니다.

어느 선택을 하더라도, CI/CD 자동화, 비용 가시화, Semantic Layer의 일원 관리를 소홀히 하면 5년 후에는 기술 부채의 산이 됩니다. 도구 선정 논의와 동일하거나, 그 이상으로 운영 설계 논의에 시간을 써야 합니다.

기술적 과제를 함께 해결해 보시겠습니까?

KGA IT Solutions는 AI·클라우드·DevOps 전문 팀이 고객의 과제에 최적의 솔루션을 제공합니다.

문의하기