데이터 소스의 다양성
- 대부분 조직에는 수백 개는 아니더라도 수십 개의 데이터 소스가 있으며, 이를 통해 분석 작업을 수행할 수 있음.
Source System 소유권
- Data ingestion : 한 source에서 데이터를 추출하여 다른 소스로 로드하는 것을 의미한다..
- 소스 시스템이 위치하는 곳이 어디인지를 이해하는 것은 여러 가지 이유로 중요
- 타사 데이터 소스에 위치한 데이터에 엑세스하려고 한다면 액세스 방법에 제한이 걸릴 수 있음
수집 인터페이스 및 데이터 구조
데이터 엔지니어가 새로운 데이터 수집을 구축할 때 데이터 엔지니어가 가장 먼저 알아볼 것은 소스 데이터를 얻는 방법과 형식이다.
아래는 데이터에 대한 인터페이스의 일반적인 것들이다.
- Postgres or MySQL DB와 같은 Application 뒤에 있는 DB
- REST API와 같은 시스템 상단의 추상화 계층
- Apache Kafka와 같은 Stream 처리 Platform
- 로그, 쉼표로 구분된 값 (.csv) 파일 및 기타 플랫 파일을 포함하는 공유 네트워크 파일 시스템 (NFS) 또는 클라우드 스토리지 버킷
- 데이터 웨어하우스 또는 데이터 레이크
- HDFS or HBase 데이터베이스의 레이크
데이터 구조 일반적인 예시
- REST API JSON
- MySQL 데이터베이스의 잘 구성된 데이터
- MySQL 데이터베이스 테이블의 열 내의 JSON
- 반정형화된 로그 데이터
- CSV, 고정 폭 형식(FWF) 및 기타 플랫 파일 형식
- 플랫 파일의 JSON
- Kafka의 Stream 출력
분석 프로젝트에 더 적합한 형태로 정형화하기 위해서는 데이터 수집 이외에도 클렌징, 변환 작업 등의 추가 단계가 파이프라인에서 필요할 . 수 있음.
파이프 라인에서 누락되거나 불완전한 데이터를 처리하는 방법은 상황에 따라 달라지며, 데이터의 유연성이 증가할수록 점점 더 많이 필요
비정형 데이터는 일부 분석 작업에 사용됨,,
Data Size
- 대부분의 조직에서 큰 데이터보다 작은 데이터세트를 더 중요하게 생각함
- 크고 작은 데이터세트를 함께 수집하고 모델링하는 것이 일반적
- 대용량과 소용량 두 가지만 나눠서 생각하기보다는 스펙트럼 측면에서 생각하는 것이 좋음
- 데이터 수집 및 처리를 지나치게 단순화하는 것은 데이터의 양이나 작업의 복잡성이 낮음에도 파이프라인 작업을 과도하게 복잡하게 하는 것은 위험한데, 결과적으로 길고 비효율적인 실행이 될 수 있기 때문임
데이터 클렌징 작업과 유효성 검사
- Garbage In, Garbage Out
- 지저분한 데이터 공통 특성
- 중복되거나 모호한 레코드
- 고립된 레코드
- 불완전하거나 누락된 레코드
- 텍스트 인코딩 오류
- 일치하지 않는 형식(Ex: (-)가 있는 전화번호와 없는 전화번호)
- 레이블이 잘못되었구나 레이블이 지정되지 않는 데이터
- 최악을 가정하고 최상을 기대하라
- 가장 적합한 시스템에서 데이터를 정리하고 검증하라
- 자주 검증하라
소스 시스템의 지연 시간 및 대역폭
- 파이프라인의 데이터 추출 단계는 API 속도 제한, 연결 시간 초과, 느린 다운로드 및 시스템에 대한 부담으로 인해 소스 시스템의 소유자가 불만이 생기게 할 수 있음
- 소스 시스템과 해당 데이터의 특성을 이해하는 것이 파이프라인을 설계하고 인프라와 관련된 결정을 내리는 첫 번째 단계
클라우드 데이터 웨어하우스 및 데이터 레이크
Data Warehouse
- 사용자가 원하는 질문에 대답할 수 있는 데이터 분석 활동을 지원하기 위해 서로 다른 시스템의 데이터가 모델링되어 저장하는 데이터베이스
- 데이터 웨어하우스의 데이터는 리포팅 및 분석 쿼리를 위해 정형화되고 최적화됨.
Data Lake
- 데이터가 저장되지만 데이터 웨어하우스처럼 데이터 구조나 쿼리 최적화가 필요 없는 곳
- 다양한 데이터 유형뿐만 아니라 대량의 데이터가 포함될 가능성이 높음
데이터 수집 도구
- 가장 일반적인 도구 및 Framework : Singer, Stitch, Fivetran
- 일부 팀은 데이터를 수집하기 위해 사용자 지정 코드를 구축하기로 결정하고 일부는 자체 프레임워크 개발
- 중요한 것은 상용 제품의 가치를 어디에 두는가임. (파이프라인 더 쉽게 수집할 수 있도록 지원 or 직접 수집 구축 지원 제품)
- 데이터 수집은 전통적으로 ETL 또는 ELT 프로세스의 추출 및 Load 단계
- 어떤 도구는 사용자에게 몇 가지 변환 기능도 제공함
워크플로 오케스트레이션 플랫폼
- 파이프라인에서 작업의 스케줄링 및 흐름을 관리
- WMS (Workflow Management System), 오케스트레이션 플랫픔 또는 오케스트레이션 프레임워크라고도 불림
- Apache Airflow, Luigi, AWS Glue와 같은 플랫폼은 좀 더 일반적인 용도로 설계되어 다양한 데이터 파이프라인에 사용
방향성 비순환 그래프
파이프라인 그래프에 존재하는 특정 제약 조건
- 항상 방향성을 가짐
- 비순환(acyclic) 그래프
- DAG는 작업들의 집합을 나타내며 작업을 실제 수행해야 하는 내용은 이 곳에 저장되어있지 않음
- 각 작업을 실행하지만 그 작업의 내용은 데이터 인프라 전반에 걸쳐서 서로 다른 시스템에서 실행되는 SQL 및 Python code로 존재
중요한 것은 제약 조건(비용, 엔지니어링 리소스, 보안 및 법적 리스크 허용 범위)과 그에 따른 Tradeoff를 이해하는 것이 중요!
'Data Engineer > Data PipeLine' 카테고리의 다른 글
일반적인 데이터 파이프라인 패턴 (2) | 2024.11.20 |
---|---|
Data PipeLine 이란? (2) | 2024.11.06 |