Book & Lesson

[데엔스터디2] 데이터엔지니어링을 위한 데이터웨어하우스(RedShift)

카프리썬_ 2021. 8. 15. 22:43
728x90
728x90

데이터엔지니어링 스타터 키트 - 2주차 후기

아래의 내용은 직접 유료강의를 수강하고, 배운점 및 추가로 공부한 내용을 기록한 내용입니다.

프로그래머스에서 진행하는 실리콘밸리에서 날아온 데이터엔지니어링 스타터키트 강의추전! 

 

2주차 내용


1. 데이터엔지니어링 

ETL파이프라인 작성

흩어져있는 데이터를 수집해서, 원하는 포맷으로 변형하고, DW에 적재하는 ETL 파이프라인 작성  (코딩필요)

데이터의 크기와 양에 따라서 pandas로 끝나기도 하고, Spark를 사용해서 분산처리를 해야할 수도 있다. 

ETL파이프라인 관리

초기엔 Crontab으로 관리를 자동화하지만,

ETL수가 늘어나면 관리를 편하게 할 수 있는 프레임워크 Airflow를 사용

 

데이터엔지니어의 일주일 (in 유데미) 

월요일 , "sprint 계획을 세우는 날" 

 

보통 개발팀에서는 애자일방법론의 스크럼을 쓰지만, 강사님의 팀에선 칸반방식을 사용하셨다고 했다. 

스크럼방식 : sprint기간(보통 2주)이 끝날때마다 결과물을 배포하고, 그 결과물을 바탕으로 product에 적용한다. 

칸반방식 : 스크럼과 다르게 sprint기간이 정해져 있지않다.  task가 끝나면 바로 다음 task에 적용되는 연속적인 배포

데이터팀은 내부facing이라서 굳이 특정한 기간마다 이번에 나갈꺼, 테스트할꺼, 배포할꺼를 딱딱 나눌 필요가 없다. 

- 지난 srpint에서 데모/회고 미팅 : 잘된거, 잘안된거, 이슈사항, 액션아이템

- 지난 sprint기반 Planning 미팅 : 데이터팀을 구축하는 단계(?) 인지라 팀전체의 40%를 인프라코드 리팩토링

 

화요일/수요일/목요일, "데일리 standup/미팅/개발"

- 데일리 standup : 지난 하루동안 뭐했고, 오늘은 뭐할건지, 이슈내용 슬랙으로 빠르게 공유하는 시간 

- 미팅 : 데이터엔지니어는 업무특성상 마케팅팀, 백엔드팀, 데이터분석가 팀 등 다양한 팀원들과 교류가 많다.

- 그외의 나머지 시간에는 모두 데이터파이프라인 개발과 최적화 업무

 

금요일, "데일리 standup/미팅/개발" + 리더급(?) 주간팀미팅 

- 팀지표, 목표로 잡았던 지표가 어떻게 돌아가고 있는지 따로 리뷰하는 시간 

예를 들어 DW의 Space가 얼마 없으면 미리 planning해야하니까 Space가 얼마 남았는지, 

얼마나 데이터파이프라인이 Fail했는지, 그 Fail이 얼마나 영향력있는지 (SLA) 리뷰

- 사고이슈 리포트 : 문제, 원인, 해결책, 타임라인 등 보고 

 

2. 클라우드 간단소개

컴퓨팅 자원(하드웨어, 소프트웨어 등등)을 네트워크를 통해 서비스형태로 사용하는 것

  1. No Provisioning : 준비할 필요가 없다
  2. Pay as you go : 쓴만큼 낸다.

클라우드가 없었다면?

  • 서버/네트워크/스토리지 구매설정 직접 수행
  • 데이터센터가서 서버가 들어갈 공간 직접확보
  • 서버구매, 설치 및 세팅(최대3달) -> 클라우드를 쓴다면, 위의 작업이 필요없고 이미 만들어진걸 사용하면 된다.
  • Peaktime기준으로 capacity planning 필요 -> 클라우드를 쓴다면, 트래픽에 맞춰서 탄력적으로 운영가능, 비용절감

AWS 

가장 큰 클라우드 컴퓨팅 서비스 업체

