데이터로 의사결정
- Data Driven Decision
- Data Informed Decision
ETL
- airflow
- aws, 구글클라우드에서도 지원
- saas 도 있음
시각화 대시보드
- 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적
- 3A
- Accessible: 내가 보고싶을 때 볼 수 있어야 한다. 자동화된 시각화 대시보드가 있어야 한다. 업데이트가 잘 되어야 한다.
- Actionable: 등락의 의미가 명확해야 한다.
- Auditable: 이 데이터가 정확한지 확인할 방법이 있어야 한다.
- KPI(Key Performance Indicator)
데이터 레이크
- 데이터웨어하우스에 비해 저렴하다.
- 구조화 데이터 + 비구조화 데이터 (로그 데이터)
- 스토리지에 가깝다.
ETL vs ELT
- ETL: 외부 → 데이터 레이크, 데이터하우스
- ELT: 데이터 레이크, 데이터 웨어하우스 → 데이터 레이크, 데이터 웨어하우스
다양한 데이터 소스의 예
- 프로덕션 데이터 베이스
- 이메일 마케팅 데이터
- 크레딧카드 매출 데이터
- 서포트 티켓 데이터
- 서포트 콜 데이터
- 세일즈 데이터
- 사용자 이벤트 로그
Airflow(ETL 스케쥴러) 소개
- ETL 관리 및 프레임워크의 필요성
- 다수의 ETL이 존재할 경우 이를 스케줄해주고 이들간의 의존관계(dependency)를 정의해주는 기능이 필요
- 특정 ETL이 실패할 경우 이에 관한 에러 메세지를 받고 재실행해주는 기능이 중요(Backfill)
- 가장 많이 사용되는 프레임워크 Airflow
- ELT을 DAG라 부르며 웹 인터페이스를 통한 관리 기능 제공
- 3가지 컴포넌트로 구성
ELT
- 데이터 웨어하우스 내부 데이터를 조작해서 (보통은 좀 더 추상화되고 요약된) 새로운 데이터를 만드는 프로세스
- dbt가 가장 유명한 기술: Analytics Engineering
- 데이트 분석가가 주로 한다.
- 데이터 레이크를 사용하기도 한다.
빅데이터 처리 프레임워크
- 분산 환경 기반
- 분산 파일 시스템 (HDFS)
- 분산 컴퓨팅 시스템 (MapReduce, Hive/Presto, Spark)
- Fault Tolerance
- Scale out이 되어야 함
대표적인 빅데이터 프로세싱 시스템
- 1세대
- MapReduce
- Hive/Presto(MapReduce를 SQL로 쓸 수 있게 해주는 기술)
- 2세대
데이터 웨어하우스
- Redshift
- Snowflake
- Google Cloud BigQueryu
- Apache Hive
- Apache Presto
- Apache Iceberg (Storage)
- Apache Spark (Storage에 있는 데이터를 읽을 수 있는 엔진)
공통점
- SQL을 지원하는 빅데이터 기반 데이터베이스 (Iceberg 제외)
Redshift
- 2012년에 시작된 AWS 기반의 데이터웨어하우스, PB 스케일 데이터 분산처리 가능
- Postgresql과 호환되는 SQL
- Python UDF (User Defined Function)의 작성을 통해 기능 확장 가능
- 고정비용, 가변비용 모두 지원
- CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷 지원
- AWS 내의 다른 서비스들과 연동 가능
- S3, DynamoDB, SageMaker(ML모델 실행 가능), …
- 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, Paraquet 등과 같은 다양한 데이터 포맷을 지원
- 구글 클라우드 내의 다른 서비스들과 연동이 쉬움
- 클라우드 스토리지, 데이터 프로우, AutoML 등
- 배치 중심, 실시간 데이터 처리 지원
- 웹 콘솔 이외에도 API를 통한 관리/제어 가능
Apache Hive
- Facebook이 2008년에 시작한 아파치 오픈소스 프로젝트
- 하둡 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스
- HiveQL이라 부르는 SQL 지원
- MapReduce 위에서 동작하는 버전과 Apache Tez를 실행 엔진으로 동작하는 버전 두 가지 존재
- 다른 하둡 기반 오픈소스와 연동이 쉬움(Spark, HBase 등)
- 자바나 파이썬으로 UDF 작성 가능
- CSV, JSON, Avro, Paraquet 등과 같은 다양한 데이터 포맷 지원
- 배치 빅데이터 프로세싱 시스템
- 데이터 파티셔닝과 버킷팅과 같은 최적화 작업 지원
- 빠른 처리속도보다는 처리할 수 있는 데이터 양, 크기에 최적화
- 웹 UI와 커맨드라인 UI 두 가지를 지원
- 점점 Spark에 비해 밀림
Apache Presto
- Facebook이 2013년에 시작한 아파치 오픈소스 프로젝트
- 다양한 데이터소스에 존재하는 데이터를 대상으로 SQL 실행 가능
- HDFS, S3, Cassandra, MySQL, …
- PrestoSQL 이라 하는 SQL 지원
- CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷 지원
- 배치 빅데이터 프로세싱 시스템
- Hive와 달리 빠른 응답 속도에 최적화 (메모리기반, Hive는 디스크 기반)
- 웹 UI와 CLI 두 가지 지원
- AWS Athena가 Presto 기반
Apache Iceberg
- Netflix가 2018년에 시작한 아파치 오픈소스 프로젝트
- 데이터 웨어하우스 x
- 대용량 SCD (Slowly-Chaing 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 등
- CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷 지원
- 다양한 언어 지원: Java, Python, Scala, R