개발 기록장

01. 다양한 데이터 웨어하우스 옵션, ETL/ELT, 데이터 조직 본문

데브코스(DE)/데이터 웨어하우스 관리와 고급 SQL, BI 대시보드

01. 다양한 데이터 웨어하우스 옵션, ETL/ELT, 데이터 조직

jxwxnk 2024. 5. 7. 00:19
반응형

학습 주제: ETL/ELT, 데이터 조직, 데이터 웨어하우스/레이크, 데이터 다루는 기술

데이터 조직

데이터 조직의 비전

  • 신뢰할 수 있는 데이터를 바탕으로 부가 가치 생성

데이터 조직이 하는 일

  • 고품질 데이터를 기반으로 의사 결정권자에게 입력 제공
    • 결정 과학(Decision Science)라고도 부름
    • 데이터를 고려한 결정(Data Informed Decisions): 데이터를 참고하여 의사결정의 방향을 구체화(만약, 데이터와 의사결정권자가 원하는 방향이 안 맞아도 의사결정권자가 하고자 하는 방향으로 움직임)
    • 데이터 기반 결정(Data Driven Decisions): 데이터가 말하는 방향으로 움직인다(의사결정의 근거)
      • 과거의 기록이므로 새로운 혁신을 도모하기는 어려움 따라서, 데이터를 고려한 결정/데이터 기반 결정이 적절히 섞이는 것이 이상적
    • 예를 들어, 데이터 기반 지표 정의, 대시보드와 리포트 생성 등을 수행
  • 고품질 데이터를 기반으로 사용자 서비스 경험 개선 혹은 프로세스 최적화
    • 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험 개선
      • 예시) 개인화를 바탕으로 한 추천과 검색 기능 제공
    • 공장이라면 공정 과정에서 오류를 최소화하는 일을 수행

데이터의 흐름

데이터 흐름

데이터 팀의 발전 단계

1. 데이터 인프라 구축

  • 데이터 엔지니어(Data Engineer)가 수행
  • 프로덕션 데이터베이스 vs. 데이터 웨어하우스
    • 프로덕션 데이터베이스: OLTP(OnLine Transaction Processing), 처리 속도 중요
    • 데이터 웨어하우스: OLAP(OnLine Analytical Processing), 처리할 수 있는 데이터의 크기 중요
  • 데이터 웨어하우스
    • 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스(SQL DB)
    • 프로덕션용 데이터베이스와 구분되어야 함
  • ETL(Extract, Transform, Load)
    • 다른 곳에 존재하는 데이터를 데이터 웨어하우스에 적재하는 작업
    • 데이터 파이프라인이라고도 함
      • Extract: 외부 데이터 소스에서 데이터 추출
      • TransformL: 데이터의 포맷을 원하는 형태로 변환
      • Load: 변환된 데이터를 최종적으로 데이터 웨어하우스에 적재
    • ETL에서 가장 많이 사용하는 프레임 웍: Airflow
      • 파이썬3 기반으로 Airbnb에서 제작
      • AWS와 구글 클라우드에서도 지원
    • ETL관련 Saas(Software as a Service)도 출현하기 시작
      • ex) FiveTran, Stitch Data

2. 데이터 분석

  • 데이터 분석가(Data Analyst)가 수행
  • 시각화 대시보드
    • 보통 중요한 지표를 시간의 흐름과 함께 보여줌
      • 지표의 경우 3A(Accessible, Actionable, Auditable)가 중요
      • 중요 지표 예시) 매출액, 월간/주간 액티브 사용자 수
    • 가장 많이 사용되는 대시보드
      • 구글 클라우드의 Looker
      • 세일즈포스의 Tableau
      • 마이크로소프트의 Power BI
      • 오픈소스 아파치 Superset

