사진과 음악을 좋아하는 개발자 지망생의 블로그

[데이터 웨어하우스 - 중급] 1. 다양한 데이터 웨어하우스 옵션 - 2) 데이터 웨어하우스와 ETL/ELT 본문

개발/데이터 웨어하우스 - 중급

[데이터 웨어하우스 - 중급] 1. 다양한 데이터 웨어하우스 옵션 - 2) 데이터 웨어하우스와 ETL/ELT

devculture309 2023. 5. 24. 17:23
반응형

1. 데이터 웨어하우스 옵션별 장단점

 데이터 웨어하우스 옵션은 클라우드 기반의 솔루션이 주로 사용되며, 확장 가능성과 비용 효율성이 중요한 요소입니다. 다음은 일반적인 데이터 웨어하우스 옵션들과 각각의 장단점에 대한 설명입니다:

 

AWS Redshift

  • 고정비용 옵션: 클러스터 크기에 따라 고정된 요금을 지불합니다.
  • 확장 가능성: 스케일 아웃과 스케일 인 기능을 통해 확장 가능합니다.
  • AWS 생태계의 통합 및 호환성을 제공합니다.
  • 데이터 볼륨이 크고 대량의 복잡한 쿼리를 처리해야 할 때 적합합니다.

구글 클라우드 BigQuery

  • 가변비용 옵션: 쿼리 수행량에 따라 요금을 지불합니다.
  • 확장 가능성: 자동으로 확장되며, 대규모 데이터셋 처리에 효과적입니다.
  • 서버리스 아키텍처로 구성되어 관리 및 운영이 간편합니다.
  • 실시간 쿼리 및 대용량 데이터 처리에 적합합니다.

스노우플레이크(Snowflake)

  • 가변비용 옵션: 컴퓨팅 및 스토리지 사용량에 따라 요금을 지불합니다.
  • 분리된 컴퓨팅과 스토리지 계층으로 구성되어 독립적인 확장이 가능합니다.
  • 다양한 데이터 형식과 플랫폼 간의 데이터 통합을 지원합니다.
  • 유연한 확장성과 대규모 병렬 처리를 제공합니다.

또한, 오픈소스 기반의 데이터 웨어하우스 옵션으로는 Presto와 Hive가 있으며, 이들은 클라우드 버전도 제공됩니다. 작은 규모의 데이터셋을 다루는 경우에는 대규모 빅데이터 기반 데이터베이스를 사용할 필요가 없을 수 있습니다. 이 경우에는 데이터 용량과 요구사항에 맞는 경량화된 데이터베이스를 선택할 수 있습니다.

 

각 데이터 웨어하우스 옵션은 비용, 성능, 확장성, 관리 및 생태계 통합 등의 요소를 고려하여 선택해야 합니다. 조직의 요구사항과 데이터 규모에 따라 가장 적합한 옵션을 선택하는 것이 중요합니다.

 

 

2. 데이터 레이크

 데이터 레이크는 구조화된 데이터와 비구조화된 데이터(예: 로그 파일)를 포함하는 모든 데이터를 보존하고 원래 형태로 유지하는 스토리지입니다. 일반적으로 데이터 웨어하우스보다 훨씬 크고 경제적인 스토리지를 제공합니다. 주로 클라우드 스토리지로 사용되며, AWS의 S3가 대표적인 데이터 레이크로 사용될 수 있습니다.

 

데이터 레이크 환경에서는 ETL(Extract, Transform, Load) 및 ELT(Extract, Load, Transform) 프로세스가 사용됩니다.

 

ETL(Extract, Transform, Load)

데이터 레이크와 데이터 웨어하우스 사이에서 데이터를 추출하여 변환한 후 데이터 웨어하우스에 로드하는 프로세스입니다. 이 과정에서 데이터는 데이터 레이크의 형태를 벗어나 구조화되어 웨어하우스에 저장됩니다.

 

ELT(Extract, Load, Transform)

데이터 레이크와 데이터 웨어하우스 내부에서 데이터를 추출하여 로드한 후 변환 작업을 수행하는 프로세스입니다. 데이터는 원래 형태로 데이터 레이크에 저장되며, 웨어하우스 내부에서 필요에 따라 변환 작업이 수행됩니다.

 

ETL과 ELT는 데이터의 특성, 비즈니스 요구사항, 성능 등을 고려하여 선택됩니다. 데이터 레이크는 원시 데이터를 보존하고 유연한 데이터 처리를 제공하여 다양한 비즈니스 요구사항에 대응할 수 있습니다. 이를 통해 데이터 과학자나 분석가들은 필요한 형태로 데이터를 추출하고 변환하여 데이터 웨어하우스에서 분석 및 인사이트 도출에 활용할 수 있습니다.

 

