[데이터 엔지니어링 데브코스 2기] TIL-8주차-파트02 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드(1)

이재호·2023년 11월 27일
0

1. 데이터 팀의 역할

데이터 조직의 비전은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다.

  • 부가 가치: 데이터 분석, 데이터를 바탕으로 한 ML로 개인 추천 서비스.
  • 중요한 것은 데이터로 매출 증가에 기여한다는 것을 보여 주어야 인정받을 수 있다.

1-1. 데이터 조직이 하는 일

  1. 고품질 데이터를 기반으로 의사 결정권자에게 정보 제공. (데이터 분석가)

    • Decision Science
    • data informed decisions (데이터에 대한 간접적인 결정)
    • data driven decisions (데이터에 기반한 결정)
    • 두 결정을 적절히 섞어서 사용하는 것이 좋다. (최적화 목적: data-driven, 혁신 목적: data-informed)
    • KPI 지표 계산.
  2. 고품질 데이터를 기반으로 사용자 서비스 개선 및 프로세스 최적화. (데이터 사이언티스트)

    • 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선. (추천, 검색 등의 개인화)
    • 오류를 최소화하도록 프로세스 최적화.

1-2. 데이터의 흐름과 데이터 팀의 발전 단계

이상적인 발전 단계)
1. 프로덕션 데이터와 로그 데이터, 또는 이메일과 광고에 의한 간접 데이터를 정제 후 중앙 데이터에 적재(ETL).
2. 데이터 분석을 위한 데이터 웨어하우스 구축.
3. 데이터 과학 적용.

  • 정리 : 데이터 인프라 구축(ETL(Airflow) -> 데이터 웨어하우스, 데이터 엔지니어) -> 데이터 분석(시각화 대시보드 및 리포트 작성, 데이터 분석가) -> 데이터 과학(사용자 경험 서비스 개선(추천, 검색의 개인화), 데이터 과학자)

현실)

  • 2, 3번을 먼저 실행.
  • 데이터 인프라가 없는 상태에서 데이터 분석가만 존재. -> 제 실력 발휘 불가. -> 해고.
  • 따라서 데이터 인프라를 먼저 구축하는 것이 중요하다.

1-3. 데이터 웨어하우스

  • 데이터 웨어하우스: 회사에 필요한 모든 데이터를 저장하는 중앙 (SQL)데이터베이스.

프로덕션 DB vs. 데이터 웨어하우스)

  • OLTP(트랜잭션용, 속도 중시.) vs. OLAP(분석용, 크기 중시.)

  • 데이터의 크기가 작다면 일반적인 SQL DB를 사용.

  • 데이터의 크기가 커진다면 다음 중 하나를 사용.

    • AWS RedShift
    • Google-Cloud BigQuery
    • Haddop(Hive, Presto) / Spark
  • 중요한 것은 프로덕션용 DB와 데이터 웨어하우스가 별개로 존재해야 한다는 점.

회사 면접 시, 지금 회사에서 사용하고 있는 데이터 웨어하우스 기술이 무엇인지에 대해 질문을 할 필요가 있다.


1-4. ETL (Extract-Transform-Load)

  • 데이터 인프라 밖에 있는 데이터를 데이터 웨어하우스에 (테이블 형태로) 로드하는 방법.
  • 데이터 파이프라인이라고 부르기도 함.
  • ETL에서 가장 많이 사용되는 프레임웤 : Airflow(AWS와 구글 클라우드에서도 서비스 지원.)
  • ETL 관련 SaaS도 출현하기 시작. (데이터 소스와 데이터 웨어하우스만 설정하면 알아서 ETL 프로세스를 진행해 주는 소프트웨어.)

1-5. 시각화 대시보드

  • 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적이다.
    • 중요한 지표 : 3A (Accessible, Actionable, Auditable)

대시보드 서비스)

  • Looker
  • Tableau (가장 많이 사용)
  • Power BI
  • Superset



2. 데이터 조직 구성원

  • 데이터 엔지니어, 데이터 분석가, 데이터 과학자.
  • 작은 회사에서는 위 역할을 두 가지 이상 수행.