3. 데이터 과학

  • 데이터 과학자(Data Scientist)가 머신러닝 모델을 만들어 수행
  • 수집된 데이터를 이용해 서비스 개인화, 사용자 경험 개선
  • ML/AI을 이용해 서비스 운영비용 감축(최소화)
    • 머신 러닝(Machine Learning)
      • 프로그래밍 없이 컴퓨터가 데이터를 이용하여 스스로 학습하고 예측하는 능력
      • 데이터로부터 패턴을 찾아 학습하고 문제를 해결할 수 있는 인공지능의 한 분야
        • 데이터의 품질/크기 중요
        • 데이터로 인한 왜곡(bias) 발생 가능
        • 내부동작 설명 가능 여부 중요

데이터 조직의 구성원

데이터 엔지니어(Data Engineer)

  • 데이터 인프라(데이터 웨어하우스와 ETL)구축
  • 데이터 엔지니어의 역할
    • 소프트웨어 엔지니어
      • 주로 파이썬을 사용(+스칼라, 자바)
    • 데이터 웨어하우스 구축
      • 데이터 웨어하우스 구축 및 관리, 클라우드
      • ETL 코드 작성하고 주기적으로 실행(Aiflow: ETL 스케줄러)
    • 데이터 분석가와 과학자 지원
      • 협업을 통해 필요한 툴 및 데이터를 제공해 주는 것이 데이터 엔지니어의 중요한 역할 중 하나
  • 데이터 엔지니어가 알아야하는 기술
    • SQL: 기본 SQL, HIVE,Presto, SparkSQL 등
    • 프로그래밍 언어: 파이썬, 스칼라, 자바
    • 데이터 웨어하우스: Redshift, Snowflake, BigQuery
    • ETL/ELT 프레임 웍: Airflow 등
    • 대용량 데이터 처리 플랫폼: Spark, YARN
    • 컨테이너 기술: Docker, K8s
    • 클라우드 컴퓨팅: AWS, GCP, Azure 등
    • 기타 도움되는 지식:
      • 머신 러닝 지식
      • A/B 테스트, 통계
  • MLOps/ML Engineer로 진출하기도 함

데이터 분석가(Data Analyst)

  • 데이터 웨어하우스의 데이터를 기반으로 지표를 만들고 시각화(대시보드)
  • 내부 직원들의 데이터 관련 질문 응답
  • 데이터 분석가의 역할
    • 비지니스 인텔리전스를 책임짐
      • 중요 지표 정의 및 대시보드 형태로 시각화
        • 대시보드: 태블로(Tableau)와 룩커(Looker) 툴이 흔이 사용됨
        • 오픈 소스: 수퍼셋(Superset)이 많이 사용됨
      • 비지니스 도메인에 대한 깊은 지식 필요
    • 회사내 다른 팀들의 데이터 관련 질문 응답
      • 임원 또는 팀 리더들이 데이터 기반 결정을 내릴 수 있도록 도움
      • 많고 반복적인 질문에 대해 어떻게 셀프 서비스로 만드는지가 중요
  • 데이터 분석가가 알아야하는 기술
    • SQL: 기본 SQL, HIVE,Presto, SparkSQL 등
    • 대시보드:
      • 룩커, 태블로, 파워 BI, 수퍼셋
      • 엑셀, 구글 스프레드시트, 파이썬
    • 데이터 모델링
    • 통계 지식
      • AB 테스트 분석/ 다양한 데이터 분석에서 통계 지식은 매우 유용
    • 비즈니스 도메인에 관한 깊은 지식
    • 좋은 지표를 정의하는 능력
    • 보통 코딩을 하지는 않음

데이터 과학자(Data Scientist)

  • 과거 데이터를 기반으로 미래를 예측하는 머신러닝 모델을 만들어 고객들의 서비스 경험 개선(개인화/자동화/최적화)