2) - 1.  ETL(Extract, Transform, Load) -> ELT

 ETL (Extract, Transform, Load) 프로세스는 회사의 확장과 함께 데이터 처리량이 증가함에 따라 쉽게 100개 이상으로 발전할 수 있습니다. 특히 중요한 데이터를 다룰 때는 실패한 ETL 프로세스를 빠르게 수정하고 재실행하는 것이 중요해집니다. 이를 위해 적절한 일정 계획과 관리가 필요하며, 이를 위해 ETL 스케줄러나 프레임워크를 사용하는 것이 보편적입니다. Airflow는 이러한 프레임워크 중 하나로 널리 사용됩니다.

 

 전통적인 ETL에 추가로 데이터 요약을 위한 ETL이 필요해집니다. 이를 ELT (Extract, Load, Transform)라고 합니다. 전통적인 ETL 프로세스는 다양한 데이터 소스에서 데이터를 읽어오는 작업을 수행합니다. 그러나 데이터가 다양하고 많아지면서 모든 데이터 소스를 이해하고 조인하는 것은 거의 불가능해집니다. 주기적으로 요약된 데이터를 생성하여 분석에 사용하는 것이 효율적입니다. 이를 위해 dbt (data build tool)와 같은 도구를 사용합니다.

 

예를 들어, 고객 매출, 제품 매출 등에 대한 요약 테이블을 생성하면 분석 및 보고 프로세스가 간소화됩니다. 데이터 사용 단계에서 필요한 변환 작업을 수행함으로써 (ELT), 조인과 변환의 복잡성을 ETL 단계에서 다루는 대신 사전 집계된 데이터를 활용하여 인사이트를 생성할 수 있습니다. 이 접근 방식은 효율성을 향상시키고 빠른 데이터 기반 의사 결정을 가능하게 합니다.

 

2) - 2. 다양한 데이터 소스의 예

  • 프로덕션 데이터베이스: 웹 또는 앱에서 사용하는 데이터베이스로서, 일반적으로 MySQL, Postgres 등이 사용됩니다
  • 이메일 마케팅 데이터: Mailchimp, HubSpot, SendGrid 등의 이메일 마케팅 플랫폼에서 생성되는 데이터입니다.
  • 크레딧카드 매출 데이터: Stripe와 같은 결제 처리 플랫폼에서 생성되는 신용카드 매출 데이터입니다.
  • 서포트 티켓 데이터: Zendesk, Kustomer 등의 고객 지원 플랫폼에서 발생하는 티켓 관련 데이터입니다.
  • 서포트 콜 데이터: ChannelTalk, RingCentral, Talkdesk 등과 같은 콜 센터 솔루션을 통해 생성되는 통화 데이터입니다.
  • 세일즈 데이터: Salesforce와 같은 CRM(Customer Relationship Management) 플랫폼에서 생성되는 판매 관련 데이터입니다.
  • 사용자 이벤트 로그: Amplitude, MixPanel과 같은 이벤트 추적 플랫폼 또는 웹 서버 로그에서 추출되는 사용자 관련 로그 데이터입니다.

이는 일반적인 예시일뿐이며, 실제로 사용되는 데이터 소스는 조직의 산업과 비즈니스에 따라 다양할 수 있습니다.

 

 

3. Airflow (ETL 스케줄러) 소개

 Airflow는 ETL(Extract, Transform, Load) 스케줄링 및 관리 프레임워크로서 다수의 ETL 작업을 스케줄링하고 의존 관계(dependency)를 정의하는 기능을 제공합니다. 또한, 실패한 작업에 대한 에러 메시지를 받고 재실행하는 기능인 Backfill도 중요한 기능 중 하나입니다.

 

Airflow는 가장 많이 사용되는 ETL 프레임워크 중 하나로, 오픈 소스 프로젝트로 개발되었습니다. 파이썬 기반으로 작성되어 있으며, 에어비앤비, 우버, 리프트, 쿠팡 등의 다양한 회사에서 사용되고 있습니다. 또한, AWS, Google Cloud, Azure 등의 클라우드 플랫폼에서도 지원되고 있습니다.

 

