카테고리 없음

데이터 엔지니어링 생명주기

주죵 2024. 3. 8. 08:26
728x90
반응형

데이터 엔지니어링 생명주기란?

원시데이터의 요소를 분석가 등이 사용할 수 있는 유용한 최종제품으로 전환하는 단계

 

데이터 엔지니어링 생명주기

데이터엔지니어링 생명주기는 크게 다섯단계로 나뉜다.

  • 데이터 생성
  • 데이터 저장
  • 데이터 수집
  • 데이터 변환
  • 데이터 서빙

그리고 보안, 데이터관리, 데이터옵스, 아키텍처, 오케스트레이션, 소프트웨어 엔지니어링의 보이지않는 요소로 구성된다

 

데이터 생성

원천시스템은 데이터 엔지니어링 수명주기에서 사용되는 데이터 원본이다. 원천시스템은 전통적인 RDB형태, IOT스웜으로 구성된 Queue 형태 등 다양한 형태로 존재가능하다. 데이터엔지니어는 원천시스템의 본질과 생성, 수집시점, 스키마등에 대한 다양한 고려사항을 인지해야한다.

원천데이터는 스키마에 따라 크게 두가지로 구분되기도 하는데 몽고db, blob, mq등의 스키마리스(=비정형 데이터), 전통적인 RDB에 적용된 고정스키마가 있다.

 

데이터 저장

데이터 저장할 공간이 필요하므로 스토리지 솔루션이 필요하다. 이때 적절한 스토리지를 선택하는건 가장 중요한 단계중 하나이다. 그 이유는 크게 아래 세가지로 정리된다.

1. 클라우드 아키텍처에선 여러 스토리지 솔루션을 사용하므로 신중한 선택이 필요하다.

2. 스토리지는 단순 저장공간이 아니다. 복잡한 변환쿼리를 제공하는 경우 단순 스토리지 이상의 역할을 한다.

3. 저장은 수집, 변환등 다른 단계에 관여한다.

 

데이터엔지니어는 선택한 스토리지 솔루션이 비즈니스, 엔지니어링 요구사항이 맞는지 고려해야한다. 또한 데이터의 접근빈도와 검색패턴을 파악애햐한다. 자주 검색되는 핫데이터인지, 가끔 액세스되는 미온적 데이터인지, 거의 액세스되지 않는 콜드에티어인지 파악하고 적절한 스토리지를 구성해야한다.

이와 같은 다양한 요구사항을 고려하여 각각의 트레이드오프를 고려한 스토리지 솔루션을 선택한다.

 

데이터 수집

원천시스템에서 데이터를 수집하는 단계이다. 엔지니어는 데이터가 안정적으로 생성, 수집되는지 / 목적지는 어디인지 / 얼마나 접근되는지 / 어느 용량으로 도착하는지 등 종합적인 고려를 해야한다.

 

배치 vs 스트리밍

스트리밍 : 스트리밍은 실시간이나 실시간에 가까운 데이터를 수집하여 다운스트림 관계자가 사용할 수 있음을 의미한다.

배치 : 미리 설정된 시간 혹은 사이즈 간격에 따라 데이터를 수집하는 경우이다.

스트리밍이 무작정 좋아보일 수 있으나 항상 간단하지 않고 복잡성과 추가비용을 늘릴 수 있다. 다운스트림의 스토리지가 스트리밍 데이터를 소화 가능한지 / 사용사례가 존재하는지 / 유지보수 측면에서의 비용 등을 고려해서 적절한 수집방식을 선택해야한다. 

 

푸시 vs 풀

푸시 : 원천시스템이 db, 객체저장소, 파일시스템등 어떤 종류냐에 상관없이 타깃에 데이터를 쓰는 방식

풀 : 원천시스템이 직접 데이터를 검색해오는 방식

(메시지 큐를 생각하면 좋다. 메시지를 푸시하는 쪽과 큐에서 그를 읽어다 쓰는쪽의 차이.)

 

데이터 변환

데이터를 다운스트림에서 사용하기 유용한 형태로 변경하는 과정이다.

엔지니어는 변환에 드는 비용과 ROI, 관련 비즈니스 가치는 무엇인지 / 변환이 단순하고 독립적인지 / 변환이 지원하는 비즈니스 규칙이 무엇인지 고려해야한다.

 

데이터 서빙

수명주기의 마지막 단계로 변환된 데이터로 부터 가치를 창출하는 단계이다. 대표적으로 분석(BI, Ad hoc분석, 임베디드 분석 등), ML, 역ETL등이 포함된다.

 

역 ETL

