주니어 데이터 엔지니어 우솨's 개발일지

데이터 엔지니어링 31일차 TIL 본문

데브코스

데이터 엔지니어링 31일차 TIL

우솨 2024. 5. 9. 18:40

학습 내용

데이터 조직의 비전은?
신뢰할 수 있는 데이터를 바탕으로 부가가치를 생성하는것
- 고품질 데이터를 기반으로 의사 결정권자에게 입력 제공
- 결정과학이라고 부르기도 하며 데이터를 고려한 결정을 가능하게 해준다
- 고품질 데이터를 기반으로 사용자 서비스 경험 개선 혹은 프로세스 최적화(머신러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선)

데이터 웨어하우스
: 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스(SQL 데이터베이스) - 회사의 데이터웨어하우스를 사용하는 데이터 기술을 물어봐야한다.
- 프로덕션용 데이터베이스와 별개의 데이터베이스여야 한다.

ETL(Extract, Transform, Load)
: 다른곳에 존재하는 데이터를 가져다가 데이터 웨어하우스에 로드하는 작업(데이터 파이프라인이라고 부르기도 한다)
- Extract : 외부 데이터 소스에서 데이터를 추출
- Transform : 데이터의 포맷을 원하는 형태로 변환
- Load : 변화된 데이터를 최종적으로 데이터 웨어하우스로 적재
- Airflow를 가장 많이 사용한다.

시각화 대시보드란?
: 보통 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적이다.(3A : Accessible, Actionable, Auditable)
가장 널리 사용되는 대시보드 종류
- 구글 클라우드의 룩커(Looker)
- 세일즈포스의 태블로(Tableau)
- 마이크로소프트의 파워 BI(Power BI)
- 오픈소스 아파치 수퍼셋(Superset)

머신러닝(Machine Learning)이란?
: 프로그래밍 없이 배움이 가능한 알고리즘 - 블랙박스(왜 이렇게 동작하는지 이해 할 수 없고 설명할 수 없다. )
- 데이터로부터 패턴을 찾아 학습한다.
- 데이터로 인한 왜곡(bias)이 발생가능하다.

데이터 팀의 구성
: 작은 회사에서는 한 사람이 몇 개의 역할을 동시 수행하는 것이 일반적이다.
- 데이터 엔지니어(Data Engineer) : 데이터 인프라(데이터 웨어하우스와 ETL) 구축
- 데이터 분석가(Data Analyst) : 데이터를 기반으로 지표를 만들고 시작화(대시보드)
- 데이터 과학자(Data Scientist) : 과거 데이터를 기반으로 미래를 예측하는 머신러닝 모델을 만들어 고객들의 서비스경험을 개선(개인화 혹은 자동화 혹은 최적화)

데이터 엔지니어의 역할
: 기본적으로는 소프트웨어 엔지니어
- 파이썬이 대세, 자바 혹은 스칼라와 같은 언어도 아는 것이 좋다.
- 데이터 웨어하우스 구축 클라우드로 가는 것이 추세(AWS의 Redshift, 구글클라우드의 BigQuery, 스노우플레이크)
- ETL 코드를 작성하고 주기적으로 실행(Airflow가 대세)
- 데이터 분석가와 과학자를 지원
데이터 엔지니어의 필요 기술
- SQL, Hive, Presto, SparkSQL
- 프로그래밍 언어 : 파이썬, 스칼라, 자바
- 데이터 웨어하우스 : Redshift, Snowflake, BigQuery
- ETL/ELT 프레임워크 : Airflow
- 대용량 데이터 처리 플랫폼 : Spark, YARN
- 컨테이너 기술 : Docker, K8s(쿠버네티스)
- 클라우드 컴퓨팅 : AWS, GCP, Azure

데이터 분석가가 알아야하는 기술
- SQL, Hive, Presto, SparkSQL
- 대시보드 : 룩커, 태블로, 파워 BI, 수퍼셋, 엑셀, 구글스프레드시트, 파이썬
- 데이터 모델링
- 통계 지식 : AB테스트 분석 혹은 다양한 데이터 분석에서 통계 지식은 아주 유용함.
- 좋은 지표를 정의하는 능력

새로운 직군들 과 서비스
- ML 엔지니어 (데이터 과학자 + 데이터 엔지니어)
- ML옵스(MLOps)
- 프라이버시 엔지니어 : 개인정보 보호
- 데이터 디스커버리 서비스

DevOps란 무슨일을 하는가?
- 개발자가 만든 코드를 시스템에 반영하는 프로세스(CI/CD, Deployment)
- 시스템이 제대로 동작하는지 모니터링

MLOps란 무슨일을 하는가?
- DevOps가 하는 일과 동일하지만 차이점은 서비스 코드가 아니라 ML모델이 대상이다.
- 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링한다.

