Data Engineering/프로그래머스 study 11기

[프로그래머스] 데이터 엔지니어 study - 1주차

히또아빠 2023. 1. 7. 19:18

일시: 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
반응형