Apache Atlas와 Great Expectations로 설계하는 데이터 거버넌스

Apache Atlas 메타데이터와 데이터 카탈로그, Great Expectations 품질 검증을 결합한 데이터 거버넌스 운영 체계를 정리한다.

2026-08-14 · 최초 발행 2025-10-14

데이터 자산을 신뢰 가능한 서비스로 만들려면

데이터 거버넌스는 데이터 자산이 생성되고 변환·배포·활용되는 전 과정에 정책, 표준, 책임, 통제를 세우고 운영하는 관리 체계다. 복잡한 데이터 파이프라인과 레이크하우스 환경에서는 메타데이터를 정리하는 일, 자산을 찾아 쓰게 하는 일, 품질을 검증하는 일을 따로 둘 수 없다.

Apache Atlas 기반 메타데이터 관리, 데이터 카탈로그, Great Expectations 기반 품질 관리는 이 흐름을 구성하는 핵심 축이다. 각각 기술·업무 메타데이터와 계보, 데이터 자산의 검색·신청·승인, 정확성·완전성·일관성·유효성 검증을 맡는다.

메타데이터부터 승인까지 이어지는 운영 구조

Apache Atlas는 기술 메타데이터를 자동 수집하고 스키마·분류·용어집을 한곳에서 관리한다. 데이터 계보를 추적할 수 있어 변경 영향 분석과 변경 관리에도 연결된다. PII, PCI 같은 분류 정책은 태깅 기반 접근통제(ABAC)와 연계할 수 있으며, REST API로 외부 파이프라인을 통합할 수 있다.

데이터 카탈로그는 조직 안의 데이터 자산을 검색하고 발견·평가·신청·승인·활용하도록 돕는 서비스 계층이다. 자산 인덱싱과 의미 체계 정렬, 평판·품질 지표 노출을 통해 셀프서비스 접근을 지원한다. 운영에서는 SLA, 소유자, 사전·사후 승인 프로세스를 모델링하고 BI·노트북·ETL 도구와 연결한다.

Great Expectations는 기대값(expectation) 규칙 세트로 품질 기준을 코드화한다. 배치와 스트리밍 데이터의 자동 검증·리포팅을 지원하며, 결과 저장과 Data Docs 대시보딩, 알림 연동도 가능하다. 검증 결과는 배포 게이트(quality gate)가 되어 파이프라인 무결성을 지키는 기준이 된다.

정책과 워크플로에는 표준 스키마, 용어집, 분류, 민감도 정책의 수립·변경 관리가 포함된다. 품질 기준과 승인 규칙도 형상 관리 대상이다. 데이터 라이프사이클은 도입→검증→카탈로그 게시→소비의 단계로 두고, 단계별 책임(RACI)과 승인 절차를 정의한다.

운영 중에는 lineage를 통해 장애의 영향 반경을 추적해 MTTR 단축에 활용한다. 카탈로그 도입률, 데이터 품질 점수, 접근 승인 TAT를 관리하고 스키마·분류·정책 변경의 감사 추적성을 확보한다. 실패 복구와 롤백 전략, 자동화 재시도 메커니즘도 함께 정립한다.

통제/일관성출력처리입력검증 실패스키마 불일치인덱싱 실패원천 시스템DB/파일/이벤트스키마/데이터 샘플메타데이터 스캐너(커넥터/스크레이퍼)Apache Atlas분류/용어집/계보Great Expectations품질 검증카탈로그 인덱서검색/지표데이터 카탈로그검색/신청/승인소비 계층BI/ML/API정책 엔진분류·ABAC승인 게이트카탈로그 게시 트랜잭션중단/격리재시도·롤백스키마 레지스트리버전 상승/차단DLQ/재처리

입력 단계에서는 원천 스키마와 데이터 샘플을 수집한다. 이후 메타데이터 스캔, Atlas 분류·계보 등록, GE 품질 검증, 카탈로그 인덱싱이 이어진다. 카탈로그는 승인 후 서비스되며, 게시 트랜잭션에서는 메타데이터 스냅샷과 품질 결과를 원자적으로 커밋하고 분류 정책을 검증한다. 검증 실패는 격리·재시도로, 스키마 불일치는 버전 관리·차단으로, 인덱싱 실패는 DLQ 처리로 대응한다.