2-1. 데이터 엔지니어의 역할

  • 기본적으로 소프트웨어 엔지니어와 같으므로, 하나 이상의 프로그래밍 언어(주로 파이썬)를 숙지하고 있어야 함.

  • 데이터 웨어하우스 구축 및 관리.

    • RedShfit, BigQuery, Snowflake
    • ETL 코드 작성 및 주기적인 실행 (Airflow 오픈 소스 활용)
    • Spark와 같은 빅데이터 처리 기술 적용.
  • 데이터 분석가와 과학자를 서포트.

  • 알아야 하는 기술:

    • SQL

    • 프로그래밍 언어: 파이썬, +자바

    • 데이터 웨어하우스: Redshift, Snowflake, BigQuery

    • ETL/ELT 프레임웤: Airflow

    • 대용량 데이터 처리 플랫폼: Spark/YARN

    • 클라우드 컴퓨팅: AWS, GCP, Azure

      +alpha)

    • 컨테이너 기술: Docker/K8s

    • ML, A/B test, stastics


2-2. 데이터 분석가의 역할

  • 비즈니스 인텔리전스를 책임짐.
  • 중요 지표를 정의하고 이를 대시보드 형태로 시각화함.
  • 대시보드: Tableau, Looker, Superset
  • 회사 내 다른 팀들의 데이터 관련 질의에 대한 응답.
  • 의사 결정권자들에게 정보 제공.
  • 보통 코딩 기술은 필요하지 않음.

알아야 하는 기술)

  • SQL
  • 대시보드 : 룩커, 태블로, 파워 BI, 수퍼셋
  • 데이터 모델링
  • 통계 지식
  • 비즈니스 도메인에 대한 지식
  • 지표 정의 능력

2-3. 데이터 분석가의 딜레마

  • 끊임 없이 많은 질문들에 시달리며, 우선순위를 정하는 것이 힘듦.
  • 좋은 데이터 인프라 없이 일을 수행하기가 힘듦.
  • 불분명한 소속감.

2-4. 새로운 직군 및 서비스

  • ML 엔지니어: 데이터 과학자 + 데이터 엔지니어
  • MLOps: 데이터 엔지니어 + 데이터 과학자 + DevOps
  • 프라이버시 엔지니어: 개인정보 보호 관련 직군
  • 데이터 디스커버리 서비스: 데이터의 양과 활용이 늘어나면서 대시 보드 수가 늘어나는데, 이를 위해 원하는 데이터 혹은 대시 보드를 찾을 수 있도록 해 주는 서비스.

2-5. MLOps

  • DevOps가 하는 일(CI/CD, Deployment, ...)을 ML에 적용하는 역할.
  • ML 모델 빌딩 및 배포, 성능 모니터링.

알아야 하는 기술)

  • 파이썬/스칼라/자바
  • 데이터 파이프라인과 데이터 웨어하우스
  • CI/CD, 서비스 모니터링
  • 컨테이너 기술 (도커, K8S)
  • 클라우드(AWS, GCP, Azure)
  • ML 관련 기술

2-6. 프라이버시 엔지니어

  • 전체 시스템에서 개인 정보 보호를 위한 가이드라인 및 툴을 제공하는 역할.
  • 개인 정보 데이터가 시스템에서 필요한 지 판단을 하고, 어떻게 저장하고 보호할 지 등에 대해서 결정.
  • 데이터 시스템에서 중요한 역할로 자리 매김.
  • 개인 정보 보호 법안은 점점 강화되고 있는 추세임.

2-7. 데이터 디스커버리

  • 별도의 직군은 아니지만, 큰 규모의 데이터 팀에서 반드시 필요한 서비스.

  • 데이터가 커지면 테이블과 대시보드의 수도 증가함.

    • 데이터 분석 시 어느 테이블 혹은 대시보드를 봐야하는지 혼란이 생김. -> 귀찮아서 새로운 테이블 혹은 대시보드를 생성함. -> 정보 과잉 문제. -> 악순환.
  • 주기적인 테이블과 대시보드 클린업 작업 필요.

  • 테이블과 대시보드 관련 검색 서비스 활용.

    • 아문센, 데이터허브. 셀렉트스타



3. 데이터 웨어하우스와 ETL/ELT

3-1. 데이터 웨어하우스

  • 클라우드 데이터 웨어하우스가 대세.
  • 작은 규모에서는 RD를 활용하다가 데이터 규모가 커지면 RedShift와 같은 클라우드 데이터 웨어하우스 활용.
  • 클라우드 서비스에는 크게 고정비용(RedShfit)과 가변비용(BigQuery, Snowflake) 옵션으로 나뉨. (후자: 좀더 확장 가능한 옵션.)
  • 초기에는 고정비용을 사용하다가 데이터 규모가 커지면 가변비용을 사용하는 것을 추천.

