지속적인 데이터 분석의 성공을 위해서는 분석 방법만큼이나 잘 구성된 데이터 파이프라인 구성이 필수
데이터분석이 잘 이뤄지기 위해서는 분석에 필요한 형태로 잘 정리된 데이터가 필요하고, 원하는 분석 결과를 얻기 위해서는 적합한 기간의 정확한 데이터가 필요
1. 데이터 파이프라인 소개
모든 화려한 대시보드와 머신러닝 모델, 그리고 비즈니스를 변화시키는 통찰력 뒤에는 데이터가 있다.
데이터는 새로운 석유다. 데이터의 진정한 가치는 그것이 정제되어 소비자에게 전달된 후의 잠재력에 있다. 가치사슬의 각 단계를 통해 데이터를 전달하려면 효율적인 파이프라인이 필요하다.
데이터 파이프라인
- 다양한 소스에서 새로운 가치를 얻을 수 있는 대상으로 데이터를 옮기고 변환하는 일련의 과정이다. 분석, 리포팅, 머신러닝 능력의 기초가 된다.
- 데이터 파이프라인은 일반적으로 데이터 추출, 데이터 가공, 데이터 유효성 검사를 포함한 여러 단계로 구성되며, 때로는 데이터를 최종 목적지로 전달하기 전에 머신러닝 모델을 학습하거나 실행하는 단계가 있기도 하다.
데이터 엔지니어의 역할
- 클라우드 컴퓨팅과 Saas(Software as a service) 가 대중화되면서 조직의 데이터 소스가 폭발적으로 증가
- 머신러닝 모델과 데이터 과학 연구, 데이터에 대한 수요도 그 어느 때보다 높아짐
- 데이터 파이프라인을 구축하고 유지관리
- 데이터 과학자 및 분석가와 긴밀히 협력하여 데이터를 어떻게 처리해야 하는지 파악하고 요구사항을 확장 가능한 프로덕션 상태로 전환하는데 도움
- 고성능의 SQL 작성 방법을 알고 데이터 웨어하우징 및 데이터 모델링의 기본 사항 이해
- 리눅스 명령줄에 능숙, 응용 프로그램 로그 분석, 크론 작업 예약, 방화벽 및 기타 보안 설정의 문제 해결 작업 수행
분산 컴퓨팅
- 데이터 양이 많아지고 데이터를 신속하게 처리하고자 하는 요구사항이 늘어남 → 분산 컴퓨팅 플랫폼 사용
- 하둡 분산 파일 시스템(HDFS), 맵리듀스, 아파치 스파크(분산 처리 프레임워크)
데이터 파이프라인
- 원본에서 데이터를 추출하여 분석가가 사용할 수 있도록 단순한 데이터베이스 테이블이나 플랫 파일로 로드하는 것 이상을 수행
- 데이터를 한 번만 제공하는 것이 아니라 파이프라인을 구축하고 이를 안정적이고 안전하게 제시간에 제공하고 처리하는 인프라를 지원
2. 최신 데이터 인프라
시스템을 구축할 때 데이터 수집을 고려하여 설계했는가?
- 데이터 수집이 시스템에 의도하지 않는 부하를 가하는가?
- 데이터를 점진적(incremental)로 로드할 수 있는가?
데이터에 대한 인터페이스
- 애플리케이션 뒤에 있는 데이터베이스 (Postgres, MySQL)
- REST API와 같은 시스템 상단의 추상화 계층
- Apache Kafka와 같은 스트림 처리 플랫폼
- csv, 공유 네트워크 파일 시스템(NFS), 클라우드 스토리지 버킷
- 데이터 웨어하우스 / 데이터 레이크
- HDFS, HBase 데이터베이스의 데이터
데이터 사이즈
- 데이터세트는 페타바이트 규모가 되었지만 대부분의 조직에서는 큰 데이터보다 작은 데이터세트를 더 중요하게 생각한다. (사이즈가 크다고 가치가 높은 것은 아니다)
데이터 클렌징 작업과 유효성 검사
- garbage in, garbage out
- 지저분한 데이터
- 중복되거나 모호한 레코드
- 고립된 레코드
- 불완전하거나 누락된 레코드
- 텍스트 인코딩 오류
- 일치하지 않는 형식 ( - 가 포함된 전화번호와 없는 전화번호)
- 레이블이 잘못되었거나 레이블이 지정되지 않은 데이터
데이터 웨어하우스
- 사용자가 원하는 질문에 대답할 수 있는 데이터 분석 활동을 지원하기 위해 서로 다른 시스템의 데이터가 모델링되어 저장되는 데이터베이스
- 리포팅 및 분석 쿼리를 위해 데이터를 정형화, 최적화
데이터 레이크
- 데이터 웨어하우스처럼 데이터 구조 / 쿼리 최적화가 필요 없는 데이터 저장소
- 대량의 데이터가 포함
- 리포팅 및 분석을 위해 데이터 저장
방향성 비순환 그래프(DAG)
- 파이프라인 단계는 항상 방향성을 가진다. 하나 / 여러개의 작업으로 시작하여 특정 작업으로 끝난다.
- 모든 종속 작업이 완료되어야만 그 다음 작업이 실행된다.
- 비순환 그래프다. 작업은 되돌아갈 수 없고, 다음 작업으로만 갈 수 있다.
데이터 인프라 커스터마이징
- 비용, 엔지니어링 리소스, 보안 및 법적 리스크 허용 범위와 그에 대한 트레이드오프를 이해해야 한다.
3. 일반적인 데이터 파이프라인 패턴
- 데이터를 준 실시간으로 처리해야 하는가? 매일 데이터가 업데이트되어야 하난그?
- 분석한 데이터를 최종적으로 시각화 대시보드나 머신러닝 모델에 대한 입력값으로 사용하는가?
ETL
- Extract - Transform - Load
- 수십 년 동안 데이터 파이프라인의 표준.
- 행 기반 데이터베이스로 트랜잭션 사용 사례에서 잘 작동
- 레코드에 따라 일부 디스크 공간은 사용하지 않은 상태로 남게 됨
- 온라인 트랜잭션 주문 세부 정보와 같이 한 번에 하나의 주문만 쿼리하거나 업데이트하는 경우 / 데이터 양이 적은 경우에는 행 기반 저장소가 최적 (단일 레코드를 자주 읽고 쓰는 속도가 가장 중요)
- 전체 파이프라인에 걸쳐 데이터 엔지니어가 필요
ELT
- Extract - Load - Transform
- 클라우드를 기반으로 함
- Snowflake, Amazon Redshift같은 확장성이 뛰어난 열 기반 데이터베이스 기반 → I/O 효율성, 데이터 압축, 저장소 최적화, 병렬 노드에 데이터 및 쿼리를 분산
- 데이터 분석 → 많은 양의 데이터를 드물게 읽고 쓰는 경우 + 특정 열만 필요로 하는 경우
- 데이터 웨어하우스에 데이터를 로드하는 것에 집중할 수 있게 됨 (ETL 자체의 강점에 집중)
- 머신러닝 및 데이터 제품 개발
ETL와 ELT의 공통점
- 데이터 웨어하우징 및 비즈니스 인텔리전스에서 널리 사용되는 패턴
- 데이터 웨어하우스에 데이터를 공급하고 분석가 / 보고 도구가 이를 유용하게 쓸 수 있게 하는 데이터 처리에 대한 접근 방식
EtLT
- 데이터 추출 → 간단한 변환 → 로드
- 테이블에서 레코드 중복 제거
- 민감한 데이터 마스킹 / 난독화 (보안상의 이유)
- 대량의 데이터를 이동하거나 대기 시간이 핵심인 경우 추출 → 기본 변환 → 로드 하는 것도 괜찮다.
데이터 과학 / 머신러닝을 위한 ELT
- 데이터 과학자는 데이터 탐색 / 예측 모델을 구축하며, 추출 - 로드 중에 획득한 많은 데이터를 분기하여 사용할 가능성이 높다.
- 비디오 스트리밍 홈 화면의 콘텐츠 추천 엔진
- 추천한 모델의 버전, 해당 항목 클릭, 사용자의 이후 콘텐츠 소비와 관련하여 이미 수집하는 데이터로 클릭 연결을 수행
- 전자상거래 웹 사이트의 개인화된 검색 엔진
- 사용자가 생성한 레스토랑 리뷰에 대한 감성 분석을 수행하는 애플리케이션
- 하나 이상의 머신러닝 모델에 의해 구동될 가능성이 높음
- 수집하는 데이터가 머신러닝 모델이 학습 / 검증을 위한 특정 데이터세트로 참조할 수 있도록 버전 지정이 되었는지 확인해야 함
ML 파이프라인에 대한 추가 자료
http://www.yes24.com/product/goods/104409513
http://www.yes24.com/product/goods/105006757
'인프라,데이터' 카테고리의 다른 글
데이터 중심 애플리케이션 설계 1장 정리 (0) | 2022.05.08 |
---|---|
데이터 파이프라인 핵심 가이드 8-10 (0) | 2022.04.24 |
데이터 파이프라인 핵심 가이드 7 (0) | 2022.04.17 |
데이터 파이프라인 핵심 가이드 6 (0) | 2022.04.10 |
스포티파이 시니어 데엔이 말하는 주니어 개발자를 위한 커리어 로드맵 (1) | 2022.03.29 |