데이터 레이크
: 구조화 데이터 + 비구조화 데이터(로그 파일)
- 보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지에 가까움
- 보통은 데이터 웨어하우스보다 몇 배는 더 크고 더 경제적인 스토리지
- 보통 클라우드 스토리지가 됨(AWS라면 S3가 대표적인 데이터 레이크라고 볼 수 있다.)
- ETL : 데이터 레이크와 데이터 웨어하우스 바깥에서 안으로 데이터를 가져오는 것
- ELT : 데이터 레이크와 데이터 웨어하우스 안에 있는 데이터를 처리 하는 것

Airflow(ETL 스케줄러)
: ETL 관리 및 운영 프레임웍의 필요성, 오픈소스 프로젝트로 파이썬 3 기반이며 에어비앤비, 우버, 리프트, 쿠팡등에서 사용
- 다수의 ETL이 존재할 경우 이를 스케줄하고 이들간의 의존관계를 정의해주는 기능이 필요
- 특정 ETL이 실패할 경우 이에 관한 에러 메세지를 받고 재실행해주는 기능도 중요해짐(Backfill)
- ETL을 DAG라 부르며 웹 인터페이스를 통한 관리 기능도 제공한다.
- 크게 3가지 컴포넌트로 구성 : 스케줄러, 웹서버, 워커

빅데이터 처리 프레임워크
- 분산 환경 기반, 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요
1세대 : 하둡기반의 MapReduce, Hive/Presto
2세대 : Spark(SQL, DataFrame, Streaming, ML, Graph)

AWS Redshift
: 2012년에 시작된 AWS기반의 데이터웨어하우스로 PB 스케일 데이터 분산처리 가능
- AWS내의 다른 서비스들과 연동이 쉽다.
- 배치데이터 중심이지만 실시간 데이터 처리 지원
- 웹 콘솔 이외에도 API를 통한 관리/제어가 가능하다

Snowflake
: 2014년에 클라우드 기반 데이터웨어하우스로 시작됨(2020년 상장)
- 지금은 데이터 클라우드라고 부를 수 있을정도로 발전
- 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace제공
- ETL과 다양한 데이터 통합 기능 제공
- SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해준다.
- 비구조화된 데이터 처리와 머신러닝 기능 제공
- 배치데이터 중심이지만 실시간 데이터 처리 지원
- 웹 콘솔 이외에도 API를 통한 관리/제어가 가능하다

Google Cloud Bigquery
: 2010년에 시작된 구글 클라우드의 데이터 웨어하우스 서비스
- 구글 클라우드의 대표적인 서비스
- Nested fields, repeated fields지원 - SQL로 처리 가능
- 구글 클라우드 내의 다른 서비스들과 연동이 쉽다.
- 배치데이터 중심이지만 실시간 데이터 처리 지원
- 웹 콘솔 이외에도 API를 통한 관리/제어가 가능하다

Apache Hive
: Facebook이 2008년에 시작한 아파치 오픈소스 프로젝트
- 하둡 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스
- HiveQL이라는 SQL지원
- MapReduce 위에서 동작하는 버전과 Apache Tez를 실행엔진으로 동작하는 버전 두가지가 존재한다.
- 다른 하둡 기반 오픈소스들과 연동이 쉽다.
- 자바나 파이썬으로 UDF 작성가능
- Spark에 밀리는 추세

Apache Presto
: Facebook이 2013년에 시작한 아파치 오픈소스 프로젝트
- Hive보다 좀 더 빠른 응답속도에 좀 더 최적화 되어있다.
- AWS Athena가 Presto기반으로 만들어졌다.

Apache Iceberg
: Netflix가 2018년에 시작한 아파치 오픈소스 프로젝트로 데이터웨어하우스 기술은 아니다.
- 대용량 SCD(Slowly-Changing Datasets) 데이터를 다룰 수 있는 테이블 포맷
- ACID 트랜잭션과 타임여행(과거 버전으로 롤백과 변경기록 유지)
- 스키마 진화 지원을 통해 테이블 재작성 없이 컬럼 제거와 추가 가능
- 다른 Apache 시스템과 연동 가능하다

Apache Spark
: UC버클리 AMPLab이 2013년에 시작한 아파치 오픈소스 프로젝트
- 빅데이터 처리 관련 종합선물세트
- 배치처리, 실시간처리, 그래프처리, 머신러닝 기능 제공
- 하둡, AWS EMR, Google Cloud Dataproc, Mesos, K8s 등의 다양한 분산처리 시스템 지원

 

 

느낀 점

데이터 조직에서 하는 업무들을 좀 더 세분화해서 알 수 있었고, 각자의 역할에 대해 좀 더 깊이있게 알 수 있었다.

여러 역할을 겸하면서 새로운 직종이 생겨나는 것도 알 수 있었다.

앞으로 배울 도구들의 배경과 내용을 알아가는 시간이었다.