MLOPs

  • DevOps가 하는 일과 동일하나 차이점은 서비스 코드가 아니라 ML 모델이 대상
    • 개발자가 만든 코드를 시스템에 반영하는 프로세스(CI/CD, deployment)
    • 시스템이 제대로 동작하는지 모니터링/이슈 감지시 escalation 프로세스(On call 프로세스)
  • 모델을 계속적으로 빌딩하고 배포 및 성능 모니터링
    • ML 모델 빌딩과 프로덕션 배포 자동화
    • 모델 서빙 환경과 모델 성능 저하를 모니터링하고 필요시 escalation 프로세스 진행
  • MLOps 엔지니어가 알아야하는 기술
    • 데이터 엔지니어가 알아야 하는 기술
      • 파이썬, 스칼라, 자바
      • 데이터 파이프라인과 데이터 웨어하우스
    • DevOps 엔지니어가 알아야 하는 기술
      • CI/CD, 서비스 모니터링 등
      • 컨테이너 기술(K8S, 도커 등)
      • 클라우드(AWS, GCP, Azure)
    • 머신러닝 관련 경험/지식
      • 머신러닝 모델 빌딩과 배포
      • ML 모델 빌딩 프레임웍 경험
        • SageMaker, Kuberflow, MLflow

프라이버시 엔지니어

  • 전체 시스템에서 개인정보 보호를 위한 가이드라인/툴 제공
  • 데이터 시스템에서 매우 중요함
  • 개인 정보 보호 법안의 징벌 조항이 점점 강화되는 추세로 그 역할이 더 중요해 짐

데이터 디스커버리(Data Discovery)

  • 별도 직군은 아니지만 데이터 팀이 커지면 꼭 필요한 서비스
  • 데이터가 커지면 테이블과 대시보드의 수 증가 -> 데이터 분석시 어느 테이블이나 대시보드를 봐야하는지 혼란 발생 "정보 과잉" 문제
  • 테이블과 대시보드 관련 검색 서비스
    • 리프트의 아문센
    • 링크드인의 데이터 허브
    • 셀렉트 스타

데이터 웨어하우스/데이터 레이크, ETL/ELT

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

  • 데이터 웨어하우스는 기본적으로 클라우드가 대세
  • 데이터가 커져도 문제 없는 확장가능성(Scalable)과 적정한 비용이 중요
  • 크게 고정비용 옵션과 가변비용 옵션이 존재함 -> 가변비용 옵션이 확장가능한 옵션
    • 고정비용 옵션: Redshift
    • 가변비용 옵션: BigQuery, Snowflake
  • 오픈소스 기반(Presto, Hive)을 사용하는 경우도 클라우드 버전 존재
  • 데이터가 작다면 굳이 데이터 기반 데이터 베이스 사용할 필요 X

데이터 레이크

  • 구조화 데이터 + 비구조화 데이터(로그 파일)
  • 보전 기한 없는 모든 데이트를 원래 형태대로 보존하는 스토리지에 가까움
  • 데이터 웨어하우스보다 훨씬 크고 경제적인 스토리지
  • 클라우드 스토리지가 됨
    • 대표적인 데이터 레이크: AWS의 S3
  • 데이터 레이크가 있는 환경에서 ETL/ELT
    • ETL: 데이터 레이크와 데이터 웨어하우스 바깥에서 안으로 데이터를 가져오는 것
    • ELT: 데이터 레이크와 데이터 웨어하우스 안에 있는 데이터를 처리하는 것

ETL(Extract, Transform, Load)

  • 데이터를 데이터 웨어하우스 외부에서 내부로 가져오는 프로세스
  • 보통 데이터 엔지니어가 이를 수행
  • 중요한 데이터를 다루는 ETL이 실패했을 경우 이를 빨리 고쳐 다시 실행하는 것이 중요
  • 적절하게 스케줄링하고 관리하는 것이 중요해짐 -> Airflow

ELT(Extract, Load, Transform)

  • 데이터 웨어하우스 내부 데이터를 조작해서(추상화되고 요약된)새로운 데이터를 만드는 프로세스
  • 이런 프로세스 전용기술이 있으며 dbt가 가장 유명함
    • 주기적으로 요약 데이터를 만드러 사용한 것이 효율적: Dbt 사용
      • ex) 고객 매출 요약 테이블 등
  • 보통 데이터 분석가가 이를 수행
  • 데이터 레이크를 사용하기도 함

ETL/ELT

