Charts built for Chat
챗을 위해 만든 차트 — dbt Labs, 대시보드를 YAML로 선언하는 'dbt Charts' 오픈소스 공개
dbt Labs가 대화형 에이전트 시대에 맞춰 대시보드 전체를 하나의 YAML 파일로 선언·렌더링하는 오픈소스 언어 dbt Charts를 공개했습니다. 에이전트가 뿌리는 흩어진 코드 산출물과 UI에 갇힌 BI copilot 사이의 제3의 길을 표방하며, Git·CI 친화적이고 Apache 2.0으로 배포됩니다.
- 주제
본문
AI 기반 데이터 분석이 현실화되면서, 데이터 커넥션만 있으면 채팅으로 하루 만에 리포트를 만들 수 있는 시대가 됐습니다. 그러나 에이전트가 만든 결과물은 HTML·CSS·JavaScript에 차트 라이브러리, 실시간 서비스가 필요하면 React나 Streamlit 앱까지 얽힌 파일 더미가 되기 쉽습니다. 결과를 원천까지 추적하려면 여러 언어와 파일을 오가야 해서 사람의 감사(audit)는 느려지고, 에이전트는 매 변경마다 시간과 토큰을 소비합니다. 반대로 기존 BI 도구는 UI 중심 앱에 copilot을 얹는 방식이라 거버넌스는 지켜지지만 AI가 UI가 노출하는 기능 안에 갇힙니다. dbt Labs는 '지저분한 코드의 자유'와 'BI 도구의 좁은 통제' 사이에서 세 번째 선택지로 dbt Charts를 오픈소스로 공개했습니다.
BI의 두 번째 언번들링
dbt Labs 창업자 Tristan Handy의 글 'BI's Second Unbundling'을 인용해 배경을 설명합니다. 과거 MicroStrategy·Cognos 같은 BI 도구는 ingestion부터 transformation, compute, caching, semantics, visualization, identity까지 모두 품은 통합 데이터 플랫폼이었습니다. 2015~2022년 모던 데이터 스택이 등장하면서 compute는 Big 5, ingestion은 Fivetran, transformation은 dbt로 분리됐고, BI 도구에는 시각화, 인터랙티브 분석 인터페이스, 의미 정의, IAM, 웹 호스팅만 남았습니다. 이 중 가장 큰 조각이 차트인데, 사람에게는 클릭이 YAML 작성보다 빨라 UI에 남아 있었습니다. 그러나 프론트엔드와 사용자가 챗 에이전트로 바뀌면서 이 판단이 뒤집힌다는 것이 글의 논지입니다. 에이전트는 코드·SQL·Git에 능숙하고 남의 UI에는 서투르므로, 차트도 에이전트가 일하는 곳인 코드로 옮겨야 한다는 것입니다.
하나의 YAML 파일이 곧 대시보드
dbt Charts는 차트를 BI 도구에서 꺼내 구조화된 YAML 언어로 선언합니다. SQL이 '무엇을' 보여줄지를 선언하고 YAML이 '어떻게' 보여줄지를 감싸며, Markdown은 산문을, dbt와 마찬가지로 Jinja는 변수와 매크로를 담당합니다. CLI인 dct는 보드 파일을 정적 SVG뿐 아니라 HTML, PNG, PDF, 심지어 터미널로도 렌더링하고(dct render charts/documents.yml --format svg), dct serve로 폴더째 사이트로 서빙합니다. 표현력은 16가지 차트 타입과 조합 차트에 걸쳐 1,100개 이상의 설정 옵션에 이르지만, 스타일이 차트→보드→테마로 캐스케이드되고 보드가 extends로 다른 보드를 상속하므로 이 옵션들을 직접 쓸 일은 드뭅니다.
dbt 프로젝트와의 깊은 통합
dbt 없이도 쓸 수 있지만 함께 쓰면 charts/ 디렉터리가 models/ 옆 같은 Git 저장소에 놓여, 모델 변경과 차트 변경이 한 브랜치와 한 CI 실행으로 배포되고 프로덕션 도달 전에 깨집니다. 쿼리는 매니페스트에서 해석되는 ref()로 모델을 참조하므로, 모델 이름 변경이나 컬럼 누락은 dbt run으로 웨어하우스를 다시 만들기 전에 dbt parse && dct validate 단계에서 해당 PR을 실패시킵니다. dbt Semantic Layer 지원도 예정돼 있어, 보드가 SQL을 다시 적는 대신 프로젝트가 정의한 메트릭을 그대로 쓸 수 있게 됩니다.
에이전트를 위한 피드백 루프
글은 에이전트가 '상당히 눈이 멀어' 촘촘한 피드백 루프에서 가장 잘 작동한다고 지적합니다. dct render는 YAML과 SQL의 엄격한 검증 외에 시각화 검사를 제공해, 예컨대 182개 밴드 × 2개 시리즈가 640px에 들어가 밴드 폭이 너무 좁다는 경고(WARN-BAR-BAND-WIDTH-TOO-NARROW, 해결책: 더 거친 단위로 롤업)나, 테이블에 980px이 필요한데 슬롯이 640px뿐이라는 경고(WARN-TABLE-COLUMNS-OVERFLOW)를 수정 방법과 함께 출력합니다.
디자인 시스템과 호스티드 플랫폼
데이터 그래픽 디자이너이자 저술가·역사가인 RJ Andrews를 영입해, 카드와 박스로 정렬을 흉내 내는 대신 시각적 노이즈를 늘리는 기존 방식을 버리고 모든 차트의 간격·크기·배치를 단독으로도 나란히 놓였을 때도 체계화했다고 합니다. 함께 공개된 dbtCharts.com(퍼블릭 베타)은 차트를 뺀 나머지 BI — 호스팅, 접근 제어, UI — 를 담당하며, 웨어하우스에 권한 있는 읽기 전용 접근을 가진 대화형 분석, 마무리용 비주얼 에디터, 버전 히스토리, 사용자·그룹 권한 공유를 제공합니다. 챗·에디터·코드 어디서 바꾸든 결과는 같은 YAML로 Git에 남아 잠금(lock-in)이 없고, 같은 보드가 노트북·CI·플랫폼에서 동작합니다. 언어는 Apache 2.0 라이선스이며 uv tool install dbt-charts로 설치해 계정 없이 로컬에서 작성·렌더링·서빙할 수 있습니다. 아직 pre-1.0이지만 문법이 바뀌어도 보드가 파싱 시 마이그레이션되도록 설계됐습니다.
Hacker News 반응
- @thingsilearned — Chartio(YC'10, 현 Atlassian Analytics) 창업자 Dave가 직접 등장해, Claude 같은 에이전트로 대시보드를 만들면 감사와 확장이 어려운 자유 형식 산출물이 쌓이는 문제를 풀기 위해 '대시보드를 위한 마크다운' 격인 YAML 방언을 만들었다고 설명했습니다.
- @mceoin — 이 영역에서 업계 표준을 노리는 시도가 누가 나올지 궁금했다며 널리 채택되길 바란다고 축하했습니다.
- @fletchrichman — 바로 써 보고 싶을 만큼 좋아 보인다는 짧은 호평을 남겼습니다.
- @marojejian — AI를 위해 만들어지면서도 개방성과 해석 가능성(interpretability)을 함께 지원하는 점을 높이 평가했습니다.
- @mollifier14 — '바이브 코딩된 JS 슬롭 차트' 사이의 희망의 등대라며, 읽을 수 있고 유지보수 가능하며 새 데이터로 같은 대시보드를 결정론적으로 재생산하는 산출물을 만든다는 점을 장점으로 꼽았습니다.
원문: dbt Charts Blog / 번역·요약: Trawling