본문으로 건너뛰기

Medallion 워크스루 — Bronze → Silver → Gold

GenD 의 Medallion 데이터 레이어를 한 바퀴 따라가며, 원천 데이터가 어떻게 정제되어 비즈니스 소비 단계까지 도달하는지 직접 확인합니다. 데이터 엔지니어 페르소나를 가정하지만, 마지막 단계는 분석가 시점으로 전환됩니다.

선행 조건:

소요 시간: 15-20분.

전체 흐름

🥉 Bronze (CDC 원천) → 🥈 Silver (PII 마스킹) → 🥇 Gold (마트·분석)
iceberg.cdc.orders iceberg.<도메인>.stg_* iceberg.datax_analytics.*

각 단계마다 카탈로그 → Dagster → DataMart → SQL 도구를 차례로 사용해 layer 라는 공통 좌표축이 어떻게 일관되게 노출되는지 봅니다.


1단계: 카탈로그에서 🥉 Bronze 테이블 확인

좌측 사이드바 카탈로그 진입 → iceberg 카탈로그 → cdc 스키마 → orders 테이블 클릭 → 테이블 상세 페이지로 진입.

확인 위치기대 값
테이블 상세 헤더의 layer 배지🥉 Bronze (갈색)
우측 About 영역의 Medallion 필드Bronze 배지 표시
Domain 필드cdc

카탈로그 트리(좌측 노드 목록) 자체에는 배지가 노출되지 않습니다 — 트리 클릭 후 진입한 상세 페이지에서 확인하세요.

해석: 이 테이블은 외부 RDB (예: sourcedb.public.orders) 에서 Debezium CDC 로 실시간 복제된 원천 입니다. PII 가 마스킹되지 않았으므로 데이터 엔지니어 / 감사 권한만 직접 조회 가능합니다.

🔍 layer 메타데이터의 출처: 시드 시점에 scripts/seed/metadata/table_layers.py 가 정의한 매핑이 PostgreSQL table_metadata 테이블에 upsert 됩니다. 자세한 내용은 Medallion 가이드 참고.


2단계: Dagster 에서 🥈 Silver 정제 파이프라인 추적

Dagster UI 에 접속합니다. URL 은 환경별로 다릅니다 — Kind 로컬은 http://localhost:30400 (NodePort 30400), AKS 는 클러스터 운영자가 안내한 Dagster 엔드포인트. 자세한 NodePort 매핑은 서비스 포트 참조.

Asset Group: preprocessing 선택. 다음 3 단계 asset 이 보여야 합니다:

raw_zone_ingest → cleaned_zone_process → parsed_zone_extract
(Bronze) (Silver) (Gold)

Dagster 의 group 명칭은 preprocessing (코드: assets/preprocessing_zones.pygroup_name="preprocessing"). 파일명과 group 명을 헷갈리지 마세요.

Assetlayer 태그동작
raw_zone_ingestbronze원본 문서를 raw zone 으로 적재 (감사용 보존)
cleaned_zone_processsilverPII 마스킹 + 텍스트 정제 + 스키마 통일
parsed_zone_extractgold엔티티 추출 + auto-tag (RAG 즉시 소비 가능)

Tag 검증: 임의 asset 클릭 → "Tags" 패널에서 layer: silver 확인.

Materialize: cleaned_zone_process 우상단 [Materialize] 클릭 → 진행 상황 모니터.

🔍 태그 일관성 가드: 신규 Dagster asset 추가 시 tags["layer"] 누락은 회귀 테스트 (#553) 가 CI 단계에서 차단합니다.


3단계: DataMart 빌더로 🥇 Gold 마트 생성

좌측 사이드바 데이터 마트 → 우상단 [+ Create Data Mart] 클릭.

다음 값으로 입력:

필드
Namewalkthrough_silver_to_gold
DescriptionMedallion 워크스루 — Silver 에서 Gold 마트
Source SQLSELECT customer_id, COUNT(*) AS cnt, SUM(amount) AS total FROM iceberg.card.transactions GROUP BY customer_id
Target Catalogiceberg
Target Schemadatax_analytics
Target Tablewalkthrough_gold_mart
Refresh Modemanual (튜토리얼이므로)
Layergold ← 명시

[Create] 클릭 → 마트 목록에 추가됨. [Refresh Now] 로 1회 실행.

확인 포인트기대 값
마트 카드 layer 칩🥇 Gold (노란색)
Owner현재 로그인 사용자
Refresh 상태success
Row count> 0

🔍 layer="gold" 미지정 시: DataMart API 가 자동으로 gold 기본값을 부여합니다 (Phase A-4). 여기서는 명시적으로 선택해 의도를 드러냅니다.


4단계: SQL 에디터에서 🥇 Gold 마트 조회 (분석가 시점)

좌측 사이드바 SQL 에디터 로 이동.

다음 쿼리 실행:

SELECT
customer_id,
cnt,
total
FROM iceberg.datax_analytics.walkthrough_gold_mart
ORDER BY total DESC
LIMIT 10;

확인:

  • 결과 테이블에 데이터 출력
  • 좌측 사이드바 카탈로그에서 walkthrough_gold_mart 클릭 → 테이블 상세 페이지 헤더에 🥇 Gold 배지 노출

페르소나 전환: 분석가 계정 (analyst@gend.local) 으로 재로그인 후 위 쿼리 재실행 → 동일 결과 (조직에서 분석가 RBAC 정책이 Gold 마트 read 를 허용하는 경우). 1단계의 iceberg.cdc.orders (Bronze) 직접 조회는 RBAC/ABAC 정책으로 제한할 수 있습니다 — 자세한 내용은 데이터 거버넌스 (#473) 참고.

현재 GenD 의 ABAC 시행은 security_level · PII 태그 · quality_rules 가 기준입니다. layer 자체를 자동 차등 조건으로 사용하려면 정책에 layer 컨디션을 명시적으로 추가하세요 (권장 운영 모델은 Medallion 가이드 참고).


핵심 개념 정리

단계도구layer페르소나
1카탈로그🥉 Bronze데이터 엔지니어
2Dagster🥈 Silver데이터 엔지니어
3DataMart 빌더🥇 Gold데이터 엔지니어
4SQL 에디터🥇 Gold분석가 (전환)

왜 layer 가 중요한가:

  • 거버넌스: PII 노출 / 접근 권한 / SLA 차등을 layer 기준으로 일관 적용
  • 카탈로그 가독성: 4,000+ 테이블 환경에서 "어떤 데이터가 소비 준비됐는지" 한눈에 식별
  • AI 컨텍스트: NL2SQL · RAG 가 Gold 우선 검색 → Hallucination 위험 감소

다음 단계

💡 확장 시나리오: 본인 도메인의 외부 RDB 를 Trino 커넥터로 연결 → CDC 파이프라인 부착 → Silver/Gold 마트 빌드 까지 동일한 4 단계로 적용 가능합니다. 자세한 절차는 데이터 소스 연결 + 파이프라인 관리 참고.