Medallion 데이터 레이어
GenD 는 Medallion 아키텍처 (Bronze / Silver / Gold) 를 데이터 거버넌스의 공통 좌표축으로 사용합니다. 각 테이블은 정제 단계를 명시하는 layer 메타데이터를 가지며, 카탈로그 UI · 품질 SLA · 접근 제어가 이 값으로 차등 적용됩니다.
Federation × Medallion 데이터 흐름
한눈에 보기
| Layer | 정의 | 대표 예 | 거버넌스 |
|---|---|---|---|
| 🥉 Bronze | 원천 그대로, 불변, 감사용 | iceberg.cdc.orders, 외부 RDB CDC 랜딩 | PII 미마스킹, 접근 제한 |
| 🥈 Silver | 정제·마스킹·스키마 통일 | iceberg.<domain>.stg_*, 정제된 문서 zone | PII 마스킹 완료, 분석가 접근 |
| 🥇 Gold | 비즈니스 집계·소비 준비 완료 | iceberg.datax_analytics.*, 모든 DataMart | RAG·BI·ML 즉시 소비 |
GenD 의 layer 관리 축
GenD 는 layer 값을 다음 네 축에서 일관되게 관리합니다 — 모두 같은 vocabulary (bronze / silver / gold) 를 공유합니다.
| 축 | 위치 | 용도 |
|---|---|---|
| Dagster Asset Tag | tags={"layer": "..."} (pipelines/gend_pipelines/assets/) | 파이프라인 그룹화, asset graph 시각화, SLA 분기 |
| Iceberg Table Property | gend.layer extra_property | read 경로: PostgreSQL table_metadata 가 비었을 때 best-effort fallback 으로 /catalog/.../metadata 응답에 노출. write 경로는 Trino 435 connector 의 properties whitelist 제약으로 비활성 (Issue #545) — 외부에서 직접 set 하면 보존됨 |
PostgreSQL table_metadata | layer / domain 컬럼 | 카탈로그 UI 배지, ABAC/품질 정책 후보, 거버넌스 정책 입력 (진실의 원천) |
DataMart.layer | DataMart 레코드 컬럼 (기본값 gold) | 마트 단위 layer (생성·업데이트 API 가 검증) |
시드 자동화 (Issue #551, PR #555):
make seed-demo실행 시scripts/backfill_medallion_layer.py --apply가 자동 호출되어 모든 시드 대상 테이블에 layer 메타데이터가 부여됩니다. 단일 소스:scripts/seed/metadata/table_layers.py.
Zone ↔ Layer 매핑
문서 처리 파이프라인의 zone 용어와 Medallion 레이어는 1:1 매핑됩니다.
| 문서 Zone | Medallion Layer | 의미 |
|---|---|---|
raw | Bronze | 수집 직후 원본 문서 |
cleaned | Silver | PII 마스킹·텍스트 정제 완료 |
parsed | Gold | 엔티티 추출 + auto-tag 완료, RAG 즉시 소비 |
변환 파이프라인은 Dagster UI 에서
preprocessingasset group 으로 노출됩니다 —raw_zone_ingest→cleaned_zone_process→parsed_zone_extract순. URL 은 환경별로 다릅니다 — Kind 로컬은http://localhost:30400, AKS 는 클러스터 운영자가 안내한 Dagster 엔드포인트. NodePort 매핑은 서비스 포트 참조.
어디서 layer 가 보이나
| 화면 | 표시 방식 |
|---|---|
| 테이블 상세 페이지 (카탈로그에서 테이블 클릭) | 헤더의 layer 배지 + 우측 About 영역의 Medallion 필드 (MedallionLayerBadge 컴포넌트) |
DataMart 빌더 (/data-marts) | 마트 생성 시 layer 선택 (기본 Gold), 목록 화면 layer 칼럼 |
카탈로그 트리 자체에는 layer 배지가 렌더되지 않습니다 — 트리 클릭 후 진입한 테이블 상세 페이지에서 확인하세요. (UI 회귀: ui/src/components/catalog/CatalogPage.tsx)
layer 별 거버넌스 차등 (권장 운영 가이드)
GenD 의 ABAC/품질/감사 시스템은 layer 를 자동 차등 조건으로 사용하지 않습니다 (현재 시행 기준은 security_level·PII 태그·quality_rules 입니다). 아래 표는 layer 를 거버넌스 입력으로 채택할 때 권장되는 운영 모델 — 조직별 정책 작성 시 참조용 가이드입니다.
| 차등 항목 | Bronze | Silver | Gold |
|---|---|---|---|
| PII 노출 | 마스킹 미적용 (감사 로그 격리) | 마스킹 완료 | 마스킹 완료 + 비식별화 |
| 기본 접근 | 데이터 엔지니어, 감사 | 분석가·엔지니어 | 전체 (분석가·현업·BI·AI Agent) |
| 품질 SLA | freshness 24h 권장 | 6h | 1h (실시간성 마트는 더 엄격) |
| 변경 제한 | 불변 (append-only) | 스키마 변경 승인 워크플로우 | 마트 빌더 자유 |
실제 layer 기반 정책 자동 시행은 향후 단계 작업입니다 — 현 시점에는 ABAC 정책 (#473) 과 품질 시스템 의 시행 기준에 layer 조건을 직접 추가하는 방식을 사용하세요.
더 깊은 내용
- 설계 매핑 표 + Dagster asset 별 layer 부여 근거 —
docs/architecture.md§5.3 (리포지토리 내부) - Layer 단일 소스 모듈 —
pipelines/gend_pipelines/layer.py+apps/api/src/gend_api/models/layer.py(양쪽 미러) - 시드 시점 layer 메타데이터 자동화 — Issue #551 · PR #555
- Medallion 워크스루 튜토리얼 — Bronze 에서 Gold 까지