Search

데이터 플랫폼 설계와 구축 - 7장 메타데이터 계층 아키텍처

제목
작성일
Tag

7.1 메타데이터의 의미

메타데이터(Metadata): 다른 데이터에 대한 정보를 제공하고 설명하는 “데이터에 대한 데이터”의 집합
— 데이터 자체에 포함되지 않으므로 별도로 수집·관리해야 검색·분류·추적이 용이

7.1.1 비즈니스 메타데이터

데이터 소비자(분석가·BI 사용자)를 위한 설명 정보
주요 항목 - 데이터의 출처, 소유자, 생성일자, 파일크기, 용도 등
예: 2024년 5월 생성된 고객 주문 데이터, CRM 팀 소유, S3에 저장됨
관련 서비스 - AWS Glue Data Catalog

7.1.2 파이프라인 메타데이터(데이터 플랫폼 내부 메타데이터)

데이터 플랫폼 내부에서 파이프라인 동작·상태를 설명하는 메타데이터
파이프라인 설명, 데이터 소스·데스티네이션 정보, 실행 시점(성공/실패), 에러 원인, 실행 통계 등
자동화, 모니터링, 설정관리 시 필수 요소

7.2 파이프라인 메타데이터 장점

복잡해지는 처리과정을 효과적으로 관리하기 위해 코드 구현 영역과 외부 설정값(메타데이터) 분리해야 함

문제점: 코드 기반 관리

1.
기능 추가 방식
단일 파이프라인에 모든 로직을 집어넣으면 유지보수 어려움
2.
파이프라인 복제 방식
코드 중복, 변경 시 전 파이프라인 동시 수정 필요
>> 해결책: 설정 방식의 파이프라인 설계
동일 코드, 다른 설정: 유사한 구조의 데이터 소스 처리를 하나의 코드로 관리
설정값 추상화: 데이터 소스 이름과 소스 시스템 관련 정보는 설정값 형태로
코드 수정 없이 설정값만 업데이트하여 신규 파이프라인 추가 가능

메타데이터의 세가지 기능

중앙 설정 저장소
모든 파이프라인 구성 정보를 중앙에서 관리
파이프라인 실행 이력 및 모니터링
성공/실패 여부, 실행 시간, 처리량 등 운영 데이터 수집
스키마 저장소
각 데이터셋의 컬럼 정보, 타입, 변경 이력 등 추적
메타데이터 계층은 데이터 엔지니어와 데이터 사용자의 기본 인터페이스가 되어야 함

7.3 메타데이터 모델

메타데이터 모델의 문제는 업계 표준이 없다는 것으로 책에서는 보편적인 모델 소개함
이를 참고해 조직 요구사항에 맞게 모델 확장 할 것

7.3.1 메타데이터 도메인

메타데이터 항목은 아래 그림과 같이 네 가지 도메인으로 분리
주요 메타데이터 도메인과 각 도메인 간의 관계

파이프라인 메타데이터

파이프라인의 정의와 구성을 담고 있는 메타데이터
각 컴포넌트와 속성
네임스페이스 (Namespace)
최상위 그룹 단위
속성
namespace_id: 고유 식별자
name: 네임스페이스 이름
description: 설명
created_at / updated_at: 생성·수정 시각
파이프라인 정의 (Pipeline Definition)
수집·변환 작업의 논리적 단위
속성
pipeline_id: 고유 식별자
name / description: 이름과 설명
type: 실시간(stream) / 배치(batch)
source_target_map: 소스 ⇔ 데스티네이션 매핑 정보
quality_check_id: 연계된 데이터 품질 검사 참조
connect_info: 연결 세부 정보 (예: JDBC URL, Kafka 호스트/IP, FTP 경로)
created_at / updated_at
데이터 소스 & 데스티네이션 (Data Source & Destination)
파이프라인이 읽거나 쓰는 엔티티
속성
entity_id: 고유 식별자
name: 이름
schema_id: 스키마 레지스트리 참조
quality_check_id: 품질 검사 참조
type: RDB, 파일, 메시지 큐 등
created_at / updated_at
데이터 품질 규칙 (Data Quality Rules)
파이프라인에서 적용할 품질 검사 정의
속성
rule_id: 고유 식별자
name: 규칙 이름
severity: 영향도 수준 (예: INFO, WARNING, CRITICAL)
definition: 검사 조건 및 쿼리
created_at / updated_at