다양한 데이터 소스의 예

  • 프로덕션 데이터베이스(웹/앱에서 사용하는 데이터베이스)의 데이터
    • 보통 MySQL, Postgres등이 프로덕션 데이터 베이스로 사용됨
  • 이메일 마케팅 데이터
    • Mailchimp, HubSpot, SendGrid 등
  • 신용 카드 매출 데이터
    • Stripe
  • 서프트 콜 데이터
    • ChannelTalk, RingCentral, Talkdest 등
  • 세일즈 데이터
    • Salesforce
  • 사용자 이벤트 로그
    • Amplitude, MixPanel, 웹 서버로그 등

Airflow(ETL 스케줄러)

  • ETL 관리 및 운영 프레임 웍의 필요성
    • 다수의 ETL이 존재할 경우 이를 스케줄링 해주고 이들간의 의존관계(Dependencty)를 정의해주는 기능 필요
    • 특정 ETL이 실패할 경우 이에 관한 에러 메시지를 받고 재실행하는 기능도 중요해짐(Backfill)
  • 가장 많이 사용되는 ETL 스케줄러 프레임웍
    • Airflow는 오픈소스 프로젝트로 파이썬 3 기반
    • 에어비엔비, 우버, 리프트, 쿠팡 등에서도 사용
    • AWS와 GCP, Azure에서도 지원
    • Airflow에서는 ETL을 DAG라 부르며 웹 인터페이스를 통한 관리 기능 제공
    • 크게 3가지 컴포넌트로 구성됨: 스케줄러, 웹서버, 워커(Worker)

빅데이터 처리 프레임 웍

  • 분산 환경 기반(다수의 서버로 구성)
    • 분산 파일 시스템과 분산 컴퓨팅 시스템 필요
  • Fault Tolerance
    • 소수의 서버가 고장나도 동작해야 함
  • 확장이 용이해야 함
    • Scale Out 되어야 함
    • 용량을 증대하기 위해 서버 추가
  • ** 대표적 빅데이터 프로세싱 시스템 **
    • 1세대: 하둡 기반의 Mapreduce, Hive/Presto
    • 2세대: Spark(SQL, DataFrame, Streaming, ML, Graph)

데이터 웨어하우스 종류

AWS Redshift

  • 2012년에 시작된 AWS 기반의 데이터웨어하우스로 PB 스케일 데이터 분산 처리 가능
    • Postgresql과 호환되는 SQL로 처리 가능하게 해줌
    • Python UDF(User Defined Function)의 작성을 통해 기능 확장 가능
    • 처음에는 고정 비용 모델 -> 현재는 가변 비용 모델도 지원(Redshift Serverless)
    • On-demand 가격 이외에도 예약 가격 옵션 지원
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
  • AWS내의 다른 서비스와의 연동 쉬움
    • S3, DynamoDB, SageMaker 등
    • Redshift의 기능 확장을 위해 Redshift Spectrum, AWS Athena 등의 서비스와 같이 사용 가능
  • 배치 데이터 중심이지만 실시간 데이터 처리 지원
  • 웹 콘솔 이외에도 API를 통한 관리/제어 가능

Snowflake

  • 2014년에 시작된 클라우드 기반의 데이터웨어하우스
    • 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace 제공
    • ETL과 다양한 데이터 통합 기능 제공
  • SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해줌
    • 비구조화된 데이터 처리와 머신러닝 기능 제공
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
    • S3, GC클라우드 스토리지, Azure Blog Storage도 지원
  • 배치 데이터 중심이지만 실시간 데이터 처리 지원
  • 웹 콘솔 이외에도 API를 통한 관리/제어 가능

Google Cloud BigQuery

  • 2010년에 시작된 구글 클라우드 기반의 데이터웨어하우스
    • 구글 클라우드의 대표적 서비스
    • BigQuery SQL이란 SQL로 데이터 처리가능(Nested fields, repeated fields 지원)
    • 가변 비용과 고정 비용 옵션 지원
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
  • 구글 클라우드 내의 다른 서비스들과 연동 쉬움
    • 클라우드 스토리지, 데이터 플로우, AutoML 등
  • 배치 데이터 중심이지만 실시간 데이터 처리 지원
  • 웹 콘솔 이외에도 API를 통한 관리/제어 가능