Airflow에서는 ETL 작업을 DAG(Directed Acyclic Graph)라고 부르며, 웹 인터페이스를 통해 DAG를 생성하고 관리할 수 있는 기능을 제공합니다. Airflow는 스케줄러, 웹 서버, 워커(Worker) 등의 세 가지 주요 컴포넌트로 구성되어 있습니다. 스케줄러는 정의된 DAG를 기반으로 작업을 스케줄링하고 실행합니다. 웹 서버는 DAG 및 작업의 상태를 모니터링하고 관리하기 위한 웹 인터페이스를 제공합니다. 워커는 실제로 작업을 실행하는 역할을 수행합니다.

 

Airflow를 사용하면 ETL 작업의 스케줄링과 관리를 효율적으로 수행할 수 있으며, 실패한 작업의 처리와 재실행을 자동화할 수 있습니다.

 

 

4. 데이터 웨어하우스의 구성

데이터 웨어하우스는 다양한 구성 요소로 구성될 수 있습니다. 아래는 데이터 웨어하우스의 구성 예시입니다

 

  1. 데이터 소스: 다양한 데이터 소스로부터 데이터를 추출합니다. 예를 들면, MySQL(프로덕션 데이터베이스), Stripe(신용카드 데이터), Mailchimp(이메일 데이터), Zendesk(서포트 티켓 데이터), Amplitude(유저 데이터), RingCentral(콜 데이터), Salesforce(세일즈 데이터) 등이 있습니다.
  2. ETL 프로세스: 다수의 ETL 작업을 수행하여 추출한 데이터를 변환하고 로드합니다. ETL 작업은 데이터를 가공하고 원하는 형식으로 변환하는 단계입니다.
  3. 요약 테이블: ETL 작업을 통해 생성된 데이터를 사용하여 요약 테이블을 만듭니다. 요약 테이블은 데이터의 집계 또는 요약된 형태로 저장되는 테이블입니다. 예를 들어, 고객 매출 요약 테이블, 제품 매출 요약 테이블 등이 있을 수 있습니다.
  4. 데이터 웨어하우스: 변환된 데이터와 요약 테이블을 저장하는 중앙 데이터 저장소입니다. 데이터 웨어하우스는 보다 구조화된 형태로 데이터를 저장하며, 분석 및 대시보드 작성 등 다양한 분석 작업에 활용됩니다.
  5. 대시보드: 데이터 웨어하우스에서 추출한 데이터를 기반으로 시각화된 대시보드를 생성합니다. 대시보드는 데이터를 직관적이고 이해하기 쉬운 형태로 시각화하여 비즈니스 인텔리전스를 제공합니다.

위의 예시에서 Airflow는 ETL 프로세스의 스케줄링 및 관리를 담당하는 도구로 사용될 수 있습니다. Airflow를 통해 ETL 작업을 스케줄링하고 의존 관계를 정의할 수 있으며, 실패한 작업을 자동으로 처리하고 재실행할 수 있습니다. 이를 통해 데이터 웨어하우스의 구성과 데이터 처리를 효율적으로 관리할 수 있습니다.

 

4) - 1. ELT

 ELT (Extract, Load, Transform)은 데이터 통합 프로세스로, ETL (Extract, Transform, Load)과는 다르게 데이터 웨어하우스 내부에서 데이터를 조작하여 새로운 데이터를 생성합니다. ELT에서는 데이터 웨어하우스에 로드된 데이터를 직접 변환하고 조작하여 필요한 데이터 형태로 만듭니다. 일반적으로 ELT은 데이터 분석가가 수행하며, 이를 위해 Analytics Engineering 분야에서 사용되는 전용 도구인 dbt가 가장 널리 알려져 있습니다.

 

 ELT은 데이터 웨어하우스 내부에서 데이터를 처리하므로 데이터 웨어하우스의 계산 능력과 확장성을 활용할 수 있습니다. 데이터 분석가는 데이터 웨어하우스에서 직접 쿼리, 조인, 변환 작업 등을 수행하여 데이터를 분석하고 필요한 정보를 추출할 수 있습니다. ELT 방식은 원시 데이터를 원형 그대로 보존하므로 유연한 데이터 탐색과 분석이 가능합니다.

 

 또한, ELT 프로세스는 데이터 레이크를 활용할 수도 있습니다. 데이터 레이크는 구조화되지 않은 데이터나 반구조화된 데이터를 저장하는 용도로 사용되는 저장소입니다. 데이터 레이크는 확장 가능하고 비용 효율적인 솔루션을 제공하며 ELT 프로세스를 지원하기 위해 데이터 웨어하우스와 통합될 수 있습니다

 

