소스 시스템이 위치하는 곳이 어디인지를 이해하는 것은 여러 가지 이유로 매우 중요하다.
첫째, 타사 데이터 소스에 위치한 데이터에 액세스하려고 하다면 액세스 방법에 제한이 있을 수 있다.
둘째, 내부적으로 구축된 시스템은 액세스 방법뿐만 아니라 데이터를 사용자가 필요로 하는 형태에 맞추어 정의하는 등의 많은 기회를 분석 팀에 제공할 수 있다.
소스 데이터를 소유한 사람이 누그든 관계없이 데이터 엔지니어가 새로운 데이터 수집을 구축할 때 데이터 엔지니어가 가장 먼저 알아볼 것은 소스 데이터를 얻는 방법과 형식이다.
우선 데이터에 대한 인터페이스가 무엇인지 살펴봐야 하는데 가장 일반적인 것은 다음과 같다.
인터페이스뿐만 아니라 데이터 구조도 다양하다. 다음은 몇 가지 일반적인 예이다.
현재 JSON과 같은 반정형 데이터가 점점 보편화 되고 있으며 속성-값(Key-Value) 구조와 객체의 중첩 구조의 이점을 가지고 있다. 파이프라인에서 누락되거나 불완전한 데이터를 처리하는 방법은 상황에 따라 달라지며 데이터의 유연성이 증가할수록 점점 더 많이 필요하다.
비정형 데이터는 일부 분석 작업에 흔히 사용된다. 자연어 처리에 사용되는 방대한 양의 텍스트 데이터, 컴퓨터 비전에 필요한 이미지 및 영상등이 대표적인 예이다.
데이터 사이즈가 무조건 크다고 가치가 있는 것은 아니다. 대부분 조식에서 큰 데이터보다 작은 데이터세트를 더 중요하게 생각한다. 또한 크고 작은 데이터세트를 함께 수집하고 모델링하는 것이 일반적이다.
파이프라인을 설계할 때 데이터 사이즈를 고려해야 하지만 사이즈가 크다고 가치가 높은 것은 아니다.
클라우드 공급업체에 등장으로 분석 및 데이터 웨어하우징 환경을 변화 3가지 요소가 있다.
데이터 웨어하우스와 데이터 레이크 정의
데이터 웨어하우스란?
사용자가 원하는 질문에 대답할 수 있는 데이터 분석 활동을 지원하기 위해 서로 다른 시스템의 데이터가 모델링되어 저장되는 데이터베이스다. 데이터 웨어하우스의 데이터는 리포팅 및 분석 쿼리를 위해 정형화되고 최적화 된다.
데이터 레이크란?
데이터가 저장되지만 데이터 웨어하우스처럼 데이터 구조나 쿠리 최적화가 필요 없는 곳이다. 다양한 데이터 유형뿐만 아니라 대량의 데이터가 포함될 가능성이 높다. 예를 들어, 단일 데이터 레이크에는 텍스트 파일로 저장된 블로그 게시물 모음, RDB에서 추출된 플랫 파일 및 산업 시스템의 센서에서 생성된 이벤트를 포합하는 JSON 개체등이 포함된다.
동일한 데이터 생태계에서 데이터 웨어 하우스와 데이터 레이크 모두를 수용할 수 있는 공간이 있으며, 데이터 파이프라인이 둘 사이에서 데이터를 이동하는 경우가 많다.
데이터를 수집할 필요성은 거의 모든 데이터 파이프라인에 공통적이다. 데이터를 수집할 다양한 데이터 소스를 생각해야 한다. 최신 데이터 인프라에서는 많은 상용 및 오픈 소스 도구를 사용할 수 있다.
이러한 툴이 널리 보급되어 많이 사용된다. 간혹 일부는 자체 프레임워크를 직접 개발하기도 한다.
데이터 수집은 전통적으로 ETL 또는 ELT 프로세스의 추출 및 로드 단계다. 일부 도구는 이러한 단계에만 집중하는 반면 어떤 도구는 사용자에게 몇 가지 변환 기능도 제공한다.
데이터 모델링과 데이터 변환 용어 정리
데이터 변환
데이터 변환은 ETL 또는 ELT 프로세스에서 T에 해당하는 광범위한 용어이다. 변환은 저장된 타임스탬프를 한 시간대에서 다른 시간대로 변환하는 것처럼 간단한 것일 수 있다. 또한 일부 비즈니스 로직을 통해서 집계되고 필터링된 여러 원본 열을 바탕으로 새 지표를 생성하는 더 복잡한 작업일 수도 있다.
데이터 모델링
데이터 모델링은 보다 구체적인 데이터 변환 유형이다. 데이터 모델은 분석을 위해 데이터를 이해하고 최적화된 형식으로 정형화하고 정의한다. 데이터 모델은 일반적으로 데이터 웨어하우스에서 하나 이상의 테이블로 표시된다.
데이터 수집과 마찬가지로 최신 데이터 인프라에는 여러 가지 방법론과 도구가 있다. 앞서 언급한 일부 데이터 수집 도구는 어느 정도 수준의 데이터 변환 기능을 제공하지만 이러한 기능은 매우 간단한 경우가 많다. 좀 더 복잡한 데이터 변환 및 데이터 모델링을 위해서 dbt와 같이 작업을 위해 특별히 설계된 도구와 프레임워크를 찾는 것이 바람직하다.
조직의 데이터 파이프라인의 복잡성과 수가 증가함에 따라 데이터 인프라에 워크플로 오케스트레이션 플랫폼을 도입하는 것이 중요하다. 이는 파이프라인에서 작업의 스케줄링 및 흐름을 관리해준다. 대표적으로 Apache Airflow, Luigi, AWS Glue와 같은 플랫폼이 존재한다.
대부분 최신 오케스트레이션 프레임워크는 파이프라인에서 작업의 흐름과 종속성을 그래프로 나타낸다. 그러나 파이프라인 그래프에는 몇 가지 특정 제약 조건이 있다.
파이프라인 단계에서는 방향성을 가진다. 즉, 하나의 작업 또는 여려 개의 작업으로 시작하고 특정 작업으로 끝난다. 실행 경로와 순서를 보장하기 위해 필요하다.
또한 파이프라인 그래프는 비순화 그래프여야 한다. 즉, 작업이 이전에 완료된 작업을 다음 작업으로 가리킬 수 없다. 결국 순환할 수 없고 다음으로만 갈 수 있다.
이러한 제약 조건을 염두에 두고 오케스트레이션 파이프라인은 방향성 비순환 그래프(DaGs)라는 그래프를 생성한다.