Apache Hive

  • Facebook이 2008년에 시작한 아파치 오픈소스 프로젝트
  • 하둡 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스
    • HiveQL이라 부르는 SQL 지원
    • MapReduce위에서 동작하는 버전과 Apache Tez를 실행 엔진으로 동작하는 버전 두 가지가 존재
    • 다른 하둡 기반 오픈 소스들과 연동이 쉬움(Spark, HBase 등)
    • 자바나 파이썬으로 UDF 작성 가능
    • 구글 클라우드의 대표적 서비스
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
  • 배치 빅데이터 프로세싱 시스템
    • 데이터 파티셔닝과 버킷팅과 같은 최적화 작업 지원
    • 빠른 처리속도 보다는 처리할 수 있는 데이터 양의 크기에 최적화
  • 웹 UI와 커맨드라인 UI(CLI) 두 가지를 지원
  • 점점 Spark에 밀리는 분위기임

Apache Presto

  • Facebook이 2013년에 시작한 아파치 오픈소스 프로젝트
  • 다양한 데이터소스에 존재한느 데이터를 대상으로 SQL 실행 가능
    • HDFS(Hadoop Distributed File System), S3, Cassandra, MySQL 등
    • PrestoSQL이라고 부르는 SQL 지원
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
  • 배치 빅데이터 프로세싱 시스템
    • Hive와는 다르게 빠른 응답 속도에 좀 더 최적화(메모리 기반)
    • 빠른 처리속도 보다는 처리할 수 있는 데이터 양의 크기에 최적화
  • 웹 UI와 커맨드라인 UI(CLI) 두 가지를 지원
  • AWS Athena가 Presto를 기반으로 만들어짐Apache Iceberg
  • Netflix가 2018년에 시작한 아파치 오픈소스 포르젝트로 데이터 웨어하우스 기술이 아님
  • 대용량 SCD(Slowly-Changing Datasets)데이터를 다룰 수 있는 테이블 포맷
    • HDFS, S3, Azure Blob Storage 등 클라우드 스토리지 지원
    • ACID 트랜잭션과 타임여행(과거 버전으로 롤백과 변경 기록 유지 등)
    • 스키마 진화(Schema Evolution) 지원을 통한 컬럼 제거와 추가 가능(테이블 재작성 필요 X)
  • 자바와 파이썬 API 지원
  • Spark, Flink, Hive, Hudi 등 다른 Apache 시스템과 연동 가능

Apache Spark

  • UC 버클리 AMPLab이 2013년에 시작된 아파치 오픈소스 프로젝트
  • 빅데이터 처리 관련 종합 서비스
    • 배치처리(API/SQL), 실시간 처리, 그래프 처리, 머신러닝 기능 제공
  • 다양한 분산처리 시스템 지원
    • 하둡(YARN), AWS EMR, Google Cloud Dataproc, Mesos, K8s 등
  • 다양한 파일 시스템과 연동 가능
    • HDFS, S3, Cassandra, HBase 등
  • CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원
  • 다양한 언어 지원: 자바, 파이썬, 스칼라, R

데이터 플랫폼의 발전 단계

초기단계: 데이터 웨어하우스 + ETL

  • 앞에서 설명함발전단계: 데이터 양 증가
  • Spark와 같은 빅데이터 처리 시스템 도입
  • 데이터 레이크 도입: 로그 데이터와 같은 대용량 비구조화 데이터 대상성숙 단계: 데이터 활용 증대
  • 데이터 활용 가속화
  • ELT 단이 더 중요해지면서 dbt 등의 analytics engineering 도입
    • 데이터 레이크 to 데이터 레이크
    • 데이터 레이크 to 데이터 웨어하우스
    • 데이터 웨어하우스 to 데이터 웨어하우스

공부하며 느낀점

데이터 엔지니어 주니어로 성장하기 위해 배우고 익혀야 할 기술의 종류를 알게 되었으며 앞으로 이 기술들이 익숙해질 수 있도록 열심히 공부해야겠다는 생각이 들었다.

반응형