구성 요소별 책임과 운영 특성

구성요소 역할/강점 확장성 일관성 안정성 운영 편의
Apache Atlas 용어집·분류·계보·정책의 표준 메타데이터 허브 수십만 엔터티 수평 확장 가능 타입/분류 스키마로 강한 일관성 HA 구성/백업 지원 REST·Hook·Kafka 통합 용이
데이터 카탈로그 검색/발견/승인/지표 노출 프런트 인덱스 샤딩으로 수평 확장 승인/게시 트랜잭션으로 일관성 캐시·서치 엔진 이중화 SSO/권한/감사 연동 용이
Great Expectations 규칙 기반 데이터 품질 검증·게이트 분산 실행/병렬 검증 규칙/런 결과의 버전 일관성 재시도/체크포인트 코드로 관리·CI/CD 친화

특정 벤더·버전별 상세 성능은 환경에 의존한다. 벤치마크 전에는 현행 부하와 SLA를 기준으로 POC를 수행한다.

온보딩, 검증, 게시, 개선을 연결하는 흐름

신규 데이터세트의 DDL과 샘플이 들어오면 스캐너가 스키마와 통계를 수집하고, Atlas 엔터티·용어집 매핑 및 민감도 분류를 적용한다. 이 단계의 결과는 초기 계보와 정책 태깅이다.

품질 규칙은 데이터 소유자 요구사항과 표준 규칙 템플릿을 입력으로 삼는다. GE 기대값 세트를 작성한 뒤 리뷰·승인을 거쳐 리포지토리에 머지하고, 버전을 태깅해 파이프라인의 체크포인트에 연결한다.

게시 단계에서는 최신 메타데이터 스냅샷과 품질 검증 결과를 기준으로 게시 트랜잭션을 실행한다. 성공하면 카탈로그에서 검색과 접근 신청이 가능한 상태가 되고, 실패하면 롤백한다.

운영 개선은 품질 점수, 승인 TAT, 이슈 티켓에서 출발한다. SLA 위반 알림 이후 lineage로 원인을 파악하고, 규칙·스키마·파이프라인을 개선해 지속적 품질 향상과 재발 방지 조치로 이어간다.

품질 검증과 Atlas 등록 코드

전제조건은 다음과 같다.

  • Python 3.10+, 네트워크에서 Apache Atlas API 접근 가능 환경
  • Great Expectations 0.18+, pandas 2.x
  • Atlas 2.3+ 서버 기동, 기본 인증 계정 보유
  • 최신 명세 및 API는 환경별 상이 가능, 사전 버전 확인 필요

Great Expectations로 품질을 검증하고 결과를 요약하는 예시다.

# 환경: pip install "great_expectations>=0.18.0" pandas
import pandas as pd
import great_expectations as gx

# 샘플 데이터
df = pd.DataFrame({
    "order_id": [1, 2, 3, None],
    "amount": [10.5, 0.0, 20.1, 5.0],
    "currency": ["USD", "USD", "EUR", "USD"]
})

# GX 컨텍스트 및 데이터소스 구성
context = gx.get_context()
ds = context.sources.add_pandas("pandas_src")
asset = ds.add_dataframe_asset("orders_asset")
batch = asset.get_batch(batch_parameters={"dataframe": df})

validator = context.get_validator(batch=batch)

# 기대값 정의
validator.expect_column_values_to_not_be_null("order_id")
validator.expect_column_values_to_be_between("amount", min_value=0, strict_min=False)
validator.expect_column_values_to_be_in_set("currency", {"USD", "EUR"})

# 검증 수행
result = validator.validate()
summary = {
    "success": result["success"],
    "statistics": result["statistics"],
    "results_count": len(result["results"])
}
print(summary)

# 실패 시 게이트 처리
if not result["success"]:
    raise SystemExit("품질 검증 실패로 파이프라인 중단")

다음 코드는 Apache Atlas에 테이블 엔터티를 등록하고 PII 분류를 부여한다.

# 환경: pip install requests
import requests
from requests.auth import HTTPBasicAuth

