기록 블로그

프로그래머스 데브코스-데이터 엔지니어/TIL(Today I Learned)

05/22 31일차 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (1)

usiohc 2023. 5. 22. 18:10

DE와 데이터 웨어하우스


주요 메모 사항


데이터 조직의 비전

  • 신뢰할 수 있는 데이터를 바탕으로 부가가치 생성
    • Data is the new oil?
    • 데이터의 중요성을 강조하니 데이터 팀도 회사에서 인정을 받는다?

 

데이터 조직이 하는 일(1)

  • 고품질 데이터를 기반으로 의사 결정권자에게 입력 제공
    • 결정 방향 이라고 부르기도 함
    • 데이터를 고려한 결정을 가능하게 해줌 ->데이터 기반 결정 (Data driven Decisions)
    • 예를 들면 데이터 기반 지표 정의, 대시보드와 리포트 생성 등을 수행

 

  • 고품질 데이터를 기반으로 사용자 서비스 경험을 개선 혹은 프로세스 최적화
    • 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선
      • 예) 개인화를 바탕으로한 추천과 검색기능 제공
    • 공장이라면 공정 과정에서 오류를 최소화하는 일을 수행

 

 

 

데이터의 흐름, 데이터 팀의 발전단계

  • 해당 이미지의 기입된 기술이 아닌 flow를 이해하기 위한 이미지
  • 위와 같이 만들어 진다면 이상적인 flow
  • 하지만 일반적으로 데이터 분석 -> 데이터 과학 적용 을 진행하다가 데이터 인프라의 필요성을 느끼게 됨

 

 

데이터 웨어하우스

  • 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터 베이스 (SQL 데이터베이스)
  • 크기가 커진다면 다음 중 하나를 선택
    • AWS Redshift, GCP BigQuery
    • 스노우플레이크(Snowflake)
    • 오픈소스 기반의 하둡(Hive/Presto)/Spark
    • 이 모두 SQL을 지원

 

  • 중요 표인트는 프로덕션용 데이터베이스와 별개의 데이터베이스여야 한다는 점
  • 데이터 웨어하우스의 구축이 진정한 데이터 조직이되는 첫 번쨰 스텝

 

 

ETL

  • 다른곳에 존재하는 데이터를 가져다가 데이터 웨어하우스에 로드하는 작업
    • Extract : 외부 데이터 소스에서 데이터를 추출
    • Transform : 데이터의 포맷을 원하는 형태로 변환
    • Load : 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재
    • 데이터 파이프라인이라고 부르기도 함

 

  • 관련하여 가장 많이 쓰이는 프레임웍은 Airflow
    • Airflow는 오픈소스 프로젝트로 파이썬 3 기반이며 Airbnb에서 시작
    • AWS와 구글 클라우드에서도 지원

 

  • ETL 관련 Saas(Software as a Service) 도 출현하기 시작 -> DE가 일이 너무 많아서 보완하기 위한 용도
    • 흔한 데이터 소스의 경우 FiveTran, Stitch Data와 같은 SaaS를 사용하는 것도 가능

 

 

시각화 대시보드

  • 보통 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적
    • 지표의 경우 3A(Accessible, Actionable, Auditable) 가 중요
    • 중요 지표의 예: 매출액, 월간/주간 액티브 사용자 수, ...

 

  • 가장 널리 사용되는 대시보드:
    • 구글 클라우드의 룩커, Looker
    • 세일즈포스의 태블로, Tableau
    • 마이크로소프트의 파워 BI, Power Bi
    • 오픈소스 아파치 수퍼셋 SuperSet

 


데이터 팀에는 누가 있는가?

  • 작은 회사에서는 한 사람이 몇 개의 역할을 동시 수행하는 것이 일반적

 

  • 데이터 엔지니어 DE
    • 데이터 인프라 (데이터 웨어하우스와 ETL) 구축
  • 데이터 분석가 DA
    • 데이터 웨어하우스의 데이터를 기반으로 지표를 만들고 시각화 (대시보드)
    • 내부 직원들의 데이터 관련 질문 응답
  • 데이터 과학자 DS
    • 과거 데이터를 기반으로 미래를 예측하는 머신러닝 모델을 만들어 고객들의 서비스 경험을 개선 (개인화 혹은 자동화 혹은 최적화)

  • 기본적으로는 소프트웨어 엔지니어
    • 파이썬이 대세. 자바 혹은 스칼라와 같은 언어도 아는 것이 좋음
  • 데이터 웨어하우스 구축
    • 데이터 웨어하우스를 만들고 이를 관리. 클라우드로 가는 것이 추세
      • aws의 Redshift, GCP의 BigQuery, Snowflake 
    • 관련해서 중요한 작업중의 하나는 ETL코드를 작성하고 주기적으로 실행해주는 것
      • ETL 스케줄러 혹은 프레임 웍이 필요 (Airflow 가 대세)
  • 데이터 분석가와 과학자 지원
    • 데이터 분석가, 데이터 과학자들과의 협업을 통해 필요한 툴이나 데이터를 제공해주는 것이 데이터 엔지니어의 중요한 역할 중의 하나

 

