293. ELT 프로세스

핵심 인사이트 (3줄 요약)

  1. 본질: ELT(Extract, Load, Transform)는 데이터를 먼저 대상 시스템(주로 Cloud DW)에 적재한 후, 대상 시스템 내부에서 SQL 등을 활용하여 변환을 수행하는 현대적 데이터 통합 패러다임이다.
  2. 가치: Cloud DW의强大한 컴퓨팅 파워 활용, 별도 ETL 서버 불필요, 대량 데이터 처리 효율성, SQL 기반 낮은 학습 곡선, 빠른 개발 속도.
  3. 융합: Cloud DW (Redshift, BigQuery, Snowflake), 데이터 레이크, 스키마 온 리드, SQL 기반 변환, 데이터 파이프라인과 밀접하게 연관된다.

Ⅰ. 개요 및 필요성 (Context & Necessity)

개념 정의

ELT(Extract, Load, Transform)는 ETL(Extract, Transform, Load)의变形으로, 데이터를 먼저 대상 시스템에 적재한 후 해당 시스템 내부에서 변환을 수행하는 데이터 통합 접근 방식이다. 특히 Cloud Data Warehouse(Redshift, BigQuery, Snowflake 등)의 등장으로 DW 자체가 massive 병렬 처리(MPP) 컴퓨팅 파워를 갖추게 되면서, 별도의 ETL 서버 없이 DW 내부에서 대량 데이터 변환이 가능해졌다. ELT는 이趋势를 반영한 modern한 데이터 통합 방법론이다.

필요성

전통적인 ETL 방식에서는 ETL 서버(별도 하드웨어/소프트웨어)에서 모든 변환을 수행한 후 DW에 적재했다. 그러나 petabyte 단위의 대용량 데이터 처리에는 ETL 서버의 컴퓨팅 파워가 bottle-neck이 되기 쉽다. Cloud DW는 praticamente 무제한に computing 자원을弹性하게 제공할 수 있으므로, ELT 방식으로 DW에 raw 데이터를 먼저 적재한 후, DW의强大한 병렬 처리能力로 변환을 수행하는 것이 더 효율적이다. 또한 ETL 도구의 별도 구매·운영 비용을 절감할 수 있어 총 소유 비용(TCO) 측면에서도 유리하다.

배경

ELT는 Cloud DW의 확산과 함께主流化された。 Amazon Redshift(2012), Google BigQuery(2012), Snowflake(2014) 등 modern cloud data warehouse는MPP(Massively Parallel Processing) 아키텍처를採用하여 쿼리 처리 성능을 크게 향상시켰다. 이러한 DW에서는 SQL만으로 복잡한 데이터 변환이 가능하며, 소량의 코드 또는 dbt(Data Build Tool) 같은 transformation 도구를 활용하여 ELT 파이프라인을 쉽게 구축할 수 있다. 특히 Snowflake의 "Data Cloud" 개념과 separation of storage and compute 아키텍처는 ELT의 보급을加速했다.

비유

ELT는大型호텔의 세탁소 운영 방식과 같다. 전통적인 ETL은hotel 옷을 별도의大型세탁소(ETL 서버)로运んで清洗하고 다림질해서 hotel에 돌려주는 방식이다. 그러나 modern hotel에는 hotel 내부에大型세탁设备(DW, Compute)가 있어, 옷을 그냥 세탁소에 내려놓고(Load), hotel 내부设备로 바로 세탁·다림질(Transform)을 수행한다. hotel 내부设备는 hotel 규모에 맞게弹性하게 확장이 가능하여,大量 숙박객의 옷도 빠르게处理할 수 있다.

📢 섹션 요약: ELT는 Cloud DW 시대에 부상한 modern 데이터 통합 방식으로, raw 데이터를 DW에 먼저 적재한 후 DW 내부 컴퓨팅으로 변환을 수행하여 효율성과 비용 효율성을 제공한다.


Ⅱ. 아키텍처 및 핵심 원리 (Deep Dive)