EC2 : aws의 서버호스팅 서비스 - Linux, Winodws, MacOS 같은 가상서버를 제공해주는 서비스

S3: aws의 대용량 클라우드 스토리지서비스 - 버킷이라는 디렉토리 안에 데이터 저장관리

RDS : AWS의 데이터베이스 서비스 - MySQL/MariaDB, PostgreSQL, Aurora / Oracle, MS SQL Server

Redshift : AWS의 데이터웨어하우스 서비스

Lambda : 서버없이 백엔드를 구현하는 방식 (serverless computing engine)

MWAA : AWS의 완전관리형 Airflow서비스 - 아직까진 아파치 오픈소스 airflow 호환성이 구글만큼 좋지않다.

 

3. 데이터웨어하우스 Deep Dive

  • Seperate SQL Database : 운영DB와 별도로 데이터팀들만 쓸 수 있도록 분리한 SQL데이터베이스
  • 구조화된 데이터를 다루는데 sql언어가 가장 효과적이다 : 맵리듀스에 SQL인터페이스지원 (Hive/SparkSQL/Presto)]
  • 데이터를 빠르게 처리하느냐 보다 많은 양의 데이터를 적합하게 처리할 수 있는가? 가 중요하다
  • OLAP VS OLTP 
    • OLAP :  데이터의 속도보다 데이터크기가 중요, 데이터분석목적으로 하는 dw
    • OLTP :  데이터의 크기보다 데이터속도가 중요, 실제 서비스의 고객과 facing하는 운영db
  • Fixed cost VS Variable cost
    • Fixed cost : 고정된 비용을 내는 방식
    • Variasble cost : 알아서 할당됟고 이에 따라서 지불하는 방식 

4. Redshift 소개

AWS에서 제공해주는 Scalable한 SQL엔진

응답속도가 빠르진 않지만 큰 데이터를 처리하는데 적합한 OLAP

 

redshift 특징 

- 스토리지 : 최대 2PB까지 지원, 컬럼별 스토리지 지원 

- SQL기반  : postgresql 8.x 과 호환성이 좋다

- Fixed cost 옵션 사용

- PK(primary key)를 보장하지 않음

- 벌크업데이트 가능

BULK UPDATE란?

데이터소스에파일을 S3에 올리면 COPY명령어를 통해 파일 통째로 Redsdhift의 테이블에 넣을 수 있는 방식

건바이건 하나씩 넣는게 아니라 파일 통째로 insert해서 빠르게 수행가능

 

redshift 최적화

DISTKEY (Distribution key) : 명시적으로 지정한 컬럼(**DISTKEY)**을 기준으로 각 레코드의 슬라이스 배치가 결정

ALL : 모든 레코드에 다 존재하도록 (동일하게 복제) 결정

Even : 각 노드를 번갈아가면서 라운드로빈 형식으로 분산, 균등하게 저장하도록 결정

redshift는 데이터를 분산하는 방식을 직접 지정해줘야하는 단점(?)이 있다. 빅쿼리는 이걸 알아서 정해줌

 

redshift 스키마(폴더)

보통 Mysql,Oracle에서는 데이터베이스라고 불렀는데, Redshift에서는 스키마라고 지칭한다.

  • raw data : ETL로 내부/외부 어디에서 읽어온 데이터들 저장
  • analytics : 로우데이터 테이블의 요약정보를 테이블로 저장 (데이터마트)
  • adhoc : 모든사람들이 테스트를 하거나 개발용도로 사용할 수 있는 play공간

함께 보면 좋은 내용 

2020.01.17 - OLAP/OLTP/DW/ETL 용어정리

2021.08.16 - 애자일(Agile) 방법론- 스크럼(Scrum) VS 칸반(Kanban) 데이터팀은?

2020.02.23 - Aws 서비스별 명칭정리

2020.02.03 - [S3] 스토리지 서비스1 - S3란? 객체스토리지

2021.08.09 - 🎯[Lambda] 람다란? 장점과 단점 | 콜드스타트와 동시성제한

2021.08.16 - [Redshift] AWS의 DataWarehouse Redshift 란?

728x90
반응형