데이터 엔지니어링의 출력에서 처리한 데이터를 가져와 원천시스템에 다시 공급하는 방식이다. 안티패턴으로 간주되기도 하였으나 유익하게 필요한 경우가 많다. 분석결과나 평가모형등을 가져와 다시 운영시스템이나 플랫폼에 제공 가능하기 때문이다.

 

드러나지않는 주요 요소

데이터엔지니어링 수명주기에 드러나지 않는 주요요소는 보안, 데이터관리, 데이터옵스, 데이터 아키텍처, 오케스트레이션, 소프트웨어엔지니어링 등이 있다. 이들은 수명주기 모든 측면을 지원한다.

 

보안

데이터와 접근보안을 이해하고 최소권한 원칙을 실행해야한다. 사용자에게 딱 필요한만큼의 접근권한만 부여, 해당 작업을 수행하는데 필요한 기간만을 허용한다. 암호화와 데이터 마스킹 등으로 가시성 보호도 필요하다. 데이터 엔지니어로서는 모범사례를 이해하는것도 중요하다.

 

데이터 관리

수명주기 전체에 걸쳐 데이터와 정보자산의 가치를 제공, 제어 , 보호 및 향상할 계획, 정책, 프로그램과 사례를 개발, 실행 및 감독하는것이다. 데이터 거버넌스, 데이터 품질, 책임 등 다양한 세부요소가 통틀어 데이터 관리의 영역에 포함된다. 아래는 세부영역들에 대한 간단한 정리이다.

 

데이터 거버넌스

조직이 수집한 데이터의 품질, 무결성, 보안 및 사용성을 보장하기위한 데이터 관리기능이다. 

발견가능성 : 데이터를 사용, 검색 가능해야한다. 필요한 데이터에 신속하고 안정적으로 접근가능해야 하며 출처가 어디인지, 다른데이터와의 관계가 어떠한지, 의미가 무엇인지 알아야한다. 데이터 발견 가능성의 주요 분야는 메타데이터 관리 및 마스터데이터 관리 등이 있다.

 

데이터 책임

데이터의 일부를 관리할 개인을 지정하는 것이다. 데이터엔지니어가 꼭 책임자일 필요는 없다. 책임자가 없으면 데이터 품질관리가 어렵기때문에 데이터 품질을 위해 책임이 필요하다.

 

데이터 품질

데이터 품질의 3가지 중요특성으로 정의된다 (정확도ㅡ 완전성, 적시성)

 

데이터 모델링 및 설계

데이터를 사용가능한 형태로 변환하는 프로세스이다.

 

데이터 계보

데이터를 처리하는 시스템과 데이터가 의존하는 업스트림 데이터를 모두 추적해 수명주기 전체에 걸쳐 감사추적을 기록하는것이다. 데이터가 수명주기를 거치며 이동할때 타 데이터에 어떤 영향을 미쳤는지, 어떤 데이터가 구성됐는지 알려면 데이터 계보가 필수적이다.

 

데이터 통합과 상호 운용성

여러 도구와 프로세스 전반에 걸쳐 데이터를 통합하는 프로세스이다.

 

데이터 수명주기 관리

데이터 보관과 파기를 위한 수명주기 관리이다. 클라우드에 너무 많은 대량데이터를 보존하게 되면 고비용의 원인이 될 수 있다. 또한 개인정보보호나 데이터 보존법, 컴플라이언스 요건에 따라 파기를 관리해야한다.

 

윤리와 개인정보 보호

데이터 엔지니어는 데이터를 아무도 보지 않을 때라 해도 개인정보 보호를 위한 올바른 조치를 해야한다. 데이터셋이 개인식별정보 및 기타 중요한 정보를 마스킹처리하는지 확인해야한다.

 

데이터 옵스

애자일 방법론, 데브옵스, 통계적 공정관리의 모범사례를 데이터에 매핑한다. 데이터 제품에 대해 릴리스와 품질을 개선하는 작업이다. 리드타임 단축, 결함 최소화 등의 공정관리 방법에 따른 데이터 생산성 향상으로 소프트웨어와 데이터 운영 모든 측면에서 추진력을 얻을 수 있다.

데이터 옵스는 자동화, 모니터링 및 관찰 가능성, 사고 대응이라는 세가지 핵심 기술요소로 나뉜다.

 

자동화

자동화는 프로세스의 신뢰성과 일관성을 보장할 수 있고, 새로운 제품기능과 개선사항을 기존 워크플로에 신속하게 구현할 수 있다.

변경관리, CI/CD, 코드로 이뤄진 데브옵스와 유사한 프레임워크 및 워크플로를 가진다. 데이터 품질, 데이터/모델 드리프트, 메타데이터 무결성 등을 확인하는 차원을 추가해 기술과 시스템의 신뢰성을 모니터링하고 유지한다.

 

관찰가능성과 모니터링