ELT 아키텍처 vs ETL 아키텍처

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ELT vs ETL 아키텍처 비교                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  [전통적 ETL 아키텍처]                                                      │
│  ────────────────────────                                                  │
│                                                                             │
│       ┌──────────┐    ┌──────────┐    ┌──────────┐                        │
│       │   OLTP   │    │   CRM    │    │   ERP    │                        │
│       │  Source  │    │  Source  │    │  Source  │                        │
│       └────┬─────┘    └────┬─────┘    └────┬─────┘                        │
│             │               │               │                               │
│             └───────┬───────┘               │                               │
│                     │                       │                               │
│                     ▼                       │                               │
│       ┌───────────────────────────────┐    │                               │
│       │         ETL Server             │    │                               │
│       │  ───────────────────────────   │    │                               │
│       │  Extract → Transform → Load   │    │                               │
│       │  (별도 서버에서 모든 변환 수행)  │    │                               │
│       └───────────────┬───────────────┘    │                               │
│                       │                     │                               │
│                       └──────────┬──────────┘                               │
│                                  │                                          │
│                                  ▼                                          │
│                    ┌─────────────────────────┐                              │
│                    │   Data Warehouse (DW)   │                              │
│                    │   (완성된 데이터)        │                              │
│                    └─────────────────────────┘                              │
│                                                                             │
│  [ELT 아키텍처]                                                            │
│  ───────────────                                                          │
│                                                                             │
│       ┌──────────┐    ┌──────────┐    ┌──────────┐                        │
│       │   OLTP   │    │   CRM    │    │   ERP    │                        │
│       │  Source  │    │  Source  │    │  Source  │                        │
│       └────┬─────┘    └────┬─────┘    └────┬─────┘                        │
│             │               │               │                               │
│             │    ┌──────────┼──────────┐    │                               │
│             │    │          │          │    │                               │
│             ▼    ▼          ▼          ▼    ▼                               │
│       ┌─────────────────────────────────────────────┐                      │
│       │           Cloud Data Warehouse (ELT)          │                      │
│       │  ─────────────────────────────────────────  │                      │
│       │                                               │                      │
│       │  ┌─────────────────────────────────────┐  │                      │
│       │  │  STAGING LAYER (Raw Data)            │  │                      │
│       │  │  Extract → Load (변환 없이 원본 적재)   │  │                      │
│       │  └─────────────────────────────────────┘  │                      │
│       │                    │                       │                      │
│       │                    ▼                       │                      │
│       │  ┌─────────────────────────────────────┐  │                      │
│       │  │  TRANSFORMATION LAYER               │  │                      │
│       │  │  SQL / dbt transformations          │  │                      │
│       │  │  (DW 내부에서 SQL로 변환 수행)        │  │                      │
│       │  └─────────────────────────────────────┘  │                      │
│       │                    │                       │                      │
│       │                    ▼                       │                      │
│       │  ┌─────────────────────────────────────┐  │                      │
│       │  │  ANALYTICAL LAYER                   │  │                      │
│       │  │  (완성된 스타 스키마 / 분석 데이터)    │  │                      │
│       │  └─────────────────────────────────────┘  │                      │
│       │                                               │                      │
│       └─────────────────────────────────────────────┘                      │
│                                                                             │
│  핵심 차이: 변환 위치 (ETL 서버 vs DW 내부)                                 │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

ELT 주요 도구 및 기술

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ELT 주요 도구 및 기술                                       │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  [ELT 수행 방식]                                                           │
│  ─────────────────                                                          │
│                                                                             │
│  1. SQL 기반 직접 변환                                                      │
│  ─────────────────────                                                      │
│  • DW 내부에서 SQL 쿼리로 직접 변환 수행                                      │
│  • 예: BigQuery의 CREATE TABLE ... AS SELECT (CTAS)                       │
│  • 가장 간단한 형태, 추가 도구 불필요                                        │
│                                                                             │
│  2. dbt (Data Build Tool) 활용                                             │
│  ────────────────────────────────                                          │
│  • analytics engineering을 위한 transformation 도구                          │
│  • SQL을 활용한 데이터 변환을 조직화·관리                                     │
│  • 버전 관리, 테스트, 문서화 기능 제공                                       │
│  • Snowflake, BigQuery, Redshift 등과 Integration                           │
│                                                                             │
│  3. Cloud 제공 ETL/ELT 도구                                                │
│  ───────────────────────────                                               │
│  • AWS Glue, Azure Data Factory, Google Data Fusion 등                     │
│  • cloud 환경에 최적화된 ELT 지원                                           │
│                                                                             │
│  [dbt 활용 ELT 파이프라인 예시]                                             │
│  ─────────────────────────────                                             │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐ │
│  │  // dbt 모델: stg_orders.sql                                        │ │
│  │  ─────────────────────────────────────────────────────────────────│ │
│  │  SELECT                                                               │ │
│  │    order_id,                                                          │ │
│  │    customer_id,                                                       │ │
│  │    order_date,                                                        │ │
│  │    status,                                                            │ │
│  │    -- 변환: NULL 처리                                                │ │
│  │    COALESCE(total_amount, 0) AS total_amount                          │ │
│  │  FROM {{ source('raw_db', 'orders') }}                             │ │
│  │                                                                       │ │
│  │  // dbt 모델: dim_customers.sql                                      │ │
│  │  ─────────────────────────────────────────────────────────────────│ │
│  │  SELECT                                                               │ │
│  │    customer_id,                                                       │ │
│  │    customer_name,                                                     │ │
│  │    -- SCD Type 2: 유효기간 관리                                       │ │
│  │    valid_from,                                                        │ │
│  │    valid_to,                                                          │ │
│  │    is_current                                                         │ │
│  │  FROM {{ ref('stg_customers') }}                                    │ │
│  └─────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  [ELT 단계별 프로세스]                                                     │
│  ─────────────────────                                                      │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐ │
│  │  ELT 단계          │ 설명                  │ 도구/기술              │ │
│  │  ──────────────────────────────────────────────────────────────── │ │
│  │  Extract           │ 소스에서 데이터 추출    │ CDC, API, Bulk Export │ │
│  │  Load              │ Raw Zone에 원본 적재   │ COPY, INSERT SELECT  │ │
│  │  Transform         │ DW 내부에서 SQL 변환   │ SQL, dbt            │ │
│  │  (Staging→Cleansed→Gold)                                                │ │
│  └─────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Cloud DW별 ELT 지원 비교

