요즘 회사 업무를 따라가기 급급해서 내가 잘 나아가고 있는지 스스로 점검하고 싶던 와중에
회사 외적으로 나아갈 방향, 업무를 확장하고 더 잘하기 위해서
앞으로 갖춰야할 역량 및 공부 방향에는 어떤 것이 있는지 참고할 수 있는 자료가 있어 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
- 데이터 아키텍처 설계 역량
목적에 따라 선택
단순히 어떤 기술을 사용했다보다
-
어떤 문제를
-
어떤 방식으로
등을 설명 가능하도록
기술 블로그 참고 학습
- Uber, Doordash가 특히 잘 정리되어 있다.
- 모르는 기술 및 용어 검색
[참고 자료]