[2주차] 데이터 웨어하우스(Data Warehouse)

zuckerfrei·2024년 2월 12일
0

Intro

프로그래머스 강의 '실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 with Python' 을 수강했다. (6기)

이 강의 내용을 정리하여 공유하고자 한다.

https://programmers.co.kr/learn/courses/12916

2주차는 데이터 엔지니어의 일상, Cloud Computing 기본개념 & AWS 그리고 DW(Data Warehouse) & Redshift가 무엇인지에 대한 내용을 다루었다.


1주차 퀴즈 리뷰 및 질문답변

  • DW가 반드시 빅데이터일 필요는 없다.
  • DE뽑아서 인프라를 만드는 것이 가장 먼저이다.
  • ORACLE → Production DB(DW로 많이 사용하지는 않는다) 비쌈

Q. 데이터 엔지니어가 데이터를 production DB(ex. mySQL 등)에서 DW로 단순히 옮기는 것이 아닌, 어떤 의도를 가지고 Extract하는 경우는 없을까요? 원래라면 데이터 분석가나 ML 사이언티스트가 이상치들을 제거하는 코드를 매 번 앞단에서 실행하는 것보다 데이터 엔지니어가 DW로 옮기는 과정에서 이들을 제거한다면 더 효율적일 것 같아서 입니다.

A. 필요한 것만 골라서 가져가는 것도 나쁘진 않지만, 원하는 것이 추가될 때 마다 DE가 추가적으로 손이 가게된다.
그래서 일반적으로 전체를 다 가져다가 갖다놓고, 분석가가 필요한 것을 골라 사용하는 경우가 많다.


Q. Cloud 기반 서비스보다 On-prem에서 직접 구축하는 것이 더 유리한 경우가 있을까요?

A. 보안이 아주 중요한 경우에는 온프렘으로 구축한다. 금융,개인정보를 다루는 회사는 보수적으로 온프렘을 고수하기도 함. 그리고 어느 순간부터는 클라우드가 더 비싸지기도 한다. 이럴 경우 다시 온프렘으로 돌아가기도 한다.
그러나 엄청난 트래픽을 다루는 넷플릭스는 95%이상을 AWS에서 돌리는 중이다. 이것은 엔지니어의 능력차이인 것으로 보인다. 인턴, 주니어 안뽑고 잘하는 사람들만 데리고 있으니 클라우드를 쓸 때도 탄력적으로 오토스케일링을 잘 구현해놓아서 가능한 것 같다.


Q. 기존 데이터 분석에서 데이터 엔지니어로 직무 전환 준비중입니다. 가고자 하는 회사는 airflow을 포함한 다양한 기술 스택을 요구하는데요. 이번 수업과 병행해서 준비하면 좋은 공부가 어떤 것인지 추천해주시면 감사하겠습니다. 혹시 추천해주신 공부가 여러 가지라면 우선순위도 같이 알려주시면 감사하겠습니다.!

A. 기본은 SQL, Python 코딩, Airflow(ETL tool) 데이터가 커지면 SPARK(분산처리) 공부 → ML공부해서 ML 엔지니어, DEVOPS 공부해서 ML OPS등등으로 발전도 가능함


3. 데이터 엔지니어의 일주일 보기

1) 월요일

- Sprint 관련 활동 

KANBAN 느슨하게, SCRUM 빡세게 (KANBAN, SCRUM 차이점 참조)

2주 정도의 스프린트로 반복한다. 2주 빠르게 돌리고, 리뷰하고, 다시 2주 빠르게 돌리고..

  1. 데모 미팅
  2. 회고 미팅 : 무엇이 잘 되었는지, 무엇을 더 발전시킬지, 그 밖의 회의
  3. 플래닝 미팅: 40%시간은 인프라 코드의 리팩토링에 사용함, 미팅 제외 하루 5시간 일 한다고 가정

- On-Call 엔지니어 새로 지정

다음 일주일 동안 Data Pipeline 이슈가 생기면 해결한다. 주말도 예외가 아니다.

2) 화요일

- Daily Standup 스탠드업 

내가 24시간동안 무엇을 했는지, 앞으로 24시간 동안 무엇을 할 것인지 등등 빠르고 짧게 공유하는 미팅

- 여러 팀원들과 미팅

(DE <-> DA, DE <-> DS, DA <-> DS)

- DE == 노가다

지속적으로 파이프라인을 관리해야하므로 노가다라고 느낄 수 있다.

airflow를 잘 쓰면 Backfill하기 좋다 -> 사고, 데이터 품질 문제 등 과거의 데이터를 불러와야 하는 경우에 대처하기 좋음

3) 수요일/목요일

- Daily Standup

- 데이터 파이프라인 개발 최적화

- 오피스 아워(OFFICE HOUR)

데이터 분석가 한 사람이 한 시간 정도 시간 내서 내부 직원들로부터 다양한 데이터 관련 질문에 답을 해줌

- 다양한 미팅

4) 금요일

- Daily Standup

- 데이터 파이프라인 개발 최적화

- 주간 스태프 미팅 

목표 달성현황, 이슈 생긴 파이프라인에 대한 리뷰, 리쿠르팅

- INCIDENT REPORT