3-2. 데이터 레이크

  • 데이터 웨어하우스는 비구조화 데이터를 저장하기에는 용이하지가 않음.
  • 데이터 레이크: 구조화 데이터 + 비구조화 데이터(로그 파일)
  • 보존 기한이 없는 모든 데이터를 원래 형태로 보존하는 스토리지라고 보면 됨.
  • 일반적인 데이터 웨어하우스보다 훨씬 더 큰 용량이며 더 저렴한 스토리지.
  • 대표적인 예시) AWS의 S3
  • 데이터 레이크가 있는 환경에서 ETL과 ELT:
    • 외부 데이터 -> 데이터 인프라 : ETL
    • 데이터 인프라 -> 데이터 처리 : ELT

3-3. ETL, ELT

  • ETL의 수는 회사의 성장에 따라 기하급수적으로 늘어남.
    • 중요한 데이터에 대한 ETL이 실패했을 경우, 빠른 시간 내에 fix한 후 실행하는 것이 중요.
    • 이를 위한 스케줄러 혹은 프레임웤이 필요해졌으며, Airflow가 대표적인 기술이다.
  • 데이터 요약을 위해서, ELT도 생겨남.
    • ETL에서 읽은 데이터의 종류가 다양해지고 규모가 커지면서 모든 데이터를 이해해서 조인한 후 사용하는 것이 거의 불가능함.
    • 따라서, 주기적으로 요약 데이터를 만들어 사용하게 됨. (고객 매출 요약 테이블, 제품 매출 요약 테이블, ...)
    • 대표적인 기술: dbt
    • Data Lake에서 빅데이터 처리 기술(Spark)이 필요한 경우도 있음.

ETL은 데이터를 데이터 인프라 외부에서 내부로 가져오는 프로세스(파이프라인)이고, ELT는 데이터 인프라 내부에서 데이터를 조작하여 추상적이고 요약된 새로운 데이터(테이블, 대시보드)를 만드는 프로세스이다.


3-4. 데이터 소스 예

  • 프로덕션 데이터베이스 내의 데이터(사용자 정보, 상품 정보, 구매 기록, 리뷰, ...)
  • 이메일 마케팅 데이터
  • 크레딧카드 매출 데이터
  • 서포트 티켓 데이터
  • 서포트 콜 데이터
  • 세일즈 데이터
  • 사용자 이벤트 로그

3-5. Airflow

  • 대표적인 ETL/ELT 관리 및 운영 프레임웤.
  • 다수의 ETL에 대한 스케줄링 및 이들 간의 dependency 정의.
  • 실패한 ETL에 대한 에러 메시징 및 재실행 기능(Backfill)
  • AWS와 Azure에서도 지원.
  • Airflow에서 ETL을 DAG라 부르며, 웹 인터페이스를 통한 관리 기능을 제공함.
  • 크게 3가지 컴포넌트로 구성됨: 스케줄러, 웹서버, 워커(Worker)

3-6. 빅데이터 처리 프레임웤

  • 분산 환경 기반(다수의 서버로 구성. 분산 파일 시스템(HDFS) + 분산 컴퓨팅 시스템(Spark))
  • master서버 - slaves서버의 관계.
  • Falut Tolerance(일부 slave 서버가 고장나도 동작해야함.)
  • Replication Factor(데이터 블록을 여러 개의 서버에 저장하는 수.)
  • Scale UP/Out (서버 스펙 높이기 or 서버 추가)
  • 1세대 기술 : Hadoop(MapReduce, Hive/Presto) -> YARN 추가되면서 Spark으로 진화.
  • 2세대 기술 : Spark(SQL, Pandas의 DataFrame, Streaming, ML, Graph)



4. 데이터 웨어하우스 옵션들

살펴볼 데이터 웨어하우스)

  • AWS Redshift

  • Snowflake

  • Google Cloud BigQuery

  • Apache Hive

  • Apache Presto

  • Apache Iceberg

  • Apache Spark

  • 공통점: Iceberg(스토리지)를 제외하고는 모두 SQL 기반의 빅데이터 기반 데이터베이스임.

4-1. AWS RedShift

  • 최대 2PB 스케일 데이터 분산 처리 가능.
  • PostgreSQL의 대부분의 기능을 사용 가능.
  • 고정비용 옵션이 기본이었으나, 가변비용 모델도 생김(Redshift Serverless)
  • 약정 할인 가능.
  • CSV, JSON, Avro, Parquet 등 다양한 데이터 포맷을 지원.
  • AWS 내 다른 서비스와 연동이 쉬움: S3, DynamoDB, SageMaker, ...
  • 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
  • 웹 콘솔 외에도 API를 통해 관리/제어 가능.