파이프라인 처리 내역

실제 실행 중 수집되는 운영 통계와 상태 정보
파이프라인 실행시 지속적으로 수집되며 운영시 발생하는 다양한 문제들의 트러블슈팅시 유용
배치의 경우 시작과 종료 시간이 명확하지만, 실시간은 그렇지 않으므로 고정 주기로 통계 수집
모니터링 연계 - 특정 지표가 비정상적으로 작동할때 관련 경고 보내도록 구성 가능
주요 속성
execution_id: 실행 고유 식별자
pipeline_id: 연계된 파이프라인
start_time / end_time: 시작·종료 시각
status: SUCCESS / FAILED / RUNNING 등
error_message: 오류 상세(실패 시)
read_count / write_count: 처리된 행 수
read_bytes / write_bytes: 처리된 바이트 크기
extra: 데이터 저장 경로, 토픽 위치정보, 실시간 주기 등

데이터 품질 검사

수집/변환 파이프라인에 적용되는 품질 검사 정보
검사 유형 예시
누락 값 비율
중복 레코드 검사
컬럼별 값 범위 검증

스키자 레지스트리

데이터 소스·데스티네이션의 스키마(컬럼, 타입, 제약조건 등)를 관리
핵심 기능
버전 관리: 변경 이력 추적
호환성 정책: 전·후방 호환성 설정
API 제공: 스키마 조회·등록

7.4 메타데이터 계층 구현

메타데이터 계층은 업계 표준 소스나 상용 솔루션이 없음 → 직접 구현 하면서 데이터 플랫폼과 조직 규모에 따라 단계별 확장 권장

7.4.1 설정 파일 방식

가장 간단한 구현방법
장점: 단순·저비용, 소규모 플랫폼에 적합
단점: 설정 파일 수 증가 시 검색·관리 어려움
파이프라인 메타데이터
JSON/YAML 같은 포맷으로 관리
버전관리 - Git으로 설정 변경 이력 추적 가능
자동화 - CI/CD로 설정 파일을 클라우드 스토리지에 복사
처리내역 메타데이터
정적이지 않기 때문에 처리내역과 로그들을 계속해서 저장
로그는 툴없이 분석 어려움. 구조화된 로깅 필요
AWS 엘라스틱서치 제공

7.4.2 메타데이터 데이터베이스

설정 파일 방식이 파일이 많아질수록 설정값 찾기 어려운 문제를 데이터베이스 사용으로 해결
구조가 계속 변경되기 때문에 관계형보다 도큐먼트 저장소가 더 적합
쿼리로 검색 가능하기 때문에 대용량 관리에 용이함

7.4.2 메타데이터 API

조직 규모가 커지면 여러 팀에서 하나의 데이터베이스를 두고 작업하기 어려워짐 (영향도 문제)
규모가 큰 데이터 플랫폼은 API 계층을 도입해 API로만 메타데이터 조작

7.5 기존 솔루션

7.5.1 클라우드

AWS Glue
기능
데이터 소스·데스티네이션 정보 저장
파이프라인 실행 기록 및 통계 수집
스키마 레지스트리 역할
크롤러: 신규 테이블·파일 자동 인식 후 메타데이터 등록
제약
Glue ETL 컴포넌트의 일부로, 독립적 아키텍처 아님

7.5.2 오픈소스

DataHub
기능
데이터 소스 위치·설명 관리
최종 사용자 검색·탐색 UI 제공
단점
문서화 미흡으로 초기 도입 진입장벽
추가 인프라 구축 필요