🌿 jadelog
⚙️ Data Engineering

AWS DataZone에서 OpenLineage 기반의 Airflow 데이터 계보 그리기

status
Public
date
May 2, 2025
slug
aws-datazone-openlineage-airflow
summary
AWS DataZone과 OpenLineage를 연동하여 Airflow 기반의 데이터 계보(Lineage)를 시각화하는 아키텍처와 구축 방법을 다룹니다. 이를 통해 복잡한 데이터 파이프라인의 흐름을 투명하게 관리하고 추적성을 확보하는 기술적 노하우를 확인해 보세요.
type
Post
category
⚙️ Data Engineering
tags
Airflow
Data Lineage Tracking
thumbnail
series
Tech Blog InQuery
Amazon Web ServicesAmazon Web ServicesAWS DataZone에서 OpenLineage 기반의 Airflow 데이터 계보 그리기 | Amazon Web Services

배경

  • Airflow는 Data mart를 포함한 데이터 파이프라인 구축 및 관리에서 널리 사용되는 도구
    • 데이터 계보를 통해 복잡한 데이터 파이프라인을 효율적으로 운영하며, 데이터 기반 의사결정의 신뢰성과 조직의 데이터 활용 능력을 향상
       
    • 데이터 출처와 변환 과정을 명확히 추적할 수 있어 데이터의 신뢰성을 보장 & 문제 발생 시 원인 빠르게 파악
    • 데이터 파이프라인의 변경이 미치는 영향을 사전에 분석 → 위험 최소화
      • +) 데이터 변경하는 것보다 차라리 컬럼 하나 새로 만드는 방향으로 업무 진행하는 흐름
      → 데이터 품질 보장, 다운타임을 줄임, 시스템 안정성을 높임
       
    • 데이터 계보는 규제 준수와 감사 요구사항 파악에 도움
      • +) 금융권에서 계속 감사 들어오는 거 생각해보면 규제 준수는 점점 강화되고 감사 요구사항은 많아지는 방향으로만 갔다
      → 조직 내 데이터 거버넌스 정책을 강화하여 데이터 소유권, 사용 권한, 보안 정책을 효과적으로 관리
 

솔루션 개요

  • Amazon DataZone의 데이터 계보 기능을 활용하여 Airflow의 데이터 계보를 그릴 수 있음
    • Amazon DataZone 서비스는 DataZone 라이프 사이클 내에서 발생한 게시와 구독 이벤트에 대해서만 데이터 계보가 표현됨 → 그 외에는 직접 작성해야 함
    • AWS Lambda를 사용하여 Airflow에 대한 계보를 OpenLineage 표준에 맞게 DataZone에 업데이트 하는 방법을 설명
이거는 openai가 그려준 이미지
이거는 openai가 그려준 이미지
 
+) AWS OpenLineage란? (w/ Perplexity.ai)
데이터 생애 주기 관리 서비스
AWS OpenLineage는 AWS 서비스(특히 Amazon DataZone)와 통합된 오픈소스 데이터 계보(Lineage) 추적 프레임워크를 의미합니다. OpenLineage는 데이터 파이프라인의 출처, 변환 과정, 소비 패턴을 추적하기 위한 개방형 표준으로, AWS는 이를 Amazon DataZone에 통합해 데이터 계보 시각화 기능을 제공합니다245.
[주요 특징]
  1. 표준화된 계보 정보 수집:
    1. OpenLineage는 데이터셋, 작업, 실행 기록에 대한 메타데이터를 표준화된 API로 수집합니다. AWS는 이 API를 활용해 Amazon S3, AWS Glue 등 다양한 서비스에서 발생하는 데이터 이동을 추적할 수 있도록 지원합니다24.
  1. 종단간 계보 시각화:
    1. Amazon DataZone의 OpenLineage 호환 API를 통해 데이터 생산자는 소스(예: S3 버킷) → 변환(예: Glue ETL) → 소비(예: 분석 팀)의 전체 흐름을 시각화할 수 있습니다. 이를 통해 데이터 변경 시 영향 범위를 신속히 파악할 수 있습니다34.
  1. 버전 관리:
    1. 각 계보 이벤트를 버전화해 과거 데이터 변환 기록을 비교/분석할 수 있습니다. 이는 데이터 무결성 검증 및 감사 목적에 활용됩니다24.
  1. 멀티 클라우드 호환:
    1. OpenLineage 자체는 AWS 외에도 Google Cloud Dataplex 등 다른 플랫폼과도 통합 가능한 개방형 표준입니다. 다만 AWS 환경에서는 주로 DataZone을 통해 구현됩니다56.
 