ATLAS = "http://atlas-host:21000"
AUTH = HTTPBasicAuth("admin", "admin")

# 1) 테이블 엔터티 생성(존재 시 upsert)
entity = {
  "entities": [{
    "typeName": "hive_table",
    "attributes": {
      "qualifiedName": "db.orders@cluster1",
      "name": "orders",
      "db": {"typeName": "hive_db", "uniqueAttributes": {"qualifiedName": "db@cluster1"}},
      "owner": "data_team",
      "description": "주문 테이블"
    }
  }]
}
r = requests.post(f"{ATLAS}/api/atlas/v2/entity", json=entity, auth=AUTH, timeout=15)
r.raise_for_status()
guid = r.json()["guidAssignments"].popitem()[1]

# 2) 민감도 분류(PII) 부여
classification = {"classifications": [{"typeName": "PII"}]}
r = requests.post(f"{ATLAS}/api/atlas/v2/entity/guid/{guid}/classifications",
                  json=classification, auth=AUTH, timeout=15)
if r.status_code not in (200, 204):
    raise RuntimeError(f"분류 태깅 실패: {r.text}")
print("Atlas 등록/분류 완료")

Atlas 타입 스키마(hive_table 등)는 환경에 맞게 조정해야 한다. 인증·전송 암호화(TLS)와 역할 기반 접근 통제를 연계하고, 운영 전에는 샌드박스에서 사전 검증한다.

적용 범위와 기대 효과

금융 환경에서는 고객 PII 자동 분류와 마스킹 정책을 적용하고, Atlas 계보로 영향도를 분석하며, GE 룰로 계좌·거래값 유효성을 검증할 수 있다. 커머스에서는 상품·주문 데이터를 카탈로그에 게시하기 전 품질 게이트를 두고 재고·가격 이상 탐지와 SLA 모니터링에 활용한다.

생산 파이프라인의 데이터 제품 승인에는 게시 트랜잭션을 적용해 실패 시 롤백과 소유자 알림, 승인 이력 감사 추적을 연결할 수 있다. 규제 준수에서는 용어집과 보고서를 매핑하고 변환 로직 변경 시 계보 증적을 제공하며 접근 승인 TAT와 로그를 관리한다. 품질 결함의 다운스트림 재처리를 막고 불필요한 BI 쿼리·엑스포트를 줄이는 비용 최적화도 가능하다.

데이터 탐색·발견 시간은 3050% 단축되고, 품질 결함률은 4070%, 파이프라인 실패율은 2040% 감소하는 효과가 제시된다. 변경 영향 분석 시간은 60% 이상, MTTR은 3050% 단축된다. 데이터 신뢰도와 재사용성이 높아지고, 규제 감사 대응력 및 리스크 저감, 데이터 제품 개발 속도와 협업 품질 향상으로도 이어진다.

보안, 비동기 파이프라인, 코드형 운영의 균형

Atlas·카탈로그·GE 실행 환경은 SSO와 RBAC/ABAC를 통합하고 감사 로그를 중앙 수집하는 방식이 권장된다. 민감 데이터는 분류 기반 정책에 물리적 데이터 마스킹·토큰화를 병행한다. 세분화된 권한 설정은 복잡도를 높이지만 규제 준수 이점이 있다.

메타데이터 저장소는 이중화하고 검색 인덱스는 별도로 스케일아웃하며, 카탈로그 캐시는 계층화한다. Kafka 같은 이벤트 중심 방식으로 스캔·검증·인덱싱을 비동기 파이프라인으로 구성할 수 있다. 실시간성은 높아지지만 운영 복잡도와 관측성 요구도 함께 커진다.

규칙과 정책은 Policy as Code로 관리하고 CI/CD와 Canary를 적용한다. 품질 점수, 게시 성공률, 승인 TAT를 KPI 대시보드로 관리하며 규칙을 주기적으로 리팩토링한다. 초기 도입 비용은 증가할 수 있으나 장기 운영의 안정성과 예측 가능성을 확보하는 선택이다.

데이터 거버넌스Apache Atlas데이터 카탈로그Great Expectations데이터 품질