4-2. Snowflake

  • 데이터 웨어하우스로 시작된 서비스.
  • 데이터 판매가 가능한 Data Sharing/Marketplace 제공.
  • ETL 및 다양한 데이터 통합 기능 제공.
  • SQL 기반의 빅데이터 저장, 처리, 분석 가능.
  • 다양한 데이터 포맷 지원.
  • S3, Cloud Storage, Blog Storage와 연동 가능.
  • 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
  • 웹 콘솔 외에도 API를 통한 관리/제어 가능.

4-3. Google Cloud BigQuery

  • Nested fields, repeated fields를 SQL 처리 가능.
  • 가정비용과 고정비용 옵션 지원.
  • 다양한 데이터 포맷 지원.
  • 구글 클라우드 내의 다른 서비스와 연동이 쉬움.
  • 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
  • 웹 콘솔 외에도 API를 통한 관리/제어 가능.

4-4. Apache Hive

  • Haddop 기반의 SQL 데이터 웨어하우스 서비스.
  • 다른 하둡 기반 오픈소스(Spark, HBase, ...)와 연동이 쉬움.
  • 다양한 데이터 포맷 지원.
  • 배치 빅데이터 프로세싱 시스템. (빠른 속도보다는 데이터 양에 최적화.)
  • 웹 UI 혹은 커맨드라인 UI를 지원.
  • 점점 Spark에 밀리며 서비스 이용자 수가 줄어듦.

4-5. Apache Presto

  • Hive와 거의 유사하며, Hive와 달리 데이터 양(디스크)보다는 빠른 처리 속도(메모리)에 초점을 맞춤.
  • Hive: 빅데이터.
  • Presto: 빠른 속도의 작은 규모의 데이터.

4-6. Apache Iceberg

  • 아파치 오픈소스 프로젝트로, 데이터 웨어하우스 기술은 아님.
  • 대용량 SCD(Slowly-Changing Datasets) 데이터를 다룰 수 있는 테이블(파일) 포맷.
  • flexible하다는 것이 특징.
  • 자바와 파이썬 API를 지원.
  • Spark와 같은 다른 Apache 시스템과 연동 가능.

4-7. Apache Spark

  • 파이썬의 판다스처럼 빅데이터를 프로세싱할 수 있는 기술.
  • 빅데이터 처리 관련 종합 기능. (배치 처리, 실시간 처리, 그래프, 머신러닝)
  • 다양한 분산처리 시스템 지원. (YARN, AWS EMR, G-C Dataproc, Mesos, K8S)
  • 다양한 파일시스템과 연동 가능. (HDFS, S3, Cassandra, HBase)
  • 다양한 데이터 포맷 지원.
  • 다양한 언어 지원. (자바, 파이썬, 스칼라, R)



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

5-1. 데이터 플랫폼의 발전 단계

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

  2. 발전 단계: 데이터 양 증가.

    • Spark와 같은 빅데이터 프로세싱 시스템 및 데이터 레이크 도입.
  3. 성숙 단계: 데이터 활용 증대.

    • ELT의 중요성 증가로 인한 dbt 등의 analytics engineering 도입
    • MLOps 등의 ML 관련 효율성 증대 노력 증대.

5-2. 발전 단계: 데이터 양 증가

  • Spark와 같은 빅데이터 처리 시스템 도입.
  • 데이터 레이크의 도입. (로그 데이터와 같은 비구조화 데이터 처리.)
    • 데이터 소스 -> 데이터 인프라 -> 데이터 웨어하우스

    • 데이터 소스 -> 데이터 인프라 -> 데이터 레이크

    • 데이터 레이크 -> 데이터 인프라 -> 데이터 웨어하우스

      • 이때, 빅데이터 처리 시스템인 Spark/Hadoop 등 사용.

5-3. 성숙 단계: 데이터 활용 가속화

  • 데이터 품질의 중요성 증대.
  • ELT의 중요성으로 인해 dbt 등의 analytics engineering 도입.
    • dbt: database to database (정제 후 데이터베이스에 다시 저장.)
    • lake to lake, laek to warehouse, warehouse to warehouse
  • MLOps 등 ML 개발 운영 관련 효율성 증대.
profile
천천히, 그리고 꾸준히.

0개의 댓글