728x90

데이터 엔지니어링 공부하기


데이터 업무 설명

데이터 플로우

1. 서비스 내에서 트래픽이 들어오면 외부 써드파티에 저장되거나 내부 트래필 데이터가 저장

-> 여기서 데이터 팀이 해야할일은 내외부에 산재한 데이터를 모아서 중앙 데이터 베이스(데이터 웨어하우스)에 모은다. 데이터 웨어하우스는 회사 내외부 사정에 따라 사용하는 관계형 데이터 베이스 작으면 마이SQL, 커지면 구글 클라우드, snowflake 즉 관계형 프로그램이 필요하다. 

(개발자이지만, 회사 내외부에 모이는 다양한 데이터들의 포맷을 맞춰서 저장하고 관리하는 역할인 것이다)

-> 데이터 인프라 구축

2. BI로 지표 분석(analytist)

3. 지표를 통해 모델링(scientist)

실제로는 인프라에 대한 중요성을 못느껴서 2,3 번 단계를 반복한다

 

데이터 팀의 목표

1. 데이터로 부가가치(눈에 보이는 수익을 낼 순 없지만 수익에 도움이 되는 가치를 만들어 냄)

2. 회사의 방향에 결정적인 영향, 방향을 제시

3. 과거데이터를 분석해서 더 나은 결과를 제시(대표적인게 추천시스템의 개인화)

 

데이터 직무(데이터 엔지니어링 하는일)

-> 데이터 웨어하우스 관리 가장 중요

-> 내외부 데이터읽은 후 가공 및 관리(ETL,데이터 파이프라인)

-> AB테스트 프레임워크 만들기

->데이터 툴 만들기(데이터분석가/사이언티스트 업무 보조)

 

 

 

 

 

 

 

데이터 업무의 메인 role

오히려 초반일때 필요한 분석을 위한 데이터를 추출하는 과정에 대해 정의를 잘 만들어 두어야 한다. (data discobery tool)

-> 목표에 맞는 데이터를 탐색할 수 있는 과정을 효율화 / 데이터의 퀄리티를 관리

너무 복잡하게 한큐에 정리하려 하지말고, 작은 일부터 반복적으로 처리하려 하자

본인이 한 일에 대해서 성공과 실패를 잘 정리해야 한다.

 

데이터 엔지니어링이란?

 

-> ETL : 데이터 소스에서 추출(extract), 우리가 사용하려는 형태로 변형(transform), 데이터 웨어하우스에 로딩(load)

-> 데이터 파이프라인관리

 1. 배치프로세싱 : 주기적으로데이터를 읽음(초반)

 2. 리얼타임 : 스트림 처리

-> 데이터 웨어하우스에 이미 로딩된 데이터를 파이프라인으로 작성하여 AB테스트나 요약형태로 작성하기도 한다

->로그데이터를 수집하기도 함.

 

 

회사 규모에 따른 데이터 업무

0. 데이터 웨어하우스 구축 , 분석 시에 활용할 별도 데이터 베이스가 필요해지므로

-> 일반 데이터베이스에서 분석하도록 하면 중요한 데이터를 분석가가 쿼리문을 날리다가 문제를 발생시킬 가능성이 있다.

1. 중앙에 별도로 있는 데이터웨어하우스(분석용)

-> 데이터 응답속도보다는, 처리할 수 있는 데이터 크기가 클수록 중요하다.

-> 프로덕션 데이터와는 상관없는 모든 데이터를 저장하게 됨. (다양한 소스에서 읽어서 저장)

-> 데이터 팀에서 필요한 모든 데이터가 저장

2. 프로덕션 데이터베이스에서 카피해 오는 것이 1순위

3. ETL을 만들어서 데이터 웨어하우스에 데이터 적재(배치 형태 -> 스트림형태) / 데이터 소스에 접근하는 방식 다양하다(API, S3...)

4. 배치 스케쥴링으로 시작(cron job) -> airflow(스케줄 관리 고도화)

5. 큰 데이터를 프로세싱하기(python -> spark)

6. 스트리밍으로(실시간으로) 데이터 적재(kafka, kinesis 등)

7. 다양한 데이터를 수집한 이후에, 요약하여 즉 summary table을 만들어서 전달, summary table이 data mart랑 비슷한 개념

8. BI 툴로 시각화(수퍼셋)

9. 데이터 사이언티스트가 모델링(데이터 사이언스를 위한 인프라를 설계하면 ML옵스)

 

 

 

데이터 엔지니어 업무정리

  • spark는 pandas의 스케일업 버전이다.
    -> spark는 분산 서버에서도 더 효율적으로 잘 돌아가게 된다. 
  • 시작은 cronjob으로도 가능 후에 사용될 airflow는 ETL할 데이터가 많아질 경우, 관리하는 framework다. ETL할 데이터를 눈으로 보고 관리하고 backfill(과거 데이터를 다시 프로세싱해야 하는 경우)이라고 해서 로직을 다시 짜고 타입변경이 필요한 경우에 대량의 데이터를 다룰 때 좀 더 편리하다. 하지만 러닝커브가 있다.
  • 초반에는 ETL이 메인이면, 데이터 사이언스 업무 비중이 커지면, MLops 직무가 등장한다.
    -> 머신러닝 모델의 모니터링과 디플로이먼트를 전담하는 업무, 관련한 다양한 framework를 만들기도 한다. 

-> DB데이터를 주기적으로 복사

 

* 스크럼은 스프린트 끝날때마다 그 결과를 프로덕트에 배포하는게 기본(무조건 결과가 나와야 한다) => 대부분 프로덕트 개발자

* kanban을 활용, continuous deploy 즉 바로 배포하고 디벨롭 => 대부분 데이터 엔지니어들

* 일반적으로 스프린트 시작(보통 2주마다 플래닝)

=> 지난 스프린트 발표/회고/앞으로의 업무 플래닝

* on-call 엔지니어는 주어진 일부 파이프라인을 맡아서 fail을 무조건 해결해야 한다. 주말이나 밤에도 보고 있어야 한다.

 

 

 

-> 데이터양이 많아지면 어떠한 파이프라인은 무조건 fail이 나게된다. 

 

728x90

+ Recent posts