본문으로 건너뛰기
피드

dbt를 10년 늦게 시작한 후기 (DuckDB 에디션)

backend 약 4분

dbt를 10년 늦게 발견한 저자가 DuckDB와 조합해 UK 홍수 모니터링 API 데이터 파이프라인을 구축한 경험기. source 분리, staging 모델, Jinja 매크로, 테스트, 자동 문서화, Dagster 오케스트레이션까지 전체 과정을 다룸.

  • 1

    dbt source로 추출/변환 분리하여 체계적 데이터 관리 가능

  • 2

    DuckDB read_json으로 API 데이터 직접 수집

  • 3

    freshness, not_null, unique 등 선언적 테스트와 커스텀 singular 테스트 지원

  • 4

    dbt docs로 리니지 그래프 포함 문서 자동 생성

  • 5

    Dagster로 dbt 모델을 asset 기반 오케스트레이션

Sources: 추출과 변환의 분리

  • dbt의 source 개념으로 데이터 추출(Extract)과 변환(Transform)을 깔끔하게 분리할 수 있음
  • DuckDB의 read_json으로 API 데이터를 직접 읽어올 수 있지만, dbt에서는 이를 source로 정의해서 관리함
  • source 정의에 Markdown 설명을 넣으면 나중에 자동 문서화에 그대로 활용됨
  • 비행기 안처럼 API 접근이 안 되는 환경에서는 정적 데이터셋으로 source만 교체하면 됨

Staging 모델과 매크로

  • staging 모델에서 원본 데이터를 정리하고, 이후 mart 모델에서 비즈니스 로직을 적용하는 계층 구조를 사용함
  • Jinja 템플릿으로 반복 로직을 매크로화할 수 있어서 SQL의 boilerplate를 크게 줄임
  • {{ source() }}{{ ref() }}로 모델 간 의존성을 선언적으로 관리함

테스트: freshness부터 커스텀 테스트까지

  • not_null, unique 같은 기본 테스트를 YAML 한 줄로 설정 가능함
  • source freshness 테스트로 데이터가 얼마나 오래됐는지 자동 체크함
  • singular test로 비즈니스 로직에 맞는 커스텀 검증도 SQL 파일 하나로 추가할 수 있음

문서화: 자동 생성 리니지 그래프

  • dbt docs generate로 전체 파이프라인의 리니지 그래프가 자동 생성됨
  • 모델 간 의존 관계가 시각적으로 표현되어 데이터 흐름을 한눈에 파악 가능함
  • YAML에 작성한 description이 문서에 자동 반영되므로 별도 문서 관리가 필요 없음

Dagster로 오케스트레이션

  • Dagster가 dbt와 네이티브로 통합되어 dbt 모델을 asset으로 인식함
  • 실행 이력 추적, 스케줄링, 모니터링을 Dagster UI에서 한 번에 관리할 수 있음
  • Dagster 설정 코드는 Claude가 작성해줬다고 저자가 직접 밝힘

핵심 인사이트

  • dbt는 대규모 프로젝트만을 위한 도구가 아님 — 소규모 개인 프로젝트에서도 변환 로직에 구조와 엄격함을 부여해줌
  • UK Environment Agency 홍수 모니터링 API 데이터를 DuckDB + dbt + Dagster로 엮은 전체 파이프라인 예제가 포함됨
  • 10년 늦게 시작했지만 dbt가 가져다주는 체계적인 데이터 변환 관리의 가치를 실감했다는 후기임

dbt는 대규모 프로젝트 전용이 아니라 소규모 개인 프로젝트에서도 데이터 변환에 구조와 엄격함을 부여하는 도구임

댓글

댓글

댓글을 불러오는 중...

backend

Cloudflare가 잡아낸 QUIC CUBIC 버그, ‘idle’ 한 줄 오판이 다운로드를 죽였다

Cloudflare의 QUIC 구현체 quiche에서 CUBIC 혼잡 제어가 최소 윈도우에 갇혀 회복하지 못하는 버그가 발견됐다. Linux 커널의 idle 최적화를 QUIC에 옮기는 과정에서 TCP와 QUIC의 이벤트 타이밍 차이를 놓쳤고, 결국 ACK 시점을 기준으로 idle 시간을 재도록 고쳐 100% 테스트 통과를 회복했다.

backend

삼성전자가 반도체 개발 조직에 오라클 자바를 공식 채택한 이유

삼성전자 DS 부문이 글로벌 반도체 개발 환경에 오라클 자바 SE 유니버설 서브스크립션을 공식 채택했다. 서로 다른 자바 배포판과 버전이 섞이면서 생길 수 있는 보안, 컴플라이언스, 라이선스 리스크를 줄이고 개발 환경을 표준화하려는 결정이다.

backend

네이버클라우드, 트래픽 따라 알아서 줄고 느는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 CPU, 메모리, 스토리지를 자동 조절하는 완전관리형 서버리스 데이터베이스 서비스를 내놨다. 기존 가상머신 기반 관리형 데이터베이스처럼 피크 트래픽에 맞춰 서버를 과하게 잡아두는 방식에서 벗어나, 사용량 기반 과금과 오토스케일링으로 비용 낭비를 줄이겠다는 방향이다.

backend

네이버클라우드, 사용량 따라 늘고 줄어드는 서버리스 데이터베이스 출시

네이버클라우드가 완전관리형 서버리스 데이터베이스 서비스인 Cloud DB Serverless를 출시했다. VM 기반 관리형 데이터베이스의 고정 비용과 과잉 프로비저닝 문제를 줄이고, 트래픽에 따라 CPU·메모리·스토리지를 자동 조절하는 구조를 내세운다.

backend

네이버클라우드, 사용량 따라 자동 확장되는 서버리스 데이터베이스 출시

네이버클라우드가 사용량에 따라 컴퓨팅 자원을 자동 조절하는 서버리스 기반 클라우드 데이터베이스를 출시했음. 기존 가상머신 기반 관리형 데이터베이스의 고정 비용과 운영 부담을 줄이고, 국내 데이터 규제 요구까지 맞추겠다는 전략임.