데이터 엔지니어가 알아야하는 기술

  • SQL : 기본 SQL, Hive, Presto, SparkSQL
  • 프로그래밍 언어 : 파이썬, 스칼라, 자바
  • 데이터 웨어하우스 (Redshift / Snowflake / BigQuery)
  • ETL / ELT 프레임웍 : Airflow, ....
  • 대용량 데이터 처리 플랫폼 : Spark/ YARN
  • 컨테이너 기술 - Docker/K8s
  • 클라우드 컴퓨팅 (AWS, GCP, Azure)
  • 도움이 되는 기타 지식 (머신러닝 일반, A/B테스트, 통계)

 

  • 데이터 엔지니어 스킬 로드맵 링크
  • MLOps혹은 ML Engineer가 다음 스텝이 많이 됨

 


 

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

  • 데이터 웨어하우스는 기본적으로 클라우드가 대세
  • 데이터가 커져도 문제가 없는 확장가능성(Scalable)과 적정한 비용이 중요한 포인트
  • 크게 고정비용 옵션과 가변비용 옵션이 존재하며 후자가 좀더 확장가능한 옵션
  • AWS의 Redshift, 구글 클라우드의 BigQuery, 스노우플레이크(Snowflake)
    • Redshift는 고정비용 옵션이며 BigQuery와 스노우플레이크는 가변비용
  •  오픈소스 기반 (Presto, Hive)을 사용하는 경우도 클라우드 버전 존재
  • 데이터가 작다면 굳이 빅데이터 기반 데이터베이스를 사용할 필요가 없음

 

데이터 레이크

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

 

ETL -> ELT

  • ETL의 수는 회사의 성장에 따라 쉽게 100+개 이상으로 발전
    • 중요한 데이터를 다루는 ETL이 실패했을 경우 이를 빨리 고쳐서 다시 실행하는 것이 중요
    • 이를 적절하게 스케줄하고 관리하는 것이 중요해지며 그래서 ETL 혹은 프레임웍이 필요해짐
      • Airflow가 대표적인 프레임웍

 

  • 데이터 요약을 위한 ETL도 필요해짐 -> ELT 라고 부름
    • 앞에서 설명한 ETL은 다양한 데이터 소스에 있는 데이터를 읽어오는 일을 수행.
    • 하지만 이를 모두 이해해서 조인해서 사용하는 것은 데이터가 다양해지고 커지면서 거의 불가능해짐.
    • 주기적으로 요약데이터를 만들어 사용하는 것이 더 효율적. dbt 사용
      • 예) 고객 매출 요약 테이블, 제품 매출 요약 테이블, ...

 

Airflow (ETL 스케줄러) 소개

  • ETL 관리 및 운영 프레임웍의 필요성
    • 다수의 ETL이 존재할 경우 이를 스케줄해주고 이들간의 의존관계(dependency)를 정의해주는 기능 필요
    • 특정 ETL이 실패할 경우 이에 관한 에러 메세지를 받고 재실행해주는 기능도 중요해짐 (Backfill)

 

  • 가장 많이 사용되는 프레임웍은 Airflow
    • Airflow는 오픈소스 프로젝트로 파이썬 3 기반이며 에어비앤비, 우버, 리프트, 쿠팡등에서 사용
      • AWS와 구글클라우드와 Azure에서도 지원ㅇ
    • Airflow에서는 ETL DAG라 부르며 웹 인터페이스를 통한 관리 기능 제공
    • 크게 3가지 컴포넌트로 구성됨: 스케줄러, 웹서버, 워커 (Worker)

 

 