┌─────────────────────────────────────────────────────────────────────────────┐
│                    Cloud DW별 ELT 지원 비교                                    │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌────────────────┬──────────────┬──────────────┬──────────────┐         │
│  │     특성        │ Amazon      │   Google     │  Snowflake   │         │
│  │                │ Redshift    │   BigQuery   │              │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │ 저장/컴퓨팅 분리│     ✓       │     ✓       │     ✓       │         │
│  │ (Separation)  │             │              │              │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │ SQL 기반 변환  │    ✓       │     ✓       │     ✓       │         │
│  │                │   (Redshift  │  (BigQuery   │ (Snowflake   │         │
│  │                │    Spectrum) │    SQL)      │   SQL)       │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │ MPP 병렬 처리  │     ✓       │     ✓       │     ✓       │         │
│  │                │   (RA3 nodes)│  (슬롯 기반)  │  (Virtual   │         │
│  │                │             │              │   Warehouses) │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │ 자동 스케일링   │     △       │     ✓       │     ✓       │         │
│  │                │ (수동 조정)   │ (자동)       │ (자동)        │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │半정형 데이터    │    ✓       │     ✓       │     ✓       │         │
│  │ (JSON, Parquet)│             │  (JSON 함수)  │  (VARIANT)   │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │ dbt Integration│     ✓       │     ✓       │     ✓       │         │
│  │                │             │              │  (Native)    │         │
│  ├────────────────┼──────────────┼──────────────┼──────────────┤         │
│  │_clone (Clone) │     ✓       │     ✓       │     ✓       │         │
│  │                │ (Deep Clone) │ (Clone)     │ (Clone)     │         │
│  └────────────────┴──────────────┴──────────────┴──────────────┘         │
│                                                                             │
│  [Snowflake의 ELT 최적화 구조]                                             │
│  ─────────────────────────────                                             │
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐ │
│  │  Snowflake Architecture                                              │ │
│  │  ─────────────────────────────────────────────────────────────────│ │
│  │                                                                       │ │
│  │  ┌─────────────────────────────────────────────────────────────┐   │ │
│  │  │                    Cloud Services Layer                       │   │ │
│  │  │                  (인증, 최적화, 메타데이터)                   │   │ │
│  │  └─────────────────────────────────────────────────────────────┘   │ │
│  │                               │                                        │ │
│  │                               ▼                                        │ │
│  │  ┌─────────────────────────────────────────────────────────────┐   │ │
│  │  │                  Query Processing Layer                      │   │ │
│  │  │                    (Virtual Warehouse)                       │   │ │
│  │  │  ┌─────────┐  ┌─────────┐  ┌─────────┐  ← 병렬 컴퓨팅       │   │ │
│  │  │  │  Warehouse│ │ Warehouse│  │ Warehouse│                   │   │ │
│  │  │  │   (XL)   │  │   (SM)   │  │   (LG)   │                   │   │ │
│  │  │  └─────────┘  └─────────┘  └─────────┘                        │   │ │
│  │  └─────────────────────────────────────────────────────────────┘   │ │
│  │                               │                                        │ │
│  │                               ▼                                        │ │
│  │  ┌─────────────────────────────────────────────────────────────┐   │ │
│  │  │                    Storage Layer                              │   │ │
│  │  │                    (Database / Stage)                        │   │ │
│  │  │  • 원시 데이터 (Stage)  • 변환 데이터 (Table)                  │   │ │
│  │  └─────────────────────────────────────────────────────────────┘   │ │
│  │                                                                       │ │
│  └─────────────────────────────────────────────────────────────────────┘ │
│                                                                             │
│  • Storage와 Compute가 분리되어 독립적 스케일링 가능                         │
│  • Virtual Warehouse를 통한 수요에 따른 컴퓨팅 파워 조절                     │
│  • ELT 시 대용량 데이터 변환에 필요한 컴퓨팅만 임시로 증설                     │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

