데이터 팀의 역할
데이터 조직의 비전
데이터 조직의 비전(목표)은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다. 다시 말해, 직접적으로 매출을 내는 것이 아니라 매출을 더 높이는 부가 가치를 만들어낸다. 중요한 것은 매출을 내는 것이기 때문에 데이터 조직에서 크게 인정을 받기는 힘들 수 있다.
데이터 조직이 하는 일
데이터 조직이 하는 일 (1)
고품질 데이터를 기반으로 의사 결정권자에게 입력을 제공하며, 이를 결정 과학(Decision Science)이라고 부르기도 한다. 예를 들어 데이터 기반 지표 정리, 대시보드와 리포트 생성 등을 수행하여 지금 맞는 방향으로 가고 있는지, 어떻게 움직여야 하는지 등을 제공한다.
- 데이터를 고려한 결정(Data Informed Decisions) vs 데이터 기반 결정(Data Driven Decisions)
데이터 조직이 하는 일 (2)
고품질 데이터를 기반으로 사용자 서비스 경험 개선 혹은 프로세스를 최적화한다. 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선한다. 예를 들어 개인화를 바탕으로 추천과 검색 기능을 제공하는 것이 있다. 공장이라면 공정 과정에서 오류를 최소화하는 일을 수행할 수 있다.
데이터의 흐름
이상적인 데이터의 흐름은 "(데이터 생성) -> 데이터 인프라 -> 데이터 분석 / 데이터 과학 적용 -> (데이터 생성)"이다. 그러나 스타트업 회사의 경우 데이터 인프라의 중요성을 느끼지 못하고 데이터 분석가, 과학자를 고용한 뒤 시간이 지나고 데이터 인프라의 중요성을 깨닫는 것이 일반적이다.
데이터 팀의 발전 - 데이터 인프라 구축
서비스에서 직접 생기는 데이터와 써드파티를 통해 생기는 간접 데이터를 바탕으로 "데이터 인프라" 구축은 데이터 엔지니어가 수행한다.
- 데이터 인프라 = ETL + 데이터 웨어하우스
- 프로덕션 데이터베이스(OLTP, Transaction) : 사용자에게 제공하는 데이터베이스로 처리 용량보다 처리 속도가 중요
- 데이터 웨어하우스(OLAP, Analytical) : 분석을 위한 데이터베이스로 처리 속도보다 처리 용량이 더 중요
데이터 웨어하우스
회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스로 관계형 데이터베이스이다. 중요한 것은 프로덕션 데이터베이스와 별개의 데이터베이스로 운영돼야 한다. 데이터의 크기에 따라 어떤 데이터베이스를 사용할지 선택해야 하며, 크기가 크다면 다음 중 하나를 사용해야 한다.
- AWS Redshift, 구글 클라우드의 BigQuery
- 스노우 플레이크(Snowflake)
- 오픈소스 기반의 하둡(Hive/Presto) / Spark
ETL(Extract, Transform, Load)
ETL은 데이터 파이프라인이라고도 부르며, 다른 곳에 존재하는 데이터를 가져다가 데이터 웨어하우스에 로드하는 작업이다. 쉽게 이야기해서 외부의 데이터를 내부로 옮기는 것이다. 관련하여 가장 많이 쓰이는 프레임워크는 Python3 기반 오픈소스 프로젝트인 Airflow이다.
- Extract(추출) : 외부 데이터 소스에서 데이터를 추출
- Transform(변환) : 데이터의 포맷을 원하는 형태로 변환
- Load(적재) : 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재
데이터 팀의 발전 - 데이터 분석 수행
구축된 데이터 인프라를 기반으로 의사 결정권자가 결정을 하기 쉽게 지표 등을 시각화하는 작업은 데이터 분석가가 수행한다.
시각화 대시보드
보통 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적이다. 지표의 경우 3A(Accessible, Actionable, Auditable)가 중요하다. 중요 지표의 예로는 매출액, 월/주간 액티브 사용자수 등이 있다.
- 구글 클라우드의 Looker
- 세일즈포스의 Tableau
- 마이크로소프트의 Power BI
- 오픈소스 Apache Superset
데이터 팀의 발전 - 데이터 과학 적용
수집된 데이터에서 패턴을 찾아 추천, 검색 등의 개인화를 적용하거나 서비스 운영 과정을 AI로 최소화하는 등의 작업은 데이터 과학자가 수행한다.
머신 러닝(Machine Learning)
프로그래밍 없이 배움이 가능한 알고리즘이다. 데이터로부터 패턴을 찾아 학습하기 때문에 데이터의 품질과 크기가 중요하며, 데이터로 인한 왜곡(bias)이 발생할 수 있다. 머신러닝의 결과가 왜 이렇게 나오는지 내부 동작 설명 가능 여부도 중요하다.
데이터 조직의 구성원
작은 회사에서는 한 사람이 여러 개의 역할을 동시 수행하는 것이 일반적이다.
데이터 엔지니어 (Data Engineer)
기본적으로 소프트웨어 엔지니어이기 때문에 코딩 역량이 중요하며, 파이썬 / 자바 / 스칼라와 같은 언어를 사용한다. 데이터 분석가, 데이터 과학자와의 협업을 통해 필요한 툴이나 데이터를 제공해 주는 것이 데이터 엔지니어의 중요한 역할 중 하나이다. 도커나 쿠버네티스는 주니어 데이터 엔지니어에게 원하는 기술은 아니다. 도커는 간단해서 공부할 가치가 있지만, 쿠버네티스는 복잡하다. 취업 준비를 하고 있다면 파이썬, SQL, 데이터베이스, Airflow를 알아야 하며, 여기서 추가로 공부하고 싶다면 Spark와 같은 빅데이터 프로세싱 프레임워크를 공부하면 된다.
데이터 웨어하우스 구축
데이터 웨어하우스를 만들고 클라우드를 통해 관리하는 것이 추세이다. 프레임워크로는 AWS의 Redshift, 구글 클라우드의 BigQuery, Snowflake를 주로 사용한다. 또한 ETL 코드를 작성하여 주기적으로 외부의 데이터를 내부로 가져오는 작업을 수행하기 위한 ETL 스케줄러 혹은 프레임워크가 필요하며, Airflow를 주로 사용한다.
데이터 엔지니어가 알아야 하는 기술 (1) - 주니어
- SQL : 기본 SQL, Hive, Presto, SparkSQL, ...
- 프로그래밍 언어 : 파이썬, 자바, 스칼라
- 데이터 웨어하우스 : Redshift, Snowflake, BigSuery
- ETL/ELT 프레임워크 : Airflow
- 대용량 데이터 처리 플랫폼 : Spark, YARN
데이터 엔지니어가 알아야 하는 기술 (2)
- 컨테이너 기술 : Docker, K8s
- 클라우드 컴퓨팅 : AWS, GCP, Azure
- 기타 지식 : 머신 러닝, A/B Test, 통계
데이터 엔지니어 로드맵
데이터 분석가 (Data Analyst)
비즈니스 인텔리전스(BI)를 책임진다. 중요 지표를 정의하고 대시보드 형태로 시각화하는 역할을 수행하며, 비즈니스 도메인에 대한 깊은 지식이 필요하다. 임원들이나 팀 리드들이 데이터 기반 결정을 내릴 수 있도록 도와주며, 회사 내 다른 팀들의 데이터 관련 질문에 대해 답변을 제공한다. 대시보드로는 Tableau와 Looker 등의 툴이 가장 흔히 사용되며, 오픈소스로는 Superset이 많이 사용된다.
데이터 분석가가 알아야 하는 기술
- SQL : 기본 SQL, Hive, Presto, SparkSQL, ...
- 대시보드 : Looker, Tableau, Power BI, Superset, Excel, Python, Spread Sheet
- 데이터 모델링
- 통계 지식 : A/B Test 혹은 다양한 데이터분석에서 통계 지식은 아주 유용
- 비즈니스 도메인 지식
- 좋은 지표를 정의하는 능력
- 보통 코딩을 하지는 않음
데이터 분석가의 딜레마
많은 수의 긴급한 데이터 관련 질문들에 시달린다. 좋은 데이터 인프라 없이는 일을 잘하기 힘들다. 많은 경우 현업 팀에 소속되기도 한다. 데이터 분석가의 경우 조직 구조가 더 중요하다.
- 진행 중인 일 vs 질문에 대한 답변
MLOps
DevOps
개발자가 만든 코드를 시스템에 반영하는 프로세스(CI/CD, deployment)를 작성하고, 시스템이 제대로 동작하는지 모니터링하고 이슈 감지 시 작동하는 escalation 프로세스를 작성한다. CI/CD, 트러블 슈팅을 진행해야 하므로 경험이 중요한 분야이다.
MLOps
DevOps가 하는 일과 동일하며, 차이점은 서비스 코드가 아니라 ML 모델이 대상이다. 모델을 계속적으로 빌딩하고 배포하고 성능을 모니터링하는 작업을 수행한다.
MLOps가 알아야 하는 기술
세 개의 기술의 교차점에 존재한다. 그래서 알아야 할 것도 많고, 경험도 필요한 직군이다.
- 데이터 엔지니어 : 파이썬 / 스칼라 / 자바, 데이터 파이프라인, 데이터 웨어하우스
- DevOps : CI/CD, 서비스 모니터링, 컨테이너 기술, 클라우드
- 머신러닝 관련 경험 / 지식 : 머신러닝 모델 빌딩과 배포, ML 모델 빌딩 프레임워크(SageMaker, Kubeflow, MLflow)
프라이버시 엔지니어(Privacy Engineer)
전체 시스템에서 개인정보 보호를 위한 가이드라인, 툴을 제공한다. 이는 데이터 시스템에서 더욱 중요하며, 개인정보 보호 법안의 징벌 조항이 강화되는 추세이다.
- 개인정보 : 개인을 식별할 수 있는 정보
데이터 디스커버리 (Data Discovery)
별도 직군은 아니지만 데이터 팀이 커지면 꼭 필요한 서비스이다. 데이터가 커지면 테이블과 대시보드의 수가 증가한다. 이는 데이터 분석 시 어느 테이블이나 대시보드를 봐야 하는지 혼란이 생기며, 새로운 테이블이나 대시보드를 또 만들어낼 수도 있다. 따라서 주기적인 테이블과 대시보드 클린업이 필요하다. 테이블과 대시보드 관련 검색 서비스는 다음과 같다.
- 리프트의 아문센
- 링크드인의 데이터 허브
- 셀렉트스타
데이터 웨어하우스, 데이터 레이크, ETL / ELT
데이터 웨어하우스 옵션별 장단점
데이터 웨어하우스는 기본적으로 클라우드가 대세이다. 데이터가 커져도 문제가 없는 확장가능성(Scalable)과 정정한 비용이 중요한 부분이다. 크게 고정비용 옵션과 가변비용 옵션이 존재하며, 후자가 좀 더 확장가능한 옵션이다.
- 고정비용 옵션 : AWS의 Redshift -> 비용 예측이 쉽지만, 사용하지 않아도 비용을 지불해야 함
- 가변비용 옵션 : BigQuery, Snowflake -> 효율적이지만, 비용 예측이 힘들 수 있음
데이터 레이크
보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지에 가깝고, 보통은 데이터 웨어하우스보다 몇 배는 더 크고 경제적인 스토리지이다. 보통 클라우드 스토리지가 되며, AWS라면 S3가 대표적인 데이터 레이크라고 볼 수 있다.
- 데이터 레이크 = 구조화 데이터 + 비구조화 데이터 (로그 파일)
데이터 레이크가 있는 환경에서 ETL / ELT
- 데이터 레이크와 데이터 웨어하우스 바깥에서 안으로 데이터를 가져오는 것 : ETL
- 데이터 레이크와 데이터웨어하우스 안에 있는 데이터를 처리하는 것 : ELT
ETL / ELT
ETL
데이터를 데이터 웨어하우스 외부에서 내부로 가져오는 프로세스이다. ETL의 수는 회사의 성장에 따라 쉽게 100+개 이상으로 발전한다. 중요한 데이터를 다루은 ETL이 실패했을 경우 이를 빨리 고쳐서 실행하는 것이 중요하다. 적절히 스케줄 하고 관리하는 것이 중요해지며, ETL 스케줄러 혹은 프레임워크가 적절히 사용해야 한다.
ELT
데이터 웨어하우스 내부 데이터를 조작해서 새로운 데이터를 만드는 프로세스이다. 정제된 데이터를 바탕으로 데이터 요약을 위한 ETL도 필요해진다. 주기적으로 JOIN을 통한 정리, 요약을 하는 과정을 ELT라고 하며, 이를 위해 사용하는 기술이 dbt이다.
Airflow (ETL 스케줄러) 소개
다수의 ETL이 존재할 경우 이를 스케줄 해주고 이들 간의 의존관계(dependency)를 정의해 주는 기능이 필요하다. 또한 특정 ETL이 실패할 경우 이에 관한 에러 메시지를 받고 재실행해주는 기능(Backfill)도 중요하다. 여기서 가장 많이 사용되는 프레임워크가 Airflow이다.
데이터 웨어하우스의 구성 예
빅데이터 처리 프레임워크
분산 환경 기반(1대 혹은 그 이상의 서버로 구성)이기 때문에 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요하다. 소수의 서버가 고장 나도 동작(Falut Tolerance)해야 하며, 확장이 용이해야 한다.
- 1 세대 : 하둡 기반의 Mapreduce, Hive / Presto
- 2 세대 : Spark (SQL, DataFrame, Streaming, ML, Graph)
데이터 웨어하우스 옵션
Iceberg는 제외하고 모두 SQL을 지원하는 빅데이터 기반 데이터베이스이다.
AWS Redshift
2012년에 시작된 AWS 기반의 데이터 웨어하우스로 PB 스케일의 데이터 분산 처리가 가능하다. Postgresql과 호환되는 SQL로 처리 가능하며, Python UDF(User Defined Function)의 작성을 통해 기능 확장도 가능하다. 처음에는 고정비용 모델로 시작했으나 지금은 가변비용 모델도 지원한다. CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원하고, AWS 내의 다른 서비스와 연동이 쉽다. 또한 배치 데이터 중심이지만 실시간 데이터 처리를 지원한다.
Snowflake
2014년에 클라우드 기반 데이터웨어하우스로 시작되었다. 지금은 데이터 클라우드라고 부를 수 있을 정도로 발전하였고 ETL과 다양한 데이터 통합 기능을 제공한다. SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하며, 비구조화된 데이터 처리와 머신러닝 기능을 제공한다. CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원한다. 또한 배치 데이터 중심이지만 실시간 데이터 처리를 지원한다.
Google Cloud BigQuery
2010년에 시작된 구글 클라우드의 데이터 웨어하우스 서비스이다. 구글 클라우드의 대표적인 서비스로 SQL로 데이터 처리가 가능하다. CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원한다. 구글 클라우드 내의 다른 서비스들과 연동이 쉽고, 배치 데이터 중심이지만 실시간 데이터 처리를 지원한다.
Apache Hive
Facebook이 2008년에 시작한 아파치 오픈소스 프로젝트이다. 하둡을 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스이다. HiveQL이라 부르는 SQL을 지원하며, 다른 하둡 기반 오픈소스들과 연동이 쉽다. 또한 자바나 파이썬으로 UDF 작성이 가능하다. CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원한다. 배치 빅데이터 프로세싱 시스템으로 빠른 처리속도보다는 처리할 수 있는 데이터 양의 크기에 최적화되어 있다. 웹 UI와 커맨드라인 UI(CLI) 두 가지를 지원한다.
Apache Presto
Facebook이 2013년에 시작한 아파치 오픈소스 프로젝트이다. 다양한 데이터 소스에 존재하는 데이터를 대상으로 SQL 실행이 가능하다. CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원한다. 배치 빅데이터 프로세싱 시스템으로 Hive와는 다르게 메모리 기반으로 빠른 응답 속도에 좀 더 최적화되어 있다. 웹 UI와 커맨드라인 UI(CLI) 두 가지를 지원한다. AWS Athena가 바로 Presto를 기반으로 만들어졌다.
Apache IceBerg
Netflix가 2018년에 시작한 아파치 오픈소스 프로젝트로 데이터 웨어하우스 기술이 아니다. 대용량 SCD(Slowly-Changing Datasests) 데이터를 다룰 수 있는 테이블 포맷을 제공한다. HDFS, S3 등의 클라우드 스토리지를 지원하며, 과거 버전으로 롤백하는 기능을 지원한다. 스키마 진화(Schema Evolution) 지원을 통한 테이블의 변화 과정을 확인하거나 컬럼 제거와 추가가 자유롭다. Spark, Flink, Hive, Hudi 등의 다른 Apache 시스템과 연동이 가능하다.
Apache Spark
UC 버클리 AMPLab이 2013년에 시작한 아파치 오픈소스 프로젝트이다. 배치처리(API/SQL), 실시간 처리, 그래프 처리, 머신러닝 기능을 제공한다. 또한 하둡(YARN), AWS EMR, Google Cloud Dataproc, Mesos, K8s 등과 같은 다양한 분산처리 시스템을 지원하며, HDFS, S3, Cassandra, HBase 등과 같은 다양한 파일 시스템과 연동이 가능하다. CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원한다.
실리콘밸리 회사 데이터 스택 비교
Reference
https://builtin.com/machine-learning/mlops
https://bigdataanalyticsnews.com/hadoop-2-0-yarn-architecture/
'[프로그래머스] 데이터 엔지니어링 데브코스 3기 > TIL(Today I Learn)' 카테고리의 다른 글
[TIL - 33일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (3) (0) | 2024.05.08 |
---|---|
[TIL - 32일 차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (2) (0) | 2024.05.07 |
[TIL - 30일 차] AWS 클라우드 (5) (0) | 2024.05.03 |
[TIL - 29일 차] AWS 클라우드 (4) (2) | 2024.05.02 |
[TIL - 28일 차] AWS 클라우드 (3) (0) | 2024.05.01 |