본문 바로가기
기술 도서 리뷰

견고한 데이터 엔지니어링 Chapter 9.5~

by Seungyoon1786 2024. 11. 25.

이 글은 스터디 활동에서 진행하는 견고한 데이터 엔지니어링 정리입니다.

 

Fundamentals of Data Engineering

Chapter 9. Serving Data for Analytics, Machine Learning, and Reverse ETL Congratulations! You’ve reached the final stage of the data engineering lifecycle—serving data for downstream use cases (see Figure 9-1 … - Selection from Fundamentals of Data

www.oreilly.com

 

 


 

9.5 분석 및 ML을 위한 데이터 서빙 방법

 데이터 엔지니어링 분야에서 데이터 분석가와 머신러닝 엔지니어에게 필요한 데이터를 효율적으로 제공하는 것은 매우 중요하다. 데이터 제공 방법은 파일 교환부터 데이터베이스, 스트리밍 시스템, 쿼리 페더레이션, 쿼리엔진 및 데이터 공유까지 다양하며, 각각의 방법은 고유한 장점과 고려사항을 가지고 있다.

9.5.1 파일 교환

파일 교환은 데이터를 파일로 생성하여 전달하는 가장 기본적인 데이터 제공 방식이다. 이 방법은 간단하지만 다양한 용도로 활용된다.

 

활용사례

 

  • 비정형 데이터 분석: 고객 메시지 텍스트 파일을 활용한 감정 분석.
  • 정형 데이터의 통계 분석: 파트너로부터 받은 CSV 파일로 매출 분석 수행.
  • 이미지 데이터 활용: 경쟁사 제품 이미지를 제공하여 컴퓨터 비전 모델 적용.

버전관리의 어려움 ( 다른버젼의 파일을 이메일로 수신), 검색과 접근 제어의 한계가 있으나 협업 플랫폼 활용으로 버전 관리 문제 해결, 클라우드 스토리지나 데이터 레이크로 대용량 데이터를 효율적으로 관리함으로 개선할 수 있다.

 

 파일 교환은 데이터 사용 목적, 소비자의 처리 프로세스, 데이터 크기와 유형, 접근 권한 등 여러 요인에 따라 방식을 결정해야 한다. 특히 소비자가 공유 플랫폼을 사용할 수 없는 경우 파일 교환이 필수적이다.

 

9.5.2 데이터베이스

 데이터베이스는 데이터를 저장하고 제공하는 구조화된 방식으로, 데이터 분석과 머신러닝(ML) 워크플로의 중요한 계층이다. OLAP 데이터베이스(데이터 웨어하우스, 데이터 레이크)를 통해 데이터를 쿼리하여 제공하며, SQL 기반의 접근으로 데이터를 활용할 수 있다.

 

주요 특징

  • 권한 제어: 테이블, 열, 행 단위로 세밀한 접근 권한 설정이 가능.
  • 고성능 처리: 대규모 쿼리와 높은 동시성을 지원하며, SSD와 메모리 캐싱으로 성능을 향상.
  • 비용 관리: 클라우드 환경에서는 컴퓨팅과 스토리지를 분리하여 최적화된 리소스 사용 가능.

 

 BI 도구(Tableau, Looker 등)는 데이터베이스와 통합되어 데이터를 시각화하거나 분석을 위한 보고서를 생성한다. 데이터 과학자는 데이터베이스에서 데이터를 추출해 변환 및 피처 엔지니어링을 수행하고, 이를 ML 모델 훈련에 활용한다.

 

 데이터 엔지니어는 데이터베이스 성능과 비용을 최적화하고, 데이터 지연과 동시성을 관리하며, 분석 및 머신러닝 워크로드의 효율적인 리소스 분배를 지원해야 한다. Snowflake와 같은 플랫폼은 분석가와 데이터 과학자가 같은 환경에서 작업하도록 지원하며, 높은 처리량과 데이터 제공 속도를 보장한다.

 

9.5.3 스트리밍 시스템

 스트리밍 시스템은 실시간 데이터 처리를 통해 분석과 머신러닝(ML)에 중요한 역할을 한다. 운영 분석 데이터베이스는 최신 데이터와 과거 데이터를 결합해 스트림 데이터를 효율적으로 처리하며, 실시간 데이터 제공과 분석을 지원한다. 데이터 엔지니어와 과학자는 이 패러다임에 익숙해질 필요가 있다.

 

9.5.4 쿼리 페더레이션

 쿼리 페더레이션은 데이터 레이크, RDBMS, 데이터 웨어하우스 등 다양한 데이터 원천에서 데이터를 가져와 중앙 집중화 없이 쿼리를 실행하는 방식이다. 

 

 쿼리 페더레이션은 탐색적 분석과 데이터 접근 제어, 규정 준수에 적합하며, 원천 시스템에 과도한 리소스 소모를 방지하는 관리가 필요하다. 특히 원천 데이터의 읽기 전용 접근이 요구되는 경우 유용하며, 접근과 컴플라이언스가 중요한 상황에서 살펴볼수있는 좋은 옵션이다.

 

9.5.5 데이터 공유

 데이터 공유는 조직 내외에서 데이터를 교환하는 방식으로, 클라우드 기반 멀티테넌트 스토리지를 활용하여 보안과 접근 제어를 강화한다. 실제 쿼리는 데이터를 소싱하는 엔지니어가 아닌 데이터 소비자(분석가, 데이터 과학자)로 전환되며, 플랫폼(스노우플레이크, 레드시프트 등)이 이를 지원한다.

 

9.5.6 시맨틱 및 메트릭 레이어

시맨틱 및 메트릭 레이어는 비즈니스 로직과 메트릭을 정의하고 관리하는 도구로, 데이터 분석의 일관성과 정확성을 유지하는 데 도움을 준다. 이 레이어는 BI 도구나 데이터 변환 쿼리 작성 소프트웨어에 통합되며, 대표적인 사례로 Looker와 dbt가 있다.

 

주요 특징

  • 비즈니스 로직 표준화: 메트릭을 일관되게 정의하여 여러 쿼리와 분석 작업에서 반복과 불일치를 방지.
  • 도구별 특성:
    • Looker: LookML을 사용해 비즈니스 로직을 정의하고, SQL 쿼리를 생성해 보고서와 대시보드에 활용.
    • dbt: 데이터 변환과 파이프라인 자동화에 특화된 도구로, 복잡한 SQL 흐름을 관리.
  • 데이터 신뢰성 강화: 분석에서 "이 숫자가 정확한가?"라는 분석의 핵심 문제를 해결하여 데이터 품질과 신뢰성을 높인다.

9.5.7 노트북에서 데이터 제공

 노트북은 데이터 과학자가 데이터 탐색, 피처 엔지니어링, 모델 학습 등 다양한 작업에 활용하는 핵심 도구다. Jupyter Notebook과 JupyterLab은 가장 널리 사용되는 노트북 플랫폼으로, API, 데이터베이스, 데이터 웨어하우스 등 다양한 데이터 원천에 연결해 데이터를 불러올 수 있다.

  • 데이터 접근: pandas 같은 라이브러리를 사용해 CSV 파일을 로드하거나, API 및 데이터베이스와 연결해 데이터를 분석.
  • 확장성: 로컬 메모리를 초과하는 데이터 세트는 클라우드 기반 노트북이나 Dask, Ray, Spark 같은 분산 처리 도구를 활용해 처리.

 클라우드 관리형 도구(Amazon SageMaker, Google Cloud Vertex AI 등)와 오픈 소스 워크플로 플랫폼(Kubeflow, MLflow)을 통해 확장성과 효율성을 높일 수 있다. 데이터 과학자를 노트북에서 해방, 클라우드의 강력한 성능과 확장성 사용 가능.

 

9.6 역방향 ETL

역방향 ETL은 OLAP 데이터베이스에서 처리된 데이터를 다시 원천 시스템(CRM, ERP 등)으로 적제하여 제공하는 방식이다. 이는 데이터 엔지니어링 라이프사이클의 출력 측에서 데이터를 원천 시스템으로 되돌리는 프로세스를 포함한다.

활용 사례

  • CRM에서 데이터를 가져와 데이터 웨어하우스에서 분석하고, 분석 결과(예: 리드 스코어)를 다시 CRM으로 반환하여 영업 팀이 활용.
  • Google Ads 데이터와 같은 외부 시스템 데이터를 가져와 모델링 후 결과를 다시 해당 시스템에 로드.

장점

  • 데이터를 최종 사용자가 주로 사용하는 플랫폼으로 반환하여 마찰을 줄이고 활용도를 높임.
  • 데이터 기반 의사결정을 바로 실행 가능한 형태로 제공.

주의사항

  • 피드백 루프 생성 가능성: 예를 들어 잘못된 모델로 인해 반복적으로 비효율적인 결과를 초래할 수 있음.
  • 데이터와 프로세스를 철저히 관리해 오류를 방지 -> 모니터링 체계를 마련

9.7 함께 작업하는 사람

데이터 엔지니어는 데이터 제공 단계에서 여러 이해 관계자와 협력하며, 주요 대상은 다음과 같다:

  • 데이터 분석가
  • 데이터 과학자
  • MLOps/ML 엔지니어
  • 비즈니스 이해 관계자.

 데이터 엔지니어는 고품질의 데이터 제품을 제공할 책임이 있지만, 데이터의 최종 사용(분석, 해석, 실행)에 대한 책임은 사용자에게 있다. 데이터 엔지니어는 데이터 엔지니어링 라이프사이클과 데이터 사용 간의 피드백 루프를 이해하고 관리해야 한다.

9.8 드러나지 않는 요소

 데이터는 문제가 발생해도 즉각적으로 드러나지 않는 "침묵의 살인자"로 불리며, 제공 단계에서 이러한 문제를 식별하고 수정하는 것이 핵심이다. 데이터 엔지니어는 라이프사이클 전반에서 놓친 부분을 강조하고, 데이터를 개선할 방법을 찾아야 한다.

 

9.8.1 보안

데이터 제공 단계는 데이터 엔지니어링 라이프사이클에서 가장 큰 보안 표면을 가지며, 철저한 보안 관리가 필수적이다. 데이터 침해는 심각한 결과를 초래할 수 있으므로, 데이터 공유와 액세스 권한 관리를 신중히 설계해야 한다.

  • 최소 권한 원칙: 사용자나 시스템에 현재 작업에 필요한 최소한의 액세스만 부여. 필드, 행, 열 단위로 데이터 접근 범위를 제한하며, 필요 없어진 권한은 즉시 취소. 대부분의 데이터 제공은 읽기 전용으로 설정하며, 고급 권한은 최소화.
  • 멀티테넌트 환경 관리 : 필터링된 뷰를 통해 데이터 접근을 중재하고 공유 테이블로 인한 보안 위험을 완화. 읽기 전용 세부 제어를 사용해 데이터 공유 시 보안 유지.
  • 데이터 제품 관리 : 데이터 제품 사용 여부를 주기적으로 점검하여 효율성을 높임.

보안은 데이터 제공 과정에서 장애물이 아니라 핵심 지원 요소로 기능해야 함.

 

9.8.2 데이터 관리

데이터 관리의 핵심 목표는 데이터 제공 단계에서 고품질의 신뢰할 수 있는 데이터를 사용자에게 제공하는 것이다. 데이터의 신뢰성은 사용 여부를 결정짓는 가장 중요한 요소로, 이를 기반으로 피드백 루프를 구축하여 데이터 품질을 지속적으로 개선해야 한다.

  • 데이터 신뢰 구축: 사용자가 데이터를 신뢰할 수 있도록 문제를 보고하고 개선을 요청할 수 있는 프로세스를 마련. 데이터 변경 사항은 사용자에게 적극적으로 전달.
  • 데이터 난독화: 규제와 준수 요구를 충족하기 위해 합성, 스크램블, 익명화된 데이터를 제공하여 데이터 유출 위험을 줄이고 보호된 정보의 식별 가능성을 최소화.

9.8.3 데이터옵스

데이터옵스(DataOps)는 데이터 관리의 운영화를 통해 데이터 품질, 보안, 가용성 등을 모니터링하고 관리하는 프로세스이다. 데이터 제공 단계에서 특히 중요한 역할을 하며, 주요 모니터링 대상은 다음과 같다:

  • 데이터 상태 및 다운타임
  • 데이터를 서빙하는 시스템(대시보드, DB 등)의 지연
  • 데이터 품질
  • 데이터, 시스템 보안 및 접근 제어
  • 서빙되는 데이터 및 모델 버전
  • SLO달성을 위한 가동 시간

모니터링 측면을 해결하기 위한 도구 활용

  • 데이터 다운타임 최소화와 품질 최적화를 지원하는 데이터 관찰 도구.
  • ML 모델 성능과 시스템 연결 안정성을 모니터링하는 DevOps 도구.

버전 제어 및 배포 데이터옵스는 데이터 로직, ML 스크립트, 오케스트레이션 작업 등 모든 코드를 버전 제어하고 운영 환경으로 나눠 관리한다. 이는 데이터 제공의 안정성과 품질을 유지하는 데 필수적이다.

 

9.8.4 데이터 아키텍처

 데이터 아키텍처는 사용자들이 필요한 데이터를 빠르게 활용할 수 있도록 설계되어야 한다. 로컬 워크플로를 클라우드 환경으로 통합해 개발, 테스트, 프로덕션 간 협업을 강화하고, 데이터 통찰을 쉽게 공유할 수 있는 도구를 제공하여 데이터 활용을 지원한다.

9.8.5 오케스트레이션

데이터 제공 단계에서 오케스트레이션은 복잡한 작업을 구성하고 자동화하며, 팀 간 데이터 흐름을 조정해 데이터를 적시에 소비자에게 제공하는 역할을 한다.

  • 중앙 집중화 vs 분산화
    • 중앙 집중화: 작업 조정이 용이하나, 높은 표준과 자동화된 테스트를 통한 게이트키핑 필요. 잘못된 작업(DAG)이 시스템 전체를 중단시킬 위험 존재.
    • 분산화: 팀이 개별 데이터 흐름을 관리할 수 있으나, 팀 간 조정 부담 증가. 시스템 간 메시지 및 쿼리 전달 필요.

중앙집중된 오케스트레이션 소유권

  • DataOps 팀이 주로 담당하며, 데이터 엔지니어, 분석 엔지니어, DBA 또는 ML 엔지니어가 역할을 수행.
  • ML 엔지니어의 경우, 학습 프로세스를 조정하지만 추가적인 운영 복잡성을 관리하는 것은 부담이 될 수 있음.

9.8.6 소프트웨어 엔지니어링

데이터 제공은 점점 간소화되었지만, 데이터 엔지니어는 여전히 주요 제공 인터페이스와 코드가 데이터 전달에 미치는 영향을 이해해야 한다.

  • 코드 최적화: 데이터 과학자가 작성한 코드나 SQL이 스토리지 시스템에서 효율적으로 작동하도록 최적화.
  • CI/CD 구축: 데이터 및 ML 작업을 지원하기 위한 CI/CD 파이프라인과 Data/MLOps 인프라 설정.
  • 팀 지원: 데이터 팀이 자립할 수 있도록 필요한 시스템을 구축하고 교육 제공.

 임베디드 분석 지원 -  데이터 엔지니어는 애플리케이션 개발자와 협력하여, 프론트엔드에서 처리된 요청에 맞는 데이터를 빠르고 비용 효율적으로 반환하도록 지원한다.

 

문제

 

1. 시맨틱 및 메트릭 레이어의 주요 기능이 아닌 것은?

A. 비즈니스 로직과 메트릭을 정의하고 관리한다.
B. 데이터 분석의 일관성과 정확성을 유지한다.
C. 데이터 저장소의 물리적 구조를 최적화한다.
D. Looker와 dbt가 대표적인 도구이다.

더보기

정답: C

 

2. 역방향 ETL의 주된 목적은?

A. 데이터를 원천 시스템으로 다시 로드하여 최종 사용자가 활용하도록 함
B. 데이터 웨어하우스에서 데이터를 제거하는 것
C. ETL 프로세스를 거꾸로 수행하여 데이터 품질을 높임
D. 데이터 엔지니어링 라이프사이클의 입력 측에서 데이터를 수집함

더보기

정답: A

3. 쿼리 페더레이션에 대한 설명으로 옳은 것은?

A. 데이터 원천에서 데이터를 가져와 중앙 집중화 없이 쿼리를 실행한다.
B. 소스 데이터의 읽기 전용 접근이 불가능하다.
C. 원천 시스템에 과도한 리소스 소모를 반드시 유발한다.
D. 데이터 중앙 집중화를 통해서만 쿼리를 실행할 수 있다.

더보기

정답: A