1. 데이터 팀의 역할
데이터 조직의 비전은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다.
- 부가 가치: 데이터 분석, 데이터를 바탕으로 한 ML로 개인 추천 서비스.
- 중요한 것은 데이터로 매출 증가에 기여한다는 것을 보여 주어야 인정받을 수 있다.
1-1. 데이터 조직이 하는 일
-
고품질 데이터를 기반으로 의사 결정권자에게 정보 제공. (데이터 분석가)
- Decision Science
- data informed decisions (데이터에 대한 간접적인 결정)
- data driven decisions (데이터에 기반한 결정)
- 두 결정을 적절히 섞어서 사용하는 것이 좋다. (최적화 목적: data-driven, 혁신 목적: data-informed)
- KPI 지표 계산.
-
고품질 데이터를 기반으로 사용자 서비스 개선 및 프로세스 최적화. (데이터 사이언티스트)
- 머신 러닝과 같은 알고리즘을 통해 사용자의 서비스 경험을 개선. (추천, 검색 등의 개인화)
- 오류를 최소화하도록 프로세스 최적화.
1-2. 데이터의 흐름과 데이터 팀의 발전 단계
이상적인 발전 단계)
1. 프로덕션 데이터와 로그 데이터, 또는 이메일과 광고에 의한 간접 데이터를 정제 후 중앙 데이터에 적재(ETL).
2. 데이터 분석을 위한 데이터 웨어하우스 구축.
3. 데이터 과학 적용.
- 정리 : 데이터 인프라 구축(ETL(Airflow) -> 데이터 웨어하우스, 데이터 엔지니어) -> 데이터 분석(시각화 대시보드 및 리포트 작성, 데이터 분석가) -> 데이터 과학(사용자 경험 서비스 개선(추천, 검색의 개인화), 데이터 과학자)
현실)
- 2, 3번을 먼저 실행.
- 데이터 인프라가 없는 상태에서 데이터 분석가만 존재. -> 제 실력 발휘 불가. -> 해고.
- 따라서 데이터 인프라를 먼저 구축하는 것이 중요하다.
1-3. 데이터 웨어하우스
- 데이터 웨어하우스: 회사에 필요한 모든 데이터를 저장하는 중앙 (SQL)데이터베이스.
프로덕션 DB vs. 데이터 웨어하우스)
-
OLTP(트랜잭션용, 속도 중시.) vs. OLAP(분석용, 크기 중시.)
-
데이터의 크기가 작다면 일반적인 SQL DB를 사용.
-
데이터의 크기가 커진다면 다음 중 하나를 사용.
- AWS RedShift
- Google-Cloud BigQuery
- Haddop(Hive, Presto) / Spark
-
중요한 것은 프로덕션용 DB와 데이터 웨어하우스가 별개로 존재해야 한다는 점.
회사 면접 시, 지금 회사에서 사용하고 있는 데이터 웨어하우스 기술이 무엇인지에 대해 질문을 할 필요가 있다.
- 데이터 인프라 밖에 있는 데이터를 데이터 웨어하우스에 (테이블 형태로) 로드하는 방법.
- 데이터 파이프라인이라고 부르기도 함.
- ETL에서 가장 많이 사용되는 프레임웤 : Airflow(AWS와 구글 클라우드에서도 서비스 지원.)
- ETL 관련 SaaS도 출현하기 시작. (데이터 소스와 데이터 웨어하우스만 설정하면 알아서 ETL 프로세스를 진행해 주는 소프트웨어.)
1-5. 시각화 대시보드
- 중요한 지표를 시간의 흐름과 함께 보여주는 것이 일반적이다.
- 중요한 지표 : 3A (Accessible, Actionable, Auditable)
대시보드 서비스)
- Looker
- Tableau (가장 많이 사용)
- Power BI
- Superset
2. 데이터 조직 구성원
- 데이터 엔지니어, 데이터 분석가, 데이터 과학자.
- 작은 회사에서는 위 역할을 두 가지 이상 수행.
2-1. 데이터 엔지니어의 역할
2-2. 데이터 분석가의 역할
- 비즈니스 인텔리전스를 책임짐.
- 중요 지표를 정의하고 이를 대시보드 형태로 시각화함.
- 대시보드: Tableau, Looker, Superset
- 회사 내 다른 팀들의 데이터 관련 질의에 대한 응답.
- 의사 결정권자들에게 정보 제공.
- 보통 코딩 기술은 필요하지 않음.
알아야 하는 기술)
- SQL
- 대시보드 : 룩커, 태블로, 파워 BI, 수퍼셋
- 데이터 모델링
- 통계 지식
- 비즈니스 도메인에 대한 지식
- 지표 정의 능력
2-3. 데이터 분석가의 딜레마
- 끊임 없이 많은 질문들에 시달리며, 우선순위를 정하는 것이 힘듦.
- 좋은 데이터 인프라 없이 일을 수행하기가 힘듦.
- 불분명한 소속감.
2-4. 새로운 직군 및 서비스
- ML 엔지니어: 데이터 과학자 + 데이터 엔지니어
- MLOps: 데이터 엔지니어 + 데이터 과학자 + DevOps
- 프라이버시 엔지니어: 개인정보 보호 관련 직군
- 데이터 디스커버리 서비스: 데이터의 양과 활용이 늘어나면서 대시 보드 수가 늘어나는데, 이를 위해 원하는 데이터 혹은 대시 보드를 찾을 수 있도록 해 주는 서비스.
2-5. MLOps
- DevOps가 하는 일(CI/CD, Deployment, ...)을 ML에 적용하는 역할.
- ML 모델 빌딩 및 배포, 성능 모니터링.
알아야 하는 기술)
- 파이썬/스칼라/자바
- 데이터 파이프라인과 데이터 웨어하우스
- CI/CD, 서비스 모니터링
- 컨테이너 기술 (도커, K8S)
- 클라우드(AWS, GCP, Azure)
- ML 관련 기술
2-6. 프라이버시 엔지니어
- 전체 시스템에서 개인 정보 보호를 위한 가이드라인 및 툴을 제공하는 역할.
- 개인 정보 데이터가 시스템에서 필요한 지 판단을 하고, 어떻게 저장하고 보호할 지 등에 대해서 결정.
- 데이터 시스템에서 중요한 역할로 자리 매김.
- 개인 정보 보호 법안은 점점 강화되고 있는 추세임.
2-7. 데이터 디스커버리
-
별도의 직군은 아니지만, 큰 규모의 데이터 팀에서 반드시 필요한 서비스.
-
데이터가 커지면 테이블과 대시보드의 수도 증가함.
- 데이터 분석 시 어느 테이블 혹은 대시보드를 봐야하는지 혼란이 생김. -> 귀찮아서 새로운 테이블 혹은 대시보드를 생성함. -> 정보 과잉 문제. -> 악순환.
-
주기적인 테이블과 대시보드 클린업 작업 필요.
-
테이블과 대시보드 관련 검색 서비스 활용.
3. 데이터 웨어하우스와 ETL/ELT
3-1. 데이터 웨어하우스
- 클라우드 데이터 웨어하우스가 대세.
- 작은 규모에서는 RD를 활용하다가 데이터 규모가 커지면 RedShift와 같은 클라우드 데이터 웨어하우스 활용.
- 클라우드 서비스에는 크게 고정비용(RedShfit)과 가변비용(BigQuery, Snowflake) 옵션으로 나뉨. (후자: 좀더 확장 가능한 옵션.)
- 초기에는 고정비용을 사용하다가 데이터 규모가 커지면 가변비용을 사용하는 것을 추천.
3-2. 데이터 레이크
- 데이터 웨어하우스는 비구조화 데이터를 저장하기에는 용이하지가 않음.
- 데이터 레이크: 구조화 데이터 + 비구조화 데이터(로그 파일)
- 보존 기한이 없는 모든 데이터를 원래 형태로 보존하는 스토리지라고 보면 됨.
- 일반적인 데이터 웨어하우스보다 훨씬 더 큰 용량이며 더 저렴한 스토리지.
- 대표적인 예시) AWS의 S3
- 데이터 레이크가 있는 환경에서 ETL과 ELT:
- 외부 데이터 -> 데이터 인프라 : ETL
- 데이터 인프라 -> 데이터 처리 : ELT
3-3. ETL, ELT
- ETL의 수는 회사의 성장에 따라 기하급수적으로 늘어남.
- 중요한 데이터에 대한 ETL이 실패했을 경우, 빠른 시간 내에 fix한 후 실행하는 것이 중요.
- 이를 위한 스케줄러 혹은 프레임웤이 필요해졌으며, Airflow가 대표적인 기술이다.
- 데이터 요약을 위해서, ELT도 생겨남.
- ETL에서 읽은 데이터의 종류가 다양해지고 규모가 커지면서 모든 데이터를 이해해서 조인한 후 사용하는 것이 거의 불가능함.
- 따라서, 주기적으로 요약 데이터를 만들어 사용하게 됨. (고객 매출 요약 테이블, 제품 매출 요약 테이블, ...)
- 대표적인 기술: dbt
- Data Lake에서 빅데이터 처리 기술(Spark)이 필요한 경우도 있음.
ETL은 데이터를 데이터 인프라 외부에서 내부로 가져오는 프로세스(파이프라인)이고, ELT는 데이터 인프라 내부에서 데이터를 조작하여 추상적이고 요약된 새로운 데이터(테이블, 대시보드)를 만드는 프로세스이다.
3-4. 데이터 소스 예
- 프로덕션 데이터베이스 내의 데이터(사용자 정보, 상품 정보, 구매 기록, 리뷰, ...)
- 이메일 마케팅 데이터
- 크레딧카드 매출 데이터
- 서포트 티켓 데이터
- 서포트 콜 데이터
- 세일즈 데이터
- 사용자 이벤트 로그
3-5. Airflow
- 대표적인 ETL/ELT 관리 및 운영 프레임웤.
- 다수의 ETL에 대한 스케줄링 및 이들 간의 dependency 정의.
- 실패한 ETL에 대한 에러 메시징 및 재실행 기능(Backfill)
- AWS와 Azure에서도 지원.
- Airflow에서 ETL을 DAG라 부르며, 웹 인터페이스를 통한 관리 기능을 제공함.
- 크게 3가지 컴포넌트로 구성됨: 스케줄러, 웹서버, 워커(Worker)
3-6. 빅데이터 처리 프레임웤
- 분산 환경 기반(다수의 서버로 구성. 분산 파일 시스템(HDFS) + 분산 컴퓨팅 시스템(Spark))
- master서버 - slaves서버의 관계.
- Falut Tolerance(일부 slave 서버가 고장나도 동작해야함.)
- Replication Factor(데이터 블록을 여러 개의 서버에 저장하는 수.)
- Scale UP/Out (서버 스펙 높이기 or 서버 추가)
- 1세대 기술 : Hadoop(MapReduce, Hive/Presto) -> YARN 추가되면서 Spark으로 진화.
- 2세대 기술 : Spark(SQL, Pandas의 DataFrame, Streaming, ML, Graph)
4. 데이터 웨어하우스 옵션들
살펴볼 데이터 웨어하우스)
4-1. AWS RedShift
- 최대 2PB 스케일 데이터 분산 처리 가능.
- PostgreSQL의 대부분의 기능을 사용 가능.
- 고정비용 옵션이 기본이었으나, 가변비용 모델도 생김(Redshift Serverless)
- 약정 할인 가능.
- CSV, JSON, Avro, Parquet 등 다양한 데이터 포맷을 지원.
- AWS 내 다른 서비스와 연동이 쉬움: S3, DynamoDB, SageMaker, ...
- 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
- 웹 콘솔 외에도 API를 통해 관리/제어 가능.
4-2. Snowflake
- 데이터 웨어하우스로 시작된 서비스.
- 데이터 판매가 가능한 Data Sharing/Marketplace 제공.
- ETL 및 다양한 데이터 통합 기능 제공.
- SQL 기반의 빅데이터 저장, 처리, 분석 가능.
- 다양한 데이터 포맷 지원.
- S3, Cloud Storage, Blog Storage와 연동 가능.
- 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
- 웹 콘솔 외에도 API를 통한 관리/제어 가능.
4-3. Google Cloud BigQuery
- Nested fields, repeated fields를 SQL 처리 가능.
- 가정비용과 고정비용 옵션 지원.
- 다양한 데이터 포맷 지원.
- 구글 클라우드 내의 다른 서비스와 연동이 쉬움.
- 배치 데이터 중심이지만 실시간 데이터 처리도 지원.
- 웹 콘솔 외에도 API를 통한 관리/제어 가능.
4-4. Apache Hive
- Haddop 기반의 SQL 데이터 웨어하우스 서비스.
- 다른 하둡 기반 오픈소스(Spark, HBase, ...)와 연동이 쉬움.
- 다양한 데이터 포맷 지원.
- 배치 빅데이터 프로세싱 시스템. (빠른 속도보다는 데이터 양에 최적화.)
- 웹 UI 혹은 커맨드라인 UI를 지원.
- 점점 Spark에 밀리며 서비스 이용자 수가 줄어듦.
4-5. Apache Presto
- Hive와 거의 유사하며, Hive와 달리 데이터 양(디스크)보다는 빠른 처리 속도(메모리)에 초점을 맞춤.
- Hive: 빅데이터.
- Presto: 빠른 속도의 작은 규모의 데이터.
4-6. Apache Iceberg
- 아파치 오픈소스 프로젝트로, 데이터 웨어하우스 기술은 아님.
- 대용량 SCD(Slowly-Changing Datasets) 데이터를 다룰 수 있는 테이블(파일) 포맷.
- flexible하다는 것이 특징.
- 자바와 파이썬 API를 지원.
- Spark와 같은 다른 Apache 시스템과 연동 가능.
4-7. Apache Spark
- 파이썬의 판다스처럼 빅데이터를 프로세싱할 수 있는 기술.
- 빅데이터 처리 관련 종합 기능. (배치 처리, 실시간 처리, 그래프, 머신러닝)
- 다양한 분산처리 시스템 지원. (YARN, AWS EMR, G-C Dataproc, Mesos, K8S)
- 다양한 파일시스템과 연동 가능. (HDFS, S3, Cassandra, HBase)
- 다양한 데이터 포맷 지원.
- 다양한 언어 지원. (자바, 파이썬, 스칼라, R)
5. 실리콘밸리 회사들의 데이터 스택 트렌드
5-1. 데이터 플랫폼의 발전 단계
-
초기 단계: 데이터 웨어하우스 + ETL
-
발전 단계: 데이터 양 증가.
- Spark와 같은 빅데이터 프로세싱 시스템 및 데이터 레이크 도입.
-
성숙 단계: 데이터 활용 증대.
- ELT의 중요성 증가로 인한 dbt 등의 analytics engineering 도입
- MLOps 등의 ML 관련 효율성 증대 노력 증대.
5-2. 발전 단계: 데이터 양 증가
- Spark와 같은 빅데이터 처리 시스템 도입.
- 데이터 레이크의 도입. (로그 데이터와 같은 비구조화 데이터 처리.)
-
데이터 소스 -> 데이터 인프라 -> 데이터 웨어하우스
-
데이터 소스 -> 데이터 인프라 -> 데이터 레이크
-
데이터 레이크 -> 데이터 인프라 -> 데이터 웨어하우스
- 이때, 빅데이터 처리 시스템인 Spark/Hadoop 등 사용.
5-3. 성숙 단계: 데이터 활용 가속화
- 데이터 품질의 중요성 증대.
- ELT의 중요성으로 인해 dbt 등의 analytics engineering 도입.
- dbt: database to database (정제 후 데이터베이스에 다시 저장.)
- lake to lake, laek to warehouse, warehouse to warehouse
- MLOps 등 ML 개발 운영 관련 효율성 증대.