문제가 생겼을 때 왜 생겼고, 어떻게 막았는지, 어떤 피해가 생기는지 작성하는 것

문제가 생길 수는 있찌만 반복되는 문제가 생기면 안 됨!


4. Cloud & AWS 간단소개

1) 정의

컴퓨팅 자원을 네트워크를 통해 서비스 형태로 사용하는 것

  • 키워드:
    • “No Provisioning” - 준비과정 필요 없다
    • “Pay As You Go” - 쓴 만큼만 낸다
  • 자원(예를 들면 서버)을 필요한만큼 (거의) 실시간으로 할당하여 사용한큼 지불
    • 탄력적으로 필요한만큼의 자원을 유지하는 것이 중요

클라우드는 비용관리를 잘 해야한다. 계속 켜놓으면 오히려 돈이 더 많이든다.

탄력적으로 필요한 만큼만 사용하기!

클라우드 컴퓨팅이 없다면?

온갖 장비를 직접 준비해서 설치해놓아야함. 뭐 잘못건드리면 서버 꺼지고 난리남

너무 번거롭다. 장비 추가하려면 2~3개월은 걸림.

2) Cloud 장점

  • 초기 투자 비용이 크게 줄어듦
    • CAPEX (Capital Expenditure) vs. OPEX (Operating Expense)
  • 리소스 준비를 위한 대기시간 대폭 감소
    • Shorter Time to Market
  • 노는 리소스 제거로 비용 감소
  • 글로벌 확장 용이
  • 소프트웨어 개발 시간 단축
    • Managed Service (SaaS) 이용

3) AWS Introduction

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

트래픽이 가장 높은 날(블랙 프라이데이)과 트래픽이 가장 낮은 날(여름 연휴기간) 의 트래픽 차이는 30배나 된다!

탄력적으로 대응하는 요구가 발생한다.

아마존 사이트를 운영하던 서버들 중 놀고 있는 서버들을 다른 업체에게 렌트해주는 것이 AWS의 시작이었다.

- MWAA

에어플로우가 설치된 서버를 이용할 수 있는 상품 


5. Redshift 소개

1) Data Warehouse Deep Dive

  • 아직도 SQL이 굉장히 중요하다. 하둡이 나오긴 했지만! 구조화된 데이터 처리에 SQL만한 것이 없다.
  • DW는 PRODUCTION DB가 아니다.
    • 내부 직원 특히 데이터 팀원을 위한 별도의 SQL DB이다.
  • 우리 회사에 필요한 모든 데이터를 저장해놓는 Central Data Storage
  • Fixed Cost Option 고정비용옵션 VS Variable Cost Option 가변비용옵션
    • 고정비용옵션 : 정해진 장비를 구입하고 쓰던 안쓰던 비용을 지불하는 것
    • 가변비용옵션 : SQL돌리기 위해 사용되는 CPU, MEM, DISK 에 따른 비용 지불. 오래 걸리는 쿼리를 짜도 돈을 내야됨.. BigQuery, SnowFlake 쓰는 회사에서는 매일매일 비용많이 발생한 쿼리 10개를 선정해서 작성자에게 메일을 보내기도한다.

2) Redshift Introduction

  • 2PB 페타바이트 까지 지원
  • OLAP : 응답속도가 빠른 DB는 아니라는 의미
  • 컬럼 추가 삭제가 굉장히 빠르고, 컬럼별로 압축이 가능 -> ??? 질문할내용
  • 벌크 업데이트 기능 제공. 파일을 DB에 그냥 담아버리는 것
  • 고정비용(fixed cost) 옵션으로 시작했으나 + 최근에는 가변비용 옵션 제공
  • PK를 보장하지 않는다 → 모든 DW에는 PK를 지정은 할 수 있지만 그것을 보장해주지는 않는다. 이것 보장하는 순간 속도가 안 나오기 때문에! 몇 억개 레코드를 추가하려면 PK를 체크해야하는데 이게 시간이 엄청 오래 걸림. 그럼 어떻게 유일한 데이터라는 것을 확인하는지??? 나중에 나옴

3) Redshift is Postgresql 8.x compatible

Postgres 기반으로 만들어져서 상당히 유사하다.

다만 VARCHAR(CHARACTER VARYING)은 POSTGRES에는 제한이 없으나, REDSHIFT는 제한이 있다. 이것 유의할 것

4) 옵션, 가격

Dense Storage : 고정비용

Managed Storage : 가변비용

5) Redshift Tricky?

  • BigQuery나 SnowFlake보다 scalability가 떨어지는데, 이렇게 퍼포먼스가 떨어진다는 평가를 받는 이유

분산되서 저장되어야하는데, 어떻게 분산될지를 개발자가 정해줘야하는 구조라서

6) Extend Function

python으로 사용자가 직접 함수를 추가할 수 있음 

7) BULK UPDATE - COPY SQL

먼저 S3에 파일을 옮겨놓고, S3에서 REDSHIFT로 COPY 명령어 사용함

8) How to Access Redshift

  • 분석 툴
  • JDBC/ODBC Library
  • SQL clients
  • PYTHON NOTEBOOK
profile
무설탕 음료를 좋아합니다

0개의 댓글