[다이어그램 해설] ELT의 핵심 장점은 Cloud DW의 저장/컴퓨팅 분리(Separation of Storage and Compute) 아키텍처를活用한다는 것이다. ETL 방식에서는 ETL 서버의 컴퓨팅 파워가 bottle-neck이 되지만, ELT에서는 DW 내부의MPP(Massively Parallel Processing) 컴퓨팅으로 대규모 변환을 빠르게 처리할 수 있다. Snowflake의 경우 Virtual Warehouse를 통해 ETL/ELT 작업에 필요한 컴퓨팅만 임시로 증설했다가 작업 완료 후 축소할 수 있어, 비용 효율성도 높다. dbt는 modern ELT 파이프라인에서 표준 transformation 도구로 자리 잡았다.

📢 섹션 요약: ELT는 Cloud DW의MPP 컴퓨팅과 저장/컴퓨팅 분리 아키텍처를活用하여, 별도 ETL 서버 없이 효율적인 데이터 변환을 수행하는 modern한 패러다임이다.


Ⅲ. 결론

ELT(Extract, Load, Transform)는 Cloud DW 시대에 부상한 modern 데이터 통합 방식으로, raw 데이터를 먼저 DW에 적재한 후 SQL 기반 transformation을 수행한다. ETL 대비 Cloud DW 컴퓨팅 파워 활용, 별도 서버 불필요, 대량 데이터 처리 효율성, 낮은 학습 곡선 등의 장점이 있다. dbt(Data Build Tool)는 modern ELT 파이프라인의 표준 transformation 도구로, SQL 기반 변환을 조직화·관리할 수 있게 한다. 다만 ELT가 ETL을 완전히 대체하는 것은 아니며, 전통적인 온프레미스 환경이나 복잡한 변환 로직이 필요한 경우에는 여전히 ETL이 유용하다.

📢 섹션 요약: ELT는 Cloud DW 시대의 modern 데이터 통합 방식으로, DW 내부 컴퓨팅으로 변환을 수행하여 ETL 대비 효율성과 비용 효율성을 제공한다.


핵심 인사이트 ASCII 다이어그램 (Concept Map)

┌─────────────────────────────────────────────────────────────────────────────┐
│                    ELT Process Concept Map                                     │
│                                                                             │
│              ┌─────────────────────────────────┐                           │
│              │        ELT Process              │                           │
              │   (Extract, Load, Transform)      │                           │
│              └───────────────┬─────────────────┘                           │
│                              │                                               │
│         ┌────────────────────┼────────────────────┐                        │
│         ▼                    ▼                    ▼                        │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐               │
│  │   Extract   │    │     Load     │    │  Transform   │               │
│  │   (추출)     │───▶│  (적재)     │───▶│  (변환)     │               │
│  │  CDC/API    │    │  Raw Zone   │    │  SQL / dbt  │               │
│  └──────────────┘    └──────────────┘    └──────────────┘               │
│         │                                      │                           │
│         └──────────────────────────────────────┘                           │
│                              │                                               │
│                              ▼                                               │
│                   ┌─────────────────────┐                                  │
│                   │   Cloud DW        │                                  │
│                   │   (Storage + Compute │                                  │
│                   │    Separation)     │                                  │
│                   │  MPP Parallel Proc │                                  │
│                   └─────────────────────┘                                  │
│                                                                             │
│  장점: DW 컴퓨팅 활용 | 서버 불필요 | 대량 처리 효율 | SQL 친화              │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

참고

  • ELT는 Extract→Load→Transform 순서로 Cloud DW 내부에서 변환을 수행한다.
  • Cloud DW의MPP 컴퓨팅 파워를 활용하여 대량 데이터 변환이 효율적이다.
  • 저장/컴퓨팅 분리 아키텍처로弹性 있는 자원 활용이 가능하다.
  • dbt는 modern ELT 파이프라인의 표준 transformation 도구이다.
  • ETL을 완전히 대체하지는 않으며, 환경에 따라 적절한 선택이 필요하다.
  • Snowflake, BigQuery, Redshift 등이 대표적인 ELT 지원 Cloud DW이다.