데이터와 데이터 생성 시스템의 관찰, 감시가 없으면 데이터공포상황을 맞닥뜨릴수있다. 여기서 데이터 공포상황은 불량데이터로 인한 잘못된 의사결정, 데이터 생성 지연으로 인한 늦은 보고서 혹은 오래된 정보제공등이 있다. 따라서 데이터엔지니어는 관찰가능성, 모니터링, 로깅, 경고 및 추적으로 수명주기에서 발생하는 문제에 대처할 수 있어야한다. 모니터링중인 이벤트에 문제가 있는지, 대응방법은 무엇인지 파악할 수 있어야한다.

 

사고대응

시스템 문제가 발생하는 경우 수많은 문제로 데이터 엔지니어링 수명주기를 방해할 수 있다. 자동화 및 관찰가능성으로 이러한 사고 근본원인을 신속하게 대처 및 해결할 수 있어야한다. 데이터엔지니어는 장애 발생 후 최종사용자, 이해관계자가 문제를 제기하기 이전에 미리 해당 문제를 발견할 수 있어야한다.

 

데이터 아키텍처

데이터아키텍처는 장기적인 데이터 요건과 전략 지원을 위한 데이터 시스템의 현재 및 미래상태를 반영한다. 즉 장기적 관리를 위한 요건과 빠르게 변화하는 요구사항에 대응할수 있는 적절한 아키텍처를 갖춰야한다.

비즈니스 요구사항을 이해하고 새로운 사용사례에 대한 요구사항을 수집해야한다. 요건을 기반으로 비용, 운영 간소화를 위한 균형있는 데이터 수집, 제공방식을 설계해야한다. 즉 원천시스템, 수집, 저장, 변환, 서빙에 있어 설계 패턴, 기술 및 도구의 트레이드오프를 파악해야 한다.

 

오케스트레이션

많은 작업이 예약된 순서대로 빠르고 효율적이게 처리되도록 조정하는 프로세스이다. 스케줄러는 시간만을 인식하지만, 오케스트레이션 엔진은 유향 비순환그래프(DAG)의 형태로 작업존속성에 따라 메타데이터를 구축한다. DAG는 특정 시간간격에 따라 실행되도록 스케줄링이 가능하다. 요즘 대표적인 도구로는 에어플로우가 있다.

오케스트레이션 시스템은 관리작업을 모니터링하고 DAG종속성이 완료되면 새 작업을 시작한다. 또한 모니터링을 통해 데이터의 처리가 특정조건을 만족하는지 확인할 수있다. 그 외 작업기록 기능, 시각화 및 경고기능, 시간범위에 따른 종속성 등을 지원한다. 

 

소프트웨어 엔지니어링

데이터엔지니어링의 발달로 추상화를 통해 사용자 친화적으로 발달하여 이전처럼 저수준 프레임워크에서의 소프트웨어 엔지니어링 작업은 줄어들었다. 그러나 여전히 소프트웨어 엔지니어링은 여러 영역에서 데이터엔지니어링 수명주기에 적용된다.

코어데이터 처리 코드

추상화되어 관리하기 쉬워졌어도, 수명주기 전체에 걸쳐 나타나는 데이터 처리 코딩은 필요하다. 따라서 SQL, 스파크 등의 프레임워크와 언어에 능숙해야한다.

 

오픈소스 프레임워크 개발

데이터엔지니어가 수명주기 내의 문제 해결을 위해 특정 오픈소스 프레임워크를 선택한 후 지속 개발하여 도구를 개선하고 커뮤니티에 기여한다. 

 

스트리밍

본질적으로 배치데이터 처리보다 복잡해지므로 더 복잡한 소프트웨어 엔지니어링이 필요하다. 개별 이벤트를 처리하는 다양한 함수플랫폼(aws람다 등) 또는 스트림 전ㅇ용 프로세서 (스파크. 빔, 펄사 등)을 채택하여 실시간 시스템의 추적 통계와 지표 측정등을 할 수 있다.

 

코드형 파이프라인

오늘날 오케스트레이션 시스템의 핵심개념이다.  수명주기 모든 단계에 영향을 미친다. 일반적으로 데이터엔지니어는 파이썬 코드를 사용해 데이터간의 종속성을 선언하고, 오케스트레이션 엔진은 단계를 실행하기 위해 이러한 지침을 해석한다.

 

범용 문제 해결

수명주기 전반에 걸쳐 발생하는 문제를 해결하기 위해 사용자 정의 코드를 작성해야하는 경우가 발생한다. 기존 커넥터가 서로 없는 프레임워크나 솔루션을 결합하는 경우 API를 이해하고 변환을 수행하는등의 소프트웨어 엔지니어링 기술이 필요하기 때문이다.

728x90