일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Ubuntu 20.04
- Virtual Box 7.0.6
- 웹/모바일
- 8기
- 보기 편하라고 만든
- id # tr # 환경변수
- 네이버
- 백준 #baekjoon # 2563
- 네이버 부스트 코스
- 부스트캠프
- 운영체제론
- 후기
- Today
- Total
Miner
8주차-1 본문
11/27 - 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드(1)
다양한 데이터 웨어하우스 옵션
데이터 조직의 비전 - 신뢰할 수 있는 데이터를 바탕으로 부가 가치 생성 (본업을 더 잘할 수 있게)
데이터의 중요성을 강조하니 데이터 팀도 회사에서 인정을 받는다 ? - NO
1. 데이터 조직이 하는 일 (데이터 분석가)
- 고품질 데이터를 기반으로 의사 결정권자에게 입력 제공
- 결정 과학
- 데이터를 고려한 결정(data informed decisions) vs 데이터 기반 결정(data driven decisions)
- 데이터 기반 지표 정의, 대시보드와 리포트 생성
2. 데이터 조직이 하는 일 (데이터 사이언티스트)
- 고품질 데이터를 기반으로 사용자의 서비스 경험을 개선
- 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선
- 개인화를 바탕으로한 추천과 검색 기능 제공
- 공장이라면 공정 과정에서 오류를 최소화하는 일을 수행
데이터 팀의 발전 : 데이터 인프라 구축
- 서비스에서 직접 생기는 데이터와 써드파티를 통해 생기는 간접 데이터를 ETL 을 통해 데이터 웨어하우스에 넣는다
- ETL 프레임워크 : airflow, 데이터 웨어하우스 : AWS, Big query, redshift
- 프로덕션 데이터베이스 : OLTP (Online Transaction Processing)
- 데이터 웨어하우스 : OLAP (Online Analytical Processing)
데이터 웨어하우스
- 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스 (SQL 데이터베이스)
- 데이터의 크기에 맞게 어떤 데이터베이스를 사용할지 선택
- 크기가 커진다면 다음 중 하나를 선택
- AWS Redshift, 구글 클라우드의 Big Query
- Snowflake
- 오픈소스 기반의 하둡(Hive/Presto), Spark
- 이 모두 SQL을 지원
- 중요 포인트는 프로덕션용 데이터베이스와 별개의 데이터베이스여야 한다는 점
- 데이터 웨어하우스의 구축이 진정한 데이터 조직이 되는 첫 번째 스텝
ETL(Extract, Transform, Load)
다른 곳에 존재하는 데이터를 가져다가 데이터 웨어하우스에 로드하는 작업
Extract : 외부 데이터 소스에서 데이터를 추출
Transform : 데이터의 포맷을 원하는 형태로 변환
Load : 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재
데이터 파이프라인이라고 부르기도 함
- 관련해 가장 많이 쓰는 프레임워크는 Airflow
- Airflow는 오픈소스 프로젝트로 파이썬 3 기반이며 Airbnb에서 시작
- AWS와 구글 클라우드에서도 지원
- ETL 관련 SaaS (Software as a Service)도 출현하기 시작
- 흔한 데이터 소스의 경우 FiveTran, Stitch Data와 같은 Saas를 사용하는 것도 가능
시각화 대시보드
지표의 경우 3A (Accessible, Actionable, Auditable)가 중요
중요 지표의 예 : 매출액, 월간/주간 액티브 사용자 수
널리 사용되는 대시보드 : 구글 클라우드의 룩커(Looker), 세일즈포스의 태블로(Tableau), 마이크로소프트의 파워 BI(POWER BI), 오픈소스 아파치 수퍼셋(Superset)
머신러닝
데이터로부터 패턴을 찾아 학습
데이터의 품질과 크기가 중요
데이터로 인한 왜곡 발생 가능 - AI 윤리
내부동작 설명 가능 여부도 중요 - ML Explainability
작은 회사에서는 한 사람이 몇 개의 역할을 동시 수행하는 것이 일반적
데이터 엔지니어 / 데이터 분석가 / 데이터 과학자
데이터 분석가 : 과거, 현재의 데이터를 바탕으로 현실에 대한 자각할 수 있는 결정을 도와준다는 개념
데이터 과학자 : 과거, 현재의 데이터를 바탕으로 미래를 예측하는 머신러닝 모델을 만들어서 고객들의 서비스 경험을 개선
데이터 엔지니어 역할
파이썬 / 자바 / 스칼라 언어
데이터 웨어하우스를 만들고 이를 관리, 클라우드로 가는 것이 추세 (AWS의 Redshift, 구글 클라우드의 BigQuery, 스노우플레이크)
관련해서 중요한 작업 중의 하나는 ETL 코드를 작성하고 주기적으로 실행해주는 것 (ETL 스케줄러 혹은 프레임워크가 필요 Airflow라는 오픈소스가 대세)
데이터 분석가, 데이터 과학자들과의 협업을 통해 필요한 툴이나 데이터를 제공해주는 것이 데이터 엔지니어의 중요한 역할 중의 하나
(주니어 데이터 엔지니어 / 필수)
SQL : 기본 SQL, Hive, Presto, SparkSQL
프로그래밍언어 : 파이썬, 스칼라, 자바
데이터웨어하우스 : Redshift, Snowflake, Bigquery
ETL/ELT 프레임워크 : Airflow
대용량 데이터 처리 플랫폼 : Spark / YARN
컨테이너 기술 : Docker/K8s
클라우드 컴퓨팅 : AWS, GCP, Azure
기타 지식 : 머신 러닝 일반, A/B 테스트, 통계
데이터가 커져도 문제가 없는 홪강가능성과 적정한 비용이 중요한 포인트
AWS의 Redshifts는 고정비용 옵션, 구글 클라우드의 BigQuery, Snowflake는 가변비용이라 처리할 수 있는 데이터가 Redshift 보다 크다
오픈소스 기반(Presto, Hive)을 사용하는 경우도 클라우드 버전 존재
데이터가 작다면 굳이 빅데이터 기반 데이터 베이스를 사용할 필요가 없음
데이터 레이크
구조화 데이터 + 비구조화 데이터 (로그 파일)
보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지에 가까움
보통은 데이터 웨어하우스보다 몇 배는 더 크고 더 경제적인 스토리지
보통 클라우드 스토리지가 됨 ( AWS라면 S3가 대표적인 데이터 레이크라 볼 수 있음 )
데이터 레이크가 있는 환경에서 ETL과 ELT
ETL : 데이터 레이크와 데이터 웨어하우스 바깥에서 안으로 데이터를 가져오는 것
ELT : 데이터 레이크와 데이터 웨어하우스 안에 있는 데이터를 처리하는 것
ETL
❖ ETL의 수는 회사의 성장에 따라 쉽게 100+개 이상으로 발전
● 중요한 데이터를 다루는 ETL이 실패했을 경우 이를 빨리 고쳐서 다시 실행하는 것이 중요
● 이를 적절하게 스케줄하고 관리하는 것이 중요해지며 그래서 ETL 스케줄러 혹은 프레임웍이 필요해짐
▪ Airflow가 대표적인 프레임웍
❖ 데이터 요약를 위한 ETL도 필요해짐 -> ELT라고 부름
● 앞에서 설명한 ETL은 다양한 데이터 소스에 있는 데이터를 읽어오는 일을 수행.
● 하지만 이를 모두 이해해서 조인해서 사용하는 것은 데이터가 다양해지고 커지면서 거의 불가능해짐.
● 주기적으로 요약 데이터를 만들어 사용하는 것이 더 효율적. dbt 사용 ▪ 예) 고객 매출 요약 테이블, 제품 매출 요약 테이블, …
다양한 데이터 소스의 예시
- 프로덕션 데이터베이스의 데이터 (보통 Mysql, Postgresql)
- 이메일 마케팅 데이터 (Mailchimp, Hubspot, SendGrid)
- 크레딧카드 매출 데이터 (Strip)
- 서포트 티켓 데이터 (Zendesk, Kustomer)
- 서포트 콜 데이터 (ChannelTalk, RingCentral, Talkdesk)
- 세일즈 데이터 (Salesforce)
- 사용자 이벤트 로그 (Amplitude, MixPanel)
Airflow (ETL 스케쥴러)
데이터 웨어하우스의 구성 예시
빅데이터 처리 프레임워크
분산 환경 기반(1대 혹은 그 이상의 서버로 구성) - 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요
Fault Tolerance - 소수의 서버가 고장나도 동작해야 함
확장이 용이해야 함 - Scale Out 이 되어야 함 / 용량을 증대하기 위해서 서버 추가
1세대 - 하둡 기반의 ~
2세대 - Spark (SQL, DataFrame, Streaming, ML, Graph)
AWS Redshift, snowflake, Google Cloud Bigquery, Apache Hive, Apache Presto, Apache Iceberg, Apache Spark
Iceberg 제외 모두 SQL 지원