취미가 좋다

[ 데이터 인프라 ] Data Modeling, Worflow Manager 본문

Data Engineer/데이터 인프라

[ 데이터 인프라 ] Data Modeling, Worflow Manager

benlee73 2021. 8. 24. 15:21

Data Modeling

소스로부터 데이터를 받지 않고, Data Warehouse / Data Lake와 연결되어 있다.

1. dbt (data build tool)

: dbt is a transformation workflow that lets teams quickly and collaboratively deploy analytics code following software engineering best practices like modularity, portability, CI/CD, and documentation. Now anyone who knows SQL can build production-grade data pipelines.

 

데이터 분석가들을 위한 분석 엔지니어링 도구

 

보통 데이터 분석가들은 데이터 인프라 엔지니어가 데이터 인프라를 구축하여 제공하는 데이터를 가져다가 사용한다.

dbt는 데이터 분석가들이 직접 데이터를 변환할 수 있는 개발 환경을 제공한다.

 

SQL로 작성하여, 어떤 데이터를 가져와서 어떻게 변화해볼 것인지, 데이터를 모델링하도록 테스트할 수 있는 웹 UI를 제공한다.

 

데이터 변경을 자유롭게 하고, 버전 관리도 할 수 있고, 그 내용을 담은 document도 만들 수 있다.

 

fivetran은 자신의 transformation 기능도 지원하지만, dtb를 붙여서 사용하는 기능도 지원한다.

ETL의 Transform을 진행할 때, dbt에 정해놓은 transform할 수 있다.

 

2. LookML

Looker는 데이터 분석가들이 대시보드나 리포트를 만들 때 사용하는 BI 도구이다.

LookML은 데이터 분석가가 원하는 데이터를 가져오기 위해, 직접 transform 할 수 있도록 만든 데이터 모델링 도구이다.

하지만 더 저렴하고 사용하기 편한 dbt를 쓰는 것이 더 좋아보인다.


Workflow Manager

데이터 소스에서 데이터를 가져와 Data Warehouse로 옮기는데, 그 단위가 그 단위가 workflow이다.

1. Airflow

주된 업무, 기능

1) task scheduling : 언제 어떤 task를 수행할 것인지

2) distributed execution : 여러 대로 분산하여 작업을 수행

3) dependency management : 의존성을 통해, 이전 workflow가 끝나야 실행되도록 한다.

의존성으로 필요한 이전 workflow가 끝나야 다음 workflow를 진행하도록 하는 예시

  • 하둡 에코 시스템의 Oozie(하둡 job, workflow를 스케줄링하는 도구), Luigi(파이썬 패키지) 와 유사하다.
  • Scalable : modular 구조로 되어 있어서 worker만 늘리면 무제한 scalable 가능하다.
  • Dynamic : 모든 파이프라인이 python 코드로 되어 있어서, 동적으로 원하는 대로 파이프라인을 만들 수 있다.
  • Extensible : 다양한 라이브러리로 확장할 수 있다.
  • Elegant : template engine을 사용할 수 있다.
  • Pure Python : 커맨드라인, XML 없이 모든 것이 python 코드로 되어 있어서, 쉽게 작업할 수 있다.
  • Useful UI : UI에서 관리해서, 어떤 것이 실행되고 문제가 있는지 편히 볼 수 있다.
  • Robust Integrations : 다양한 클라우드 플랫폼(AWS, Azure...)과 연동된다.
  • Easy to Use
  • Open Source

Airflow's General Architecture

웹서버를 통해 웹 UI를 제공한다.

main scheduler가 많은 workers를 관리하여, workflow들을 처리하고 orchestration한다. workers가 여러 환경에서 분산되어 실행될 수 있는 것이 airflow의 장점이다.

그 결과를 metadata DB에 저장하고, Task 실행 로그들도 저장한다.

 

DAGs (Directed Acyclic Graph)

방향성을 가지지만 비순환하는 그래프이다. (방향을 가지지만 루프를 생성하지 않는다. 즉, 출발지에서 다시 출발지로 돌아오지 않는다.)

Airflow는 workflow를 DAG 으로 관리하여, 의존성을 부여할 수 있다.

 

Argo

쿠버네티스 환경에서 동작하는 Workflow 엔진으로, 마찬가지로 DAG를 이용한다.

Luigi

파이썬 패키지로, airflow와 비슷한 역할을 수행하지만, 분산처리가 쉽지 않았다.

 

 

2. Dagster

Dags 로 구성된 파이썬 코드로 데이터를 변환하는 모든 것들을 하나의 어플리케이션처럼 만드는 툴이다.

Pandas, Spark, SQL, DBT로 구현한 것들의 파이프라인을 만들어주고, 로컬이나 클라우드에서 실행할 수 있도록 한다.

프론트엔드 어플리케이션을 리액트로 짜는 것처럼, 데이터 변환 로직을 데이터 어플리케이션으로 만들어주는 것이 Dagster이다.

Dagster는 로컬이든 클라우드든 어디서든 실행할 수 있다.

 

Airflow는 Task 기반이고, Dagster는 Data 기반으로 동작한다. 

 

3. Prefect

Workflow를 자동화하는 엔진으로, Airflow와 기본적으로 같다.

Airflow보다 늦게 출시된 오픈소스로, 더 사용하기 쉽고 현대적이다.

(버전 관리 기능, workflow 자체에 파라미터를 주는 기능 등)


참고

https://youtube.com/playlist?list=PLL-_zEJctPoJ92HmbGxFv1Pv_ugsggGD2 

 

최신 데이터 인프라 이해하기

 

www.youtube.com

 

 

Comments