4) - 2. 데이터 레이크를 포함한 데이터 플랫폼 아키덱처

 데이터 레이크를 포함한 데이터 플랫폼 아키텍처는 ETL 및 ELT 프로세스를 수행하는 데 필요한 빅데이터 처리 기술을 포함합니다. 데이터 레이크는 구조화되지 않은 데이터나 반구조화된 데이터를 저장하는 용도로 사용되며, 대규모 데이터 처리를 위한 기술들이 필요합니다.

 

 일반적으로 ETL 프로세스에서는 대량의 데이터를 추출하여 변환하고 로드하는 작업이 필요합니다. 이때 빅데이터 처리 기술인 Apache Spark와 같은 도구를 사용하여 데이터를 분산 처리하고 병렬로 실행할 수 있습니다. Spark는 대규모 데이터 처리를 위한 고속 분산 처리 엔진으로 유연한 데이터 변환과 분석을 가능하게 해줍니다.

 

 ELT 프로세스에서는 데이터 웨어하우스 내부에서 데이터를 조작하고 분석합니다. ELT에서도 대량의 데이터를 처리해야 하므로 빅데이터 처리 기술이 필요할 수 있습니다. Spark는 다양한 데이터 소스와 통합하여 데이터 웨어하우스 내부에서 대규모 데이터를 처리하고 변환하는 데 사용될 수 있습니다.

 

 데이터 플랫폼 아키텍처에서는 데이터 레이크와 빅데이터 처리 기술을 통합하여 확장 가능하고 비용 효율적인 데이터 처리 및 분석 환경을 구축합니다. 이를 통해 다양한 데이터 소스를 통합하고 대용량 데이터를 처리하여 가치 있는 통찰력을 얻을 수 있습니다.

 

 

5. 빅데이터 처리 프레임웍

빅데이터 처리를 위한 프레임워크 특징

 

  1. 분산 환경 기반: 빅데이터 처리를 위해 하나 이상의 서버로 구성된 분산 환경에서 동작합니다. 데이터를 여러 서버에 분산하여 처리하고 분산 파일 시스템과 분산 컴퓨팅 시스템을 활용합니다. 이를 통해 대량의 데이터를 효율적으로 처리할 수 있습니다.
  2. Fault Tolerance (장애 내성): 빅데이터 처리 시스템은 소수의 서버가 고장나더라도 정상적으로 동작해야 합니다. 장애 내성을 갖추어 서버의 고장을 대비하고 데이터의 손실 없이 처리 과정을 유지할 수 있습니다. 이를 위해 데이터의 복제, 재분배, 자동 복구 등의 메커니즘을 제공합니다.
  3. 확장성: 빅데이터 처리 시스템은 확장이 용이해야 합니다. 즉, 시스템의 용량을 증대하기 위해 서버를 추가할 수 있어야 합니다. Scale Out 방식을 채택하여 데이터 볼륨이 증가하면 추가 서버를 통해 처리 능력을 확장할 수 있습니다. 이를 통해 빅데이터 처리의 성능과 처리량을 향상시킬 수 있습니다.

 빅데이터 처리 프레임워크는 이러한 특징을 가지고 데이터의 수집, 저장, 처리, 분석 등 다양한 작업을 수행합니다. 대표적인 빅데이터 처리 프레임워크로는 Apache Hadoop, Apache Spark, Apache Flink, Apache Kafka 등이 있습니다. 이러한 프레임워크는 빅데이터 처리를 위한 다양한 기능과 도구를 제공하여 대용량 데이터를 효율적으로 처리하고 분석하는 데 사용됩니다.

 

 

6. 대표적 빅데이터 프로세싱 시스템

1세대

하둡(Hadoop)

분산 저장 및 처리를 위한 프레임워크로서, 하둡 분산 파일 시스템(HDFS)과 MapReduce 프로그래밍 모델을 기반으로 합니다. 대용량 데이터의 분산 처리를 가능케 하며, 데이터 처리를 위한 언어로 Hive와 Presto 등이 사용됩니다.

 

2세대

스파크(Spark)

대규모 데이터 처리 및 분석을 위한 고성능 분산 처리 시스템입니다. SQL, DataFrame, Streaming, 머신러닝(ML), 그래프 처리 등 다양한 기능을 제공합니다. 스파크는 인메모리 기반의 처리 방식과 다양한 API 지원으로 빠른 처리 속도와 유연한 데이터 조작을 가능케 합니다. 스파크는 대규모 데이터 처리와 머신러닝 작업에 많이 활용되고 있습니다.

반응형