일시: 23.01.07(토) 10:00 ~
한기용 선생님(Max)의 data와 관련된 다양한 경험을 말씀해주심.
- 커리어 측면에서 여러가지 해보는게 중요
- 강의에서 설명해주시는 부분은 polyvore, udemy에서 경험기반
- 그 외 다양한 회사에서 airflow사용, 무엇이고 어떻게 사용하는지
과정
- 1주차: 데이터팀의 역할, Redshift
- 2주차: SQL
- 3주차 ~ 6주차: ETL, Airfolw - SQL,Pyton
커리어를 바라보는 관점
- 많이 들어오는 질문(3가지)
- 무엇이 뜨는지
- 미래대비 무엇을 준비
- 커리어 고착 무엇을 해야하는지
- 공통적인 theme → 불안감이 있어 선행 학습을 하려고 함
- 1.변화를 두려워 하지 말고, 2.필요한 부분을 찾아 자신감을 가지고 학습하는 태도
- 커리어 성장은 up&down이 많음. → 당연한거임.
- 내가 가진거에 focus를 두면 변화를 주기가 힘듦
- Water-Fall → Agile, 예전처럼 큰회사 간다고 커리어 해결을 해주는게 아님
배움의 패턴
- 처음엔 쉬워 배운다는 느낌을 가짐
- 어려워지며 배움의 정체기 옮 → 1.정체기를 버티는 힘이 중요
- 그 과정에서 내가 무엇을 아는지 모르는지 파악하고 질문하기 → 자문자답
- 클래스 톡, Q&A 활용
- 2.내가 모르는 걸 아는게 발전
- 3.잘하는 사람 보고 기죽지 않기(비교하지 말기)
쌓아갈 skill
- 구조화된 데이터 다루기 때문에 SQL 필요
- Airflow - 데이터 파이프라인 만들때, 배치잡
- Spark/YARN - 빅데이터 환경
- AWS - 클라우드 컴퓨팅
- 컨테이너 지식 - K8S, Docker
- ML, AB test, 통계학
- 주니어 python, SQL, airflow
1. 데이터 팀의 역할 소개
1-1. Data flow 기반으로 역할 구분
- Data engineer 역할(1번 작업)
- DWH 구축 및 관리 → 클라우드로 가는추세라
- AWS - Redshift, Google - BigQuery, Snowflake
- ETL: 데이터 파이프 라인 작성 및 관리, 데이터 잡, Airflow에서는 DAG
- 클라우드 지식(AWS, Google)
- Python(기본), SQL(기본)
- 다양한 내외부 데이터를 수집(production Data warehouse, 서비스 운영을 위한)
- 데이터를 저장 및 적재(Data warehouse, 데이터 분석을 위한)
- ETL(Extract - 정보 추출, Transform - 우리가 원하는 포맷으로 데이터 변형, Load - DWH에 적재)
- Data analysist 역할(2번 작업)
- 데이터 기반 지표개선 자동화, 대시보드
- 결정을 과학적으로 하도록 함
- SQL(기본), 통계학, AB test
- 도메인 지식
- ETL 지식이 중요해짐, DHW에 적재된 데이터를 활용하여 새로운 summary 정보 만드는 것
- Data Scientist와 차이는 내부지향
- 커리어 측면에서 조직구조가 중요함
- DBT: 분석가와 엔지니어 연결자, ELT tool
*ELT vs ETL 구분해서 블로그 글 작성
- Data scientist 역할(3번 작업)
- 머신러닝 모델링
- 수학, 통계학 지식
- Pyspark(빅데이터), Python(기본), SQL(기본)
- PhD 받기위한 그 시간, 고민들의 경험이 도움이 됨. 참을성.
- 가설 → 왜 필요한지 → 성공 실패 지표정하기 → feature 만들어 → 모델 만들고 → AB test(모델비교) → 결과
- 서비스 측면에서 외부지향
1-2.데이터 팀은 무슨 일을 하는지?
- vision - Leverage, Trustworthy
- 신뢰 할 수있는 데이터를 가지고 부가가치를 만드는 서포트 조직. 그럼 어떻게 부가가치를 만드는지? 2가지
- 의사결정 서포팅(데이터 분석가),
- 고품질 데이터 패턴을 찾아 서비스 기능 개선(데이터 사이언티스트)
- 의사결정
- data driven decision(데이터 있는 그대로): 과거를 기반
- data informed decision(데이터 참고만)
- 리더의 뚝심이 필요, 데이터 반대로 가야하는 경우도 있음
- 고품질 데이터
- 머신 러닝을 통해 운영 비용 줄이기
- 사용자 서비스 개선(개인화 - 추천, 검색)
1-3.조직구조
- Centralized
- 현업부서와 같이 일함
- 과학자, 분석가, 엔지니어 다 있음
- 현업측에서는 협업측면에서 불만이 생길수도
- Distributed or Decentralized
- Data engineer만 남고 현업 부서로 분산
- career path 심화 될 수도 ex) 마케팅 팀의 데이터 분석가
- Hybrid of Centralized and Distributed
- 팀구조는 중심
- 중앙으로 report
- 팀 별로 사람 지정(6개월, 1년 기준으로 로테이션)
*면접시 좋은 질문: 데이터 팀의 조직구조는 어떻게 되는지?
1-4.Case Study → Max쌤 경험
- 중요 포인트
- 데이터 팀을 매니징 하는 사람에겐 매출증대와 데이터간의 연결고리를 만드는게 중요함
- 인프라가 우선 구축돼 있어야 함, 작게 시작해서 크게 엔지니어링과 분석 동시에 가능한 인력은 초기 스타트업에서 중요
- 데이터 품질이 중요함 → 데이터 품질을 측정하는 방법에 대한 고민
- 지표화 → 우리가 어떻게 개선하고 가치를 만들어 낼지 고민(데이터 과학자에게 중요한 부분) 성공과 실패의 기준을 설정
- 간단한 솔루션이 가장 좋은 솔루션 - 최소의 비용으로 최대의 효과 경험이 없는 데이터 과학자의 실수, 복잡하게 문제를 풀려고 함 간단한 문제로 해결되면 베스트 → 안되면 점차 고도화
- 기여도 분석(Marketing Attribution Pipeline)
- data driven 기반의 마케팅
- 광고비용 → 클릭 → 얼마나 많은 고객 → report
- 마케팅 팀과 협업
- 성장하는 스타트업에서 데이터 팀이 해야하는 업무
- 어떤 형태의 캠페인이 효과적인지 파악
- Detect Fraud
- 고객 서포트 팀과 협업
- 머신러닝 활용해 이상거래 탐지
- 사기, 정상 데이터 조합해 알고리즘을 이용해 예측
- Personalizing Weight Alerts at a Health
- 추천엔진 만들기
- 머신러닝 모델을 이용해 추천
- 한번 만들어서 유지 x
- 데이터의 패턴이 달라짐
- 성능이 떨어졌다 하면 재 트레이닝 해서 다시 배포(자동화) → MLops
2.Redshift 설명
2-1.Data Warehouse(OALP)
- 분석용 데이터베이스, 회사의 중앙 데이터 storage
- 속도가 중요하기 보다는 처리할 수 있는 데이터의 크기
- 별개의 SQL DB, 쓰는 사람은 내부 직원
- ETL을 통해 외부의 정보와 그 데이터를 조합해 만든 ELT 데이터 두 종류가 있음
- 고정 비용 옵션(Redshift), 가변 비용 옵션(BigQuery, snowflake)이 있음
- Production DB는 서비스 운영측면에서 기본정보만 들어감
- 사람들의 행동이 기록
- 속도가 빨라야함
- 관리하는 사람이 Back-end
- OLTP - 트랜잭션 처리
*OLAP, OLTP 구분
2-2.Redshift
- 한서버의 1 cluster에 2PB, 고정비용 옵션
- OLAP: 데이터 처리속도 보다는 크기에 신경을 쓴 DW
- Columnar storage
- bulk-update: 다수의 레코드를 빠르게 적재, DW 대부분 다 갖고 있음
- SQL insert into 를 통해 레코드를 DB 테이블에 적재 → 시간 다감
- 파일을 다 읽어서 S3에 적재 후 한큐에 RedShift에 올려버리는 걸 bulk insert
- bulk update sequence - COPY SQL → snowflake, bigquery에서도 사용
- primary key uniqueness 보장 x: 속도 떨어지기 때문에
- PostgreSQL 8.0.x와 호환
- AWS 다른 기능과 연동 쉬움, Amazon Athena: 비구조화 된 정보를 요약하는 기능
- 문제점: skewed 테이블 나올 수 있음. 어떤 테이블이 다수의 노드에 저장될 때 한 노드에 치우칠 수 있음. 병렬처리가 안될 수 있어 속도가 느려질 수 있음.
- Access
- 시각화 대시보드(tableau, looker, superset 등) 연동
- PostgreSQL 8.0.x를 쓸 수 있는 언어와는 다 연동
- Postico(Mac) 연결
- Python - Google colab
- Launch
- 지역 정하고, 어느 타입으로 몇 대 할것인지 설정
- Redshift Schema - DEV, SQL통해 생성하는데 admin만 가능
- 테이블 숫자가 많으면 기억 다 못함
- 폴더를 정의
- raw_data: ETL로 읽은건 저장, 엔지니어 책임
- analytics: ELT의 결과물들이 저장, 분석가 책임, 대시보드 쓸땐 여기 있는거
- adhoc: test
2-3 관계형 데이터 베이스 구조
- 2단계로 구성
- 가장 밑단에는 테이블(엑셀 시트)
- 폴더를 지칭하는 용어는 DB마다 조금씩 다름
- Schema(= database, 폴더) 밑에 테이블 존재
- 테이블 구조(=테이블 스키마)는 컬럼, 타입, 내용(레코드)
300x250
반응형
'Data Engineering > 프로그래머스 study 11기' 카테고리의 다른 글
[프로그래머스] 데이터 엔지니어 study - 8주차 (0) | 2023.03.11 |
---|---|
[프로그래머스] 데이터 엔지니어 study - 7주차 (0) | 2023.02.26 |
[프로그래머스] 데이터 엔지니어 study - 4주차 (0) | 2023.02.10 |
[프로그래머스] 데이터 엔지니어 study - 3주차 (0) | 2023.02.01 |
[프로그래머스] 데이터 엔지니어 study - 2주차 (0) | 2023.01.17 |