일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- spark
- Kafka
- 데이터파이프라인
- selenium
- Hive
- Django Rest Framework(DRF)
- ELT
- 데이터마트
- truncate
- airflow
- 알고리즘
- yarn
- airflow.cfg
- redshift
- dag 작성
- Serializer
- AWS
- 컨테이너 삭제
- dag
- 데이터레이크
- 데이터 웨어하우스
- docker hub
- 웹 스크래핑
- ETL
- Django
- 웹 크롤링
- docker-compose
- SQL
- snowflake
- docker
Archives
- Today
- Total
개발 기록장
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) 발생 가능
- 내부동작 설명 가능 여부 중요
- 머신 러닝(Machine Learning)
데이터 조직의 구성원
데이터 엔지니어(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) 고객 매출 요약 테이블 등
- 주기적으로 요약 데이터를 만드러 사용한 것이 효율적: Dbt 사용
- 보통 데이터 분석가가 이를 수행
- 데이터 레이크를 사용하기도 함
다양한 데이터 소스의 예
- 프로덕션 데이터베이스(웹/앱에서 사용하는 데이터베이스)의 데이터
- 보통 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 데이터 웨어하우스
공부하며 느낀점
데이터 엔지니어 주니어로 성장하기 위해 배우고 익혀야 할 기술의 종류를 알게 되었으며 앞으로 이 기술들이 익숙해질 수 있도록 열심히 공부해야겠다는 생각이 들었다.
반응형
'데브코스(DE) > 데이터 웨어하우스 관리와 고급 SQL, BI 대시보드' 카테고리의 다른 글
05. 대시보드 소개와 구현 (0) | 2024.05.12 |
---|---|
04. Snowflake 운영과 관리 (0) | 2024.05.12 |
03. Redshift 고급 기능 실습(권한과 보안/백업 등) (0) | 2024.05.08 |
02. Redshift 소개와 기능 (0) | 2024.05.07 |