본문 바로가기
대외활동/DateEngineering Zoom Camp

[DE-Zoomcamp] 4. Analytics Engineering (dbt): Analytics Engineering 개념과 설계 흐름

by 드인 2026. 2. 16.
이 글은 Data Engineering Zoomcamp의 Module 4: Analytics Engineering (dbt) 를 바탕으로
Analytics Engineering의 개념부터 데이터 모델링의 의미, dbt를 활용한 모델 정의 및 테스트 구조, 그리고 Modern Data Stack 환경에서의 역할과 설계 흐름을 정리한 글입니다.

 

 

목차

  1. Analytics Engineering이란 무엇인가
  2. Analytics Engineering 출현 배경과 필요성
  3. Analytics Engineer가 하는 일
  4. Data Modeling의 의미
  5. dbt가 Analytics Engineering에서 중요한 이유
  6. dbt의 주요 기능
  7. Modern Data Stack과 Analytics Engineering
  8. 필요한 기술 요소
  9. Analytics Engineering과 데이터 파이프라인 관계
  10. 참고자료/출처

 

1. Analytics Engineering이란 무엇인가

 Analytics Engineering은 분석용 데이터 모델을 설계하고 구현하며, 이를 소프트웨어 엔지니어링 관점에서 운영 가능하게 만드는 역할입니다. 단순 SQL 분석이 아니라 데이터를 비즈니스 의미 단위로 구조화하고, 재사용·검증·문서화·자동화까지 가능한 상태로 만드는 활동 전체를 지칭합니다.

  • 데이터 모델 정의
  • 비즈니스 의미가 반영된 테이블 설계
  • 반복 가능하고 품질 검증 가능한 파이프라인 구축


2. Analytics Engineering 출현 배경과 필요성

전통적으로 데이터 팀은 다음과 같이 역할이 나뉩니다.

  • Data Engineer: 인프라, 파이프라인, 배치/스트리밍
  • Data Analyst / BI Engineer: 대시보드, KPI 산출, ad-hoc 분석

이 구조에서는 다음과 같은 문제가 자주 발생합니다.

  • 엔지니어 : 비즈니스 로직 반영에 시간이 오래 걸림
  • 분석가 : 인프라/품질/확장성 확보에 한계 존재

이 문제점을 극복하기 위해 데이터 분석에서 소프트웨어 엔지니어링 관행을 적용하는 역할이 필요해졌고, 이를 Analytics Engineering이라고 합니다.


3. Analytics Engineer가 하는 일

3-1. 비즈니스 논리를 데이터 구조로 변환

  • 여러 시스템에서 들어온 raw 데이터를 통합
  • 비즈니스 정의에 맞는 구조로 정리
  • 의미가 명확한 테이블/칼럼 설계

3-2. 데이터 파이프라인 구성

  • 데이터 소스 → staging → marts → reporting

3-3. 데이터 품질 관리

  • 테스트 정의
  • 에러 탐지
  • 데이터 검증

3-4. 문서화 및 협업

  • 모델 설명
  • Lineage 시각화
  • 코드 리뷰/버전 관리

이 모든 활동은 소프트웨어 엔지니어링 관점의 재사용성·테스트·자동화·협업을 전제로 합니다.


4. Data Modeling의 의미

Analytics Engineering에서 말하는 데이터 모델링은 다음을 포함합니다.

  • 어떤 의미의 레코드를 저장할 것인가 (row grain 정의, ex. 주문 단위인지 고객 단위인지)
  • 칼럼 의미 정의
  • 관계형 구조 설계
  • 정합성/정규성 고려

이러한 설계는 단순 구조화가 아니라 비즈니스 현실을 데이터로 반영하는 과정입니다.


5. dbt가 Analytics Engineering에서 중요한 이유

https://docs.getdbt.com/docs/introduction

dbt는 다음과 같은 장점을 기반으로 Analytics Engineering을 구현하는 핵심 도구입니다.

  • SQL 중심 변환 정의를 가능하게 함
  • 모델 간 의존 관계를 명시적으로 표현
  • 테스트, 문서화, Lineage를 자동화
  • 코드 기반으로 협업/버전 관리가 가능

dbt 자체는 SQL 기반 모델링을 확장해 소프트웨어 엔지니어링 관행을 데이터 분석에 적용하게 합니다. 

dbt가 아니더라도 Analyzer 개념은 존재할 수 있으나, dbt는 해당 개념을 가장 많이 구조화하여 생태계화했습니다. 


6. dbt의 주요 기능

6-1. 모델 정의 및 materialization

  • view / table / incremental과 같은 materialization 옵션
  • 모델 간 의존 관계 정의

6-2. 테스트

dbt는 테스트 정의를 통해 데이터 품질을 자동 확인 가능하게 합니다.

 

Generic Test

  • unique
  • not_null
  • accepted_values
  • relationships

Singular Test

- 사용자가 SQL을 작성하여 테스트 조건을 정의

 

 

6-3. 문서화

  • dbt docs generate
  • 모델 설명, 칼럼 설명
  • Lineage 그래프로 표현

6-4. CI/CD 통합

  • GitHub 같은 코드 저장소와 통합하여 merge 전 테스트 자동 실행
  • 자동화된 품질 관리를 코드 배포 파이프라인에 포함

7. Modern Data Stack과 Analytics Engineering

Analytics Engineering은 Modern Data Stack의 한 축으로,  Modern Data Stack은 일반적으로 다음과 같이 구성됩니다.

 

Layer 역할
Data Ingestion 데이터 수집/적재
Data Lake 원본 데이터 저장
Data Warehouse 통합된 분석 데이터 저장
Analytics Engineering 모델링/품질/재사용 가능한 구조로 변환
BI / DL 최종 리포트/대시보드

8. 필요한 기술 요소

필수

  • SQL 심화 능력
  • dbt와 같은 변환 도구 사용
  • 데이터베이스/데이터 웨어하우스 구조 이해
    • BigQuery, Snowflake, Databricks, 그 외 ODBC/JDBC 기반 시스템
  • Git 기반 버전 관리

권장

  • Python과 같은 스크립트 언어
  • CI/CD 파이프라인 이해
  • 테스트 프레임워크
  • Container 개념 이해

Python은 dbt 내 Python 모델 사용, Orchestration(Prefect/Airflow), 데이터 수집/알림 등 주변 작업에서 자주 활용됩니다.

 


9. Analytics Engineering과 데이터 파이프라인 관계

Analytics Engineering은 단독으로 존재하는 개념이 아니라 데이터 파이프라인의 일부이면서, 데이터 품질/재현성을 확보하는 계층로 이해되어야 합니다. 

데이터 파이프라인은 보통 다음과 같은 흐름을 가집니다. 

  1. 데이터 수집/적재
  2. Raw → Staging 변환
  3. Analytics Engineering 모델 적용
  4. BI/Report

Analytics Engineering은 2와 3 사이에서 데이터를 사용할 수 있는 구조로 변환하고 검증하는 역할을 수행합니다. 

해당 과정은 다음과 같은 이유로 필요합니다. 

  • 여러 Source System 간 차이 해소
  • Business Logic 반영
  • 재사용 가능한 구조 제공
  • 테스트 및 자동화로 운영 안정성 확보

10. 참고자료/출처