데이터 엔지니어링 프로젝트 및 인강/4. 데이터 엔지니어링 스타터 키트 Project

4주차 기록( 4 ) - 데이터 엔지니어의 기본자세 / ETL / AIRFLOW 설명

쟈누이 2021. 12. 1. 22:00
반응형

 

 

1. 질문 문답


1) 커리어를 계속해서 발전시키고 싶다면?(1)

  • 건강한 몸과 마음이 중요
  • 어떤 기술을 아느냐가 아닌 결과를 내는데 초점
  • 내가 하는 일에 결과를 내는데 필요한 기술의 배움에 초점


1) 커리어를 계속해서 발전시키고 싶다면?(2)

  • 요즘 세상의 전문성이란? 변화를 두려워하지 않는 마인드셋이다. 자신감을 갖고 나에게 무슨일이 주어거나, 하고싶은 일이 있으면 나는 그것을 할 수 있다 라는 자신감을 가진다..
  • 이는 작은일이라도 결과물을 내면서 키워지게 되어 있다. 전문성이란 변화를 두려워하지 않고 도전하는 마인드셋
  • 한방에 끝내려고 하지 않기. 한방에 끝내지 말고 어디서 시작하던 언제든지 배우고 멈춘거 같으면 그것을 타계할 방법 찾아보기, 더 배울 수 있는 곳으로 갈것인가, 아니면 새로운 것을 시작할것인가 등등..
  • 자기검열 하지 않기!! 이력서 그냥 내자 일단 내거 그대로 내고 그 사람들이 판단하게 하자!
  • growth mindset - 언제 다 갖출지 알 수 없다. 면접, 취직준비를 하면서 공부를 하자 해당 준비를 하면서 내가 옳게 가고 있는지 알 수 있고, 무엇을 해야될지 알 수 있다.

 

2) One way door  vs  Two way door

  • 조금은 위험해보이지만 재미있어 보이는 일이 있다면 그걸 조금 더 안전하게 만들 방법을 찾아보자
  • 대부분의 업무는 two way door 이다.

 

3) 매니저 입장에서 주니어에게 바라는 점은?

  • 피드백을 잘 받아들이고 개선하려고 하느냐?
  • 얼마나 발전 가능성이 있느냐? (처음에는 기술습득 중심에서 나중에는 영향역(리더십)
  • 얼마나 긍정적인가
  • 매니저 관점에서 어떻게 주니어의 역량을 안전하게 검증할 수 있을까?
  • 주니어를 뽑을 때는 이를 증명할 수 있는거는 질문을 많이 하느냐!
  • 회사를 고르기 보다는 같이 일하는 사람들과 매니저가 중요 (특히 커리어의 초창기에 더 중요, 네트웍 형성에 큰 영향을 끼침!)
  • 피드백을 잘해주어야 함!

 

 

 

 

2. ETL / AIRFLOW 소개


사진1. 강좌 이미지 발췌
사진2. 강좌 이미지 발췌

  • 위의 과정 하나하나가 etl 이다
  • 대부분 회사들이 elt 를 사용, 외부 데이터를 적재한 다음. 필요할때마자 테이블 체크 후 서머리 테이블을 만들어서 사용하는데 이 과정을 elt 라고 한다.


1) 데이터 레이크 / 웨어하우스의 차이점

사진3. 강좌 이미지 발췌

 

  • 거의 같다고 보면됨
  • 데이터 레이크는 스케일이 크다는 뉘앙스, 정형, 비정형 데이터 등 많은 데이터들이 존재, 데이터 웨어하우스보다는 싸기 때문에 공간제약없이 오래되고 많은 데이터 올림, 연산을 하려고 하면 좀 오래 걸릴 수 있다.
  • 클라우드를 쓰는 기업들이 두번째 사진과 같은구조를 많이 가져간다. 대표적으로 넷플릭스

 


2) 데이터파이프라인의 정의

사진4. 강좌 이미지 발췌

 

  • 데이터가 흘러가는 파이프라인

3) Raw data etl jobs - 데이터엔지니어의 JOB

  • 외부와 내부의 데이터 소스에서 데이터를 읽어다가 (많은 경우 API 를 통하게 됨)
  • 적당한 데이터 포맷 변환 후 (데이터의 크기가 커지면 Spark 등이 필요해짐)
  • 데에터 웨어하우스에 로드
  • 데이터 엔지니어는 어떻게 데이터 분석가들이 편하게 활동할 수 있는 환경을 만들 수 있을까를 고민해야한다.

 

 


3. airflow 란?


  • 파이썬으로 구성
  • 데이터 운용을 위한 플랫폼
  • 데이터 파이프라인을 체크하고 실패한것을 재 실행할 수 있는 기능이 있음.
  • 에어플로우에서 데이터 파이프라인은 DAG 라고 불림(DIRECCTED ACYCLIC GRAPH)
  • dag 는 하나 혹은 그 이상의 태스크로 구성
  • 태스크는 operator 클래스로 구현됨
  • 스크들간의 실행 순서 정의 가능
  • api 제공
  • airflow 는 하나 혹은 사주의 서버로 구성
  • 하나의 스케쥴러와 다수의 워커로 구성
  • 스캐줄러가 태스크들을 다수의 워커에게 나눠줌
  • dag 와 태스크와 스케줄 정보들이 저장되는 db 가 필요하며 디폴트로는 sqlite 가 사용 ( 개발을 위해서 mysql, postgres 로 교체 필요)

 

 

1) 구성 ( 5개의 컴포넌트로 구성 )

  • web server
  • scheduler
  • worker
  • database(sqlite 기본)
  • queue( 멀티노드 구성인 경우에만 사용)


2) 아키택처 구성도

사진5. 강좌 이미지 발췌

  • scale up : 서버 자체의 성능을 올려서 처리 능력을 향상 시키는 것
  • scale out :  서버 대수를 늘려 처리 능력을 향상 시키는 것
  • 대부분의 에어플로우 아키텍처는 위와같이 구성됨

 

 

3) DAG

  • 테스크의 집합
  • DAG 는 태스크들로 구성되어 있다
  • 이 태스크들은 EXTRACT, TRANSFORM, LOAD 작업을 수행한다
  • 태스크란 오퍼레이터의 인스턴스이다.
  • 예를들어 spark job, shell script, hive query, s3 read/write, postgres query, readshift writing 등이 있음

 


4) 장단점

장점
- 강력한 기능들
단점
- 배우는데 시간이 많이 걸림..
- 혼동되는 용어들이 굉장히 많음

 


5) airflow backfill

backfill 이 왜 중요한가
- incremental update 를 하는경우에만 backfill 이 의미가 있음
- 여러가지 이유로 incremental update 가 실패하게되고 그 경우 다시 실행해야됨
- 가끔은 데이터 소스 쪽에 변경이 생기면서 전체를 다시 읽어야 할 수 있음
- 만약 backfill 하는 코드가 지금 사용하는 etl 코드와 다르다면 여러가지 문제가 발생

 

반응형