빅데이터 분석을 위한 ELT 플랫폼 BQ Workflow vs Dataform
조대협 (http://bcho.tistory.com)
빅데이터 분석에 시스템에서 데이터 분석에 앞서서, 데이터 수집 (Ingestion),데이터 변환(Transformation) 과정이 있고, 이 과정은 여러개의 스텝으로 구성이 된다. 그래서 이런 스탭들을 관리하기 위해서 오케스트레이션 솔루션이 사용되는데, 오픈소스로 가장 많이 사용되는 솔루션 중의 하나는 Apache Airflow이다. Airflow는 재처리 로직, 병렬처리, 외부 컴포넌트 호출등 많은 기능을 폭넓게 지원하지만 문제는 그만큼 복잡도가 높다는 문제이다. (Airflow에 대한 설명 : https://bcho.tistory.com/1184 )
현재의 빅데이터 분석은 ETL (Extract Transformation Loading)방식을 사용했는데, 이 방식은 데이터 분석 시스템 (데이터웨어하우스나 데이터레이크) 앞단에 별도의 ETL 도구를 설치하여, 데이터를 수집한후 이 ETL 도구에서 데이터를 변환하는 과정을 수행하였다. 그러나 현대의 데이터 분석 시스템의 성능이 올라가면서 ETL 보다는 ELT (Extract Loading Transformation) 방식으로, 데이터를 먼저 분석 시스템에 적재한 후에, 분석 시스템 안에서 SQL을 이용해서 정재 및 변환 작업을 수행한후, 결과를 목표 테이블 (Destination Table)에 저장하는 구조를 가는 형태로 진화하고 있다. 이렇게 할 경우 데이터 변환 과정이 데이터 분석 시스템 안으로 들어오면서 전체 시스템 아키텍처가 간소화되고, SQL만을 이용해서 데이터 변환을 하기 때문에, 러닝커브가 낮아지고 운영이 단순화 된다.
이런 ELT 방식을 지원하는 대표적인 도구로는 dbt와 dataform이 있는데, dataform은 구글에 인수되면서 구글의 데이터 분석 솔루션인 BigQuery 지원하게 되었다. Dataform은 구글 클라우드 내에서 dataform 서비스와 bigquery workflow 서비스 두가지로 제공되는데, dataform은 기존의 dataform을 그대로 사용하는 형태이고, workflow는 dataflow 앞에 GUI를 덧씌우고, 인터페이스를 쉽게 개선한 버전으로 보면 된다.
Dataform
Dataform은 기본적으로 SQL의 확장버전인 SQLX를 이용하여 코드를 작성한다. SQLX는 순차적으로 수행하고자 하는 SQL문장 및 추가적인 설정 정보가 들어가 있다.
애플리케이션 코드를 작성하는 것과 같이 SQLX를 이용하여 코드를 작성할 수 있으며, 개발/운영 환경을 별도로 제공한다. 특히 코드를 기반으로 하기 때문에, git 등을 이용하여 버전관리와 추적등이 용이하다.
<fig. Sqlx를 이용한 dataform 프로젝트 관리 >
여기에 더해서 아래와 같이 작성된 코드의 수행순서를 그래프 형태로 표현하여 데이터 변환 작업이 어떤 순서로 수행이 되는지를 추적할 수 있다.
<fig. Dataform SQLX 코드를 그래프로 시각화 한 화면>
BigQuery Workflow
Dataform이 코드 기반으로 ELT 워크플로우를 구현한다고 하면, BigQuery Workflow는 GUI 기반으로 워크플로우를 구현한다. 특히 SQLX와 같은 별도의 문법을 사용하지 않고, 아래 그림과 같이 각 Step을 정의한후에, 각 Step별로 실행하고자하는 SQL만을 입력하기 때문에, 훨씬 러닝 커브가 낮다. 또한 SQL 뿐만 아니라 Jupyter notebook을 스텝에 넣을 수 있기 때문에, Python 기반의 복잡한 로직을 구현할 수 있다는 장점을 가지고 있다
그러나 반대로 단점은 Dataform의 경우에는 코드 기반이기 때문에 버전관리와 코드 기반의 형상 관리가 가능하지만, Workflow의 경우에는 별도의 형상관리가 불가능하다는 단점을 가지고 있다.
결론
본격적인 데이터 분석 조직을 보유하고 있으며, 많은 복잡한 데이터 파이프라인이 있는 경우,관리의 편의성을 위해서 코드 기반의 Dataform을 고려하는 것이 좋으며, 데이터 분석 조직의 규모가 작거나 또는 데이터 처리 프로세스의 복잡성이 낮을때는 상대적으로 러닝 커브가 낮은 BigQuery workflow를 고려하는 것을 권장한다.
'빅데이타 & 머신러닝' 카테고리의 다른 글
빅데이터 분석을 위한 메달리온 아키텍처 (0) | 2025.03.04 |
---|---|
분산형 데이터 분석 아키텍처-데이터 매쉬 (3) | 2021.01.04 |
파이썬을 이용한 데이타 시각화 #1 - Matplotlib 기본 그래프 그리기 (3) | 2017.09.23 |
데이타 워크플로우 관리를 위한 Apache Airflow #1 - 소개 (2) | 2017.07.15 |
BI 툴 태블로(Tableau) (0) | 2016.03.14 |