[AWS DataZone에서의 구현 방식]
  • 계보 이벤트 캡처: DataZone 도메인 관리자는 OpenLineage API를 사용해 외부 시스템(예: Redshift)에서 발생하는 계보 이벤트를 수동으로 추가할 수 있습니다7.
  • 시각화 인터페이스: DataZone 콘솔에서 계보 그래프를 실시간으로 확인하며, 특정 자산의 구독자/변경 이력을 추적할 수 있습니다34.
이 기능은 현재 모든 AWS 리전에서 평가판으로 제공되며, 자세한 절차는 AWS 공식 문서에서 확인할 수 있습니다24.
 

솔루션 아키텍쳐

notion image
  • Production 계정과 Governance 계정은 Transit Gateway 를 통해 연결되어 네트워크 통신이 가능함
  • Production 계정에서 데이터의 저장 및 메타데이터 생성 작업이 이뤄짐
+) Production은 정말 데이터를 수집하는 것이고, Governance는 데이터 관리 계정이라 Production에서 로그를 탐색하고 Lambda로 전송하는 이벤트는 역할에 어긋나는 Action이 되는 것

  1. RDS는 데이터를 저장하고, 사용자의 요청에 따라 View Table을 생성
  1. AWS Glue Crawler가 RDS 데이터를 스캔하여 메타 데이터를 자동으로 생성, Glue Data Catalog에 저장
    1.  
  1. MWAA(Amazon Managed Workflows for Apache Airflow)에서 매일 View Table을 갱신하는 Airflow Job이 배치 형태로 동작
  1. 동작할 때마다 로그 정보를 CloudWatch에 저장 → 이 정보를 Assume Role을 이용해서 Governance 계정에서 조회
  1. Governance 계정에서는 Airflow에 대한 데이터 계보 작성과 사용자 접근 제어가 이뤄짐
    1.  
  1. Lambda 함수는 매시간 Airflow Job에 대한 로그를 가져옴
  1. 로그에서 프로시저 함수를 가져오고 함수 이름을 이용해 프로시저 정의 요청 쿼리문을 이용해 Input TB, Output TB 이름을 조회
    1. +) Jennifer에서 수행문 중에 SQL 쿼리 확인할 수 있음. 이처럼 쌓이는 SQL 쿼리 로그를 분석한다는 의미
      import os import boto3 import json import re from openlineage_sql import parse from psycopg2.sql import SQL, Identifier, Literal procedure_name = re.search(r'\b([a-zA-Z_]+)\b(?=\()', query).group(1) # 프로시저에 대한 정의를 요청하는 쿼리 요청 sql_query = """ SELECT PROSRC FROM PG_CATALOG.PG_PROC WHERE PRONAME = {}; """ procedure_definition = run_query(config.db_secret_name, SQL(sql_query).format( Literal(procedure_name) ) ) if not procedure_definition: print(f"[ERROR] {procedure_name} 프로시저에 대한 정의가 존재하지 않습니다.") return 'error' else: dml_pattern = r'(DELETE.*?;|INSERT.*?;|UPDATE.*?;|MERGE.*?;)' dml_statements = re.findall(dml_pattern, procedure_definition[0]['prosrc'], re.DOTALL | re.IGNORECASE) sql_query = ''.join(dml_statements) # openlineage_sql을 이용해 파싱한다. meta = parse([sql_query]) in_tables = meta.in_tables out_table = meta.out_tables[0]
  1. 조회한 정보과 Airflow Job 정보를 조합한 후, 데이터 계보를 Amazon DataZone에 업데이트
 