ELT

  • ETL: 데이터를 데이터 웨어하우스 외부에서 내부로 가져오는 프로세스
    • 보통 데이터 엔지니어가 이를 수행함

 

  • ELT: 데이터 웨어하우스 내부 데이터를 조작해서 (보통은 좀더 추상화되고 요약된) 새로운 데이터를 만드는 프로세스
    • 이런 프로세스 전용 기술들이 있으며 dbt가 가장 유명: Analytics Engineering
    • 보통 데이터 분석가가 이를 수행함
    • 이 경우 데이터 레이크를 쓰기도 함

 

빅데이터 처리 프레임웍

  • 분산 환경 기반 (1대 혹은 그 이상의 서버로 구성)
    • 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요
  • Fault Tolerance
    • 소수의 서버가 고장나도 동작해야함
  • 확장이 용이해야함
    • Scale Out이 되어야함
    • 용량을 증대하기 위해서 서버 추가

 

 

Hadoop 2.0 and YARN Architecture

 

 


데이터 웨어하우스 옵션들

  • AWS RedShift
  • Snowflake
  • Google Cloud BigQuery
  • Apache Hive
  • Apache Presto
  • Apache Iceberg
  • Apache Spark

 

이 옵션들의 공통점 = Iceberg를 제외하고는 모두 SQL을 지원하는 빅데이터 기반 데이터베이스

 

AWS Redshift

  • 2012년에 시작된 AWS 기반의 데이터웨어하우스로 PB 스케일 데이터 분산 처리 가능
    • Postgresql과 호환되는 SQL로 처리 가능하게 해줌
    • Python UDF (User Defined Function)의 작성을 통해 기능 확장 가능
    • 처음에는 고정비용 모델로 시작했으나 이제는 가변비용 모델도 지원 (Redshift Serverless)
    • 온디맨드 가격 이외에도 예약 가격 옵션도 지원
  • CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원

 

  • AWS내의 다른 서비스들과 연동이 쉬움
    • S3, DynamoDB, SageMaker 등등
      • ML 모델의 실행도 지원 (SageMaker) 
    • Redshift의 기능 확장을 위해 Redshift Spectrum, AWS Athena등의 서비스와 같이 사용 가능

 

  • 배치 데이터 중심이지만 실시간 데이터 처리 지원
  • 웹 콘솔 이외에도 API를 통한 관리/제어 가능

 

Snowflake

  • 2014년에 클라우드 기반 데이터웨어하우스로 시작됨 (2020년 상장)
    • 지금은 데이터 클라우드라고 부를 수 있을 정도로 발전
    • 데이터 판매를 통한 매출을 가능하게 해주는 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를 통한 관리/제어 가능

 


실리콘밸리 회사들의 데이터 스택 트렌드

 

데이터 플랫폼의 발전단계

  • 초기 단계 : 데이터 웨어하우스 + ETL
    • 맨 위에 기입되어있음

 

  • 발전 단계 : 데이터 양 증가
    • Spark과 같은 빅데이터 처리시스템 도입
    • 데이터 레이크 도입

 

  • 성숙 단계 : 데이터 활용 증대
    • 현업단의 데이터 활용이 가속화
    • ETL 단이 더 중요해지면서 dbt 등의 analytics  engineering 도입
    • MLOps 등 머신러닝 관련 효율성 증대 노력 증대

 

 

발전 단계 : 데이터 양 증가

  • Spark과 같은 빅데이터 처리 시스템 도입
  • 데이터 레이크 도입 : 보통 로그 데이터와 같은 대용량 비구조화 데이터 대상
    1. 데이터 소스 -> 데이터 파이프라인 -> 데이터 웨어하우스
    2. 데이터 소스 -> 데이터 파이프라인 -> 데이터 레이크
    3. 데이터 레이크 -> 데이터 파이프라인 -> 데이터 웨어하우스
      • 이때 Spark / Hadoop 등이 사용됨
      • Hadoop: Hive / Presto 등이 기반

 

성숙 단계: 현업단의 데이터 활용 가속화

  • ELT단이 더 중요해지면서 dbt 등의 analytics engineering 도입
    • 데이터 레이크 to 데이터 레이크, 데이터 레이크 to 데이터 웨어하우스, 데이터 웨어하우스 to 데이터 웨어하우
  • MLOps 등 머신러닝 개발 운영 관련 효율성 증대 노력 증대

 


실리콘 밸리 회사 데이터 스택 비교

 

 


공부하며 어려웠던 내용