Data Engineering?

Copes·2022년 5월 21일
0

요즘 회사 업무를 따라가기 급급해서 내가 잘 나아가고 있는지 스스로 점검하고 싶던 와중에

회사 외적으로 나아갈 방향, 업무를 확장하고 더 잘하기 위해서
앞으로 갖춰야할 역량 및 공부 방향에는 어떤 것이 있는지 참고할 수 있는 자료가 있어 https://www.youtube.com/watch?v=1Viu7Ce632s&t=938s 를 참고하여 정리해보았다.

+) 타 팀에서 혹은 주변 친구들이 물어보았을때 물어본 입장에서 이해할 수 있게 전달하고 싶어 말로 전달하기 힘들었던 업무 내용 관련해서도 정리해보았다.

데이터 엔지니어의 업무?

1. DB → DW

앱, 웹 : DB에 데이터가 저장.

  • 서비스를 위한 데이터를 저장하며, 따라서 장애가 나면 안됨
  • DB에도 쿼리를 실행할 수 있으나, 쿼리 실행 시 DB에 무리를 줄 수 있음 → 이로 인한 서비스 장애

    따라서 분석을 위해 DW에 저장.(ex GCP BigQuery, AWS Redshift, Snowflake 등)

ETL

  • Extract : 웹, 앱의 로그, DB 등의 데이터 추출
  • Transform : 데이터를 잘 활용할 수 있도록 데이터 변환
  • Load : 데이터를 사용할 수 있도록 불러오기, 변환된 데이터 사용 가능하도록 설정

Batch / 실시간(Real-time, Stream)

  • Batch : 특정 시간에 1번씩 실행
  • 실시간 : 요청 시 바로, 실시간으로 데이터 처리

2. 데이터 분석 인프라 구축

수많은 테이블

  • 여러 table을 join
  • 사람마다 사용하는 조건(ex) where 문에 특정 status를 걸어야 하는데 누락되거나 하는 등)
  • SQL 쿼리는 실행하는데 실행 시간이 오래 걸릴 수 있다.

→ Data Mart 구축

  • SQL join한 결과를 Batch로 테이블에 저장
  • 특정 목적/도메인에 맞는 마트 구축

그 외에 데이터 분석 시 데이터 시각화 도구가 필요한 경우

  • Tableau
  • Redash, Superset, Metabase 등 BI 도구

데이터 마트와 시각화 도구를 결합하는 환경 마련 → 필요 시 사용 방법 공유

3. Data Product 개발

  • 앞에서 언급한 요소들
  • AB test Platform
  • 데이터 기반 서비스
  • Google Analytics, Amplitude 같은 Analytics 도구
  • 데이터 로그 시스템
  • 머신러닝 / 딥러닝 서비스

필요 역량

  • 데이터 엔지니어링 역량 (대용량 데이터 처리, DB, 네트워크 등 종합적인 역량)
  • 개발 역량(Python, Java, Scala, Shell 등)
  • Cloud, Docker, Kubernetes
  • 데이터 아키텍처 설계 역량

목적에 따라 선택

단순히 어떤 기술을 사용했다보다

  1. 어떤 문제를

  2. 어떤 방식으로

    • architecture
    • 목표
    • 제약조건

    등을 설명 가능하도록

기술 블로그 참고 학습

  • Uber, Doordash가 특히 잘 정리되어 있다.
  • 모르는 기술 및 용어 검색

[참고 자료]

0개의 댓글