결론

이런 구성 요소를 확인하고자 하는 이유는 다음과 같다.
몇몇 서비스업에서는 (비용 문제나 내부 사정으로 인해 관리 서비스를 사용하기 보다) 직접 이런 서비스를 구성하는 것을 원한다는 이야기를 들었기 때문이다.
 
이런 구조로 Airflow 데이터를 DataZone로 관리할 수 있게 하는구나를 알면, 이후에 같은 서비스가 아니더라도 유사한 서비스를 연결해서 구성할 수 있지 않을까.
 
암튼간에 까놓고 보면 쉬운데 멀리서 보면 어려운 구상이었다.
Series : Tech Blog InQuery
  • 1.
    Redis 캐시로 몰려드는 트래픽을 견디다 - 토니모리 공식몰 성능 개선기
  • 2.
    PKCE:OAuth를 더욱더 안전하게 만드는 방법
  • 3.
    AWS DataZone에서 OpenLineage 기반의 Airflow 데이터 계보 그리기
  • 4.
    Chaos Toolkit 을 이용한 카오스 엔지니어링(Chaos Engineering)
  • 5.
    성능 향상을 위한 SQL 작성법
  • 6.
    MongoDB WiredTiger의 파일 구조
Related Posts
⚙️ Data Engineering
PySpark: 대용량 분산 처리 DataFrame 기초

NEWPySpark: 대용량 분산 처리 DataFrame 기초

Mar 30, 2026

PySpark는 Apache Spark를 Python 환경에서 사용할 수 있게 해주는 API로, 대량의 데이터를 분산 처리할 수 있다. 핵심 구조로는 Driver Node, Worker Node, Cluster Manager가 있으며, RDD와 DataFrame이 주요 데이터 구조이다. 학습 로드맵은 DataFrame 기초 조작, 스파크 최적화 및 고급 기능, 확장 모듈 다루기로 구성된다. Lazy Evaluation, SparkSession 생성, 데이터 불러오기 및 변환, 집계, 조인 등의 기법을 통해 성능을 최적화할 수 있다. 또한, Spark SQL, Structured Streaming, MLlib 등의 확장 모듈을 활용하여 데이터 엔지니어링을 강화할 수 있다.

PySpark
Data Engineering
⚙️ Data Engineering
Series: 26년 학습

데이터를 움직이는 힘: 데이터 거버넌스 & 엔지니어링 실전 강의 정리

Dec 6, 2025

모두의 연구소 [데이터를 움직이는 힘: 데이터 거버넌스 & 엔지니어링 실전] 강의 수강

Data Engineering
데이터를 움직이는 힘
🤔 Database
Series: Tech Blog InQuery

MongoDB WiredTiger의 파일 구조

Dec 6, 2025

제조 데이터 실무 흐름부터 데이터 거버넌스 프레임워크, 파이프라인 자동화 및 클라우드 ETL 실습까지 데이터 엔지니어링의 핵심 과정을 상세히 정리했습니다. 실무 적용 가이드와 함께 데이터 품질 진단 및 표준화 노하우를 확인해 보세요.

WiredTiger File Structure NoSQL Performance Optimization Tech Blog 글 읽기
Database
🤔 Database
Series: Tech Blog InQuery

성능 향상을 위한 SQL 작성법

May 5, 2025

인덱스 구조와 스캔 원리를 기반으로 쿼리 성능을 극대화하는 실무적인 SQL 작성 가이드를 제시합니다. 커버링 인덱스 활용, 정렬 연산 대체, LIMIT 최적화 등 데이터베이스 부하를 줄이는 구체적인 튜닝 기법을 확인해 보세요.

SQL
NoSQL Performance Optimization