1.1 데이터 엔지니어링이란?
1.1.1 데이터 엔지니어링 정의
- 데이터 엔지니어링이란 다양한 의견이 있지만, 공통적으로 보이는 패턴은 “데이터 엔지니어가 데이터를 가져와 저장하고, 데이터 과학자나 분석가 등이 사용할 수 있도록 준비하는 것”이다.
1.1.2 데이터 엔지니어링 수명 주기
현재 봤을 때 이전에 알고 있는 개념인 ETL이 위에 존재함을 알 수 있다. 드러난 요소를 아는 것도 중요하지만, 드러나지 않은 요소가 데이터 엔지니어링 수명 주기에 존재함을 알아야 한다.
현재의 “데이터 엔지니어링”이란 데이터 수명 주기를 위한 엔지니어링이라고 할 수 있다.
데이터 수명 주기 엔지니어는 더 강화된 추상화와 단순화 덕분에 더는 과거 빅데이터 프레임워크의 끔찍한 세부 사항의 방해를 받지 않는다. 데이터 엔지니어는 여전히 저수준의 데이터 프로그래밍 기술(Hadoop, Spark…)을 유지하고 필요에 따라 이를 사용한다. 하지만, 데이터 관리, DataOps, Data Architecture, 오케스트레이션 및 일반 데이터 수명 주기 관리와 같은 가치 사슬의 상위 영역에 역할이 점점 더 집중되고 있다.
도구와 워크플로가 단순해짐에 따라 기존의 중점인 ‘가장 큰 데이터’를 보유하는 지에 초점을 맞추는 대신, 데이터 관리와 통제, 사용 및 발견의 용이성, 그리고 품질 향상에 점점 더 많은 관심을 기울이고 있다. 예를 들어, 파이프라인을 설계할 때는 개인정보보호, 익명화, 데이터 가비지 수집 및 규정 준수에 관심을 가지고 고민한다.
1.2 데이터 엔지니어링 기술과 활동
위에서 언급했듯이 데이터 엔지니어의 기술 역량에는 보안, 데이터 관리, DataOps, Data Architecture 및 소프트웨어 엔지니어링과 같은 데이터 엔지니어링의 ‘드러나지 않는 요소’가 포함된다.
원천 시스템에서 어떻게 생성되는지, 데이터를 처리하고 선별한 후에 분석가와 데이터 과학자가 이를 어떻게 소비하고 가치를 창출할지 파악하는 것도 중요하다.
데이터 엔지니어는 데이터 솔루션을 구축하기 위해 강력하고 모놀리식한 기술을 사용하는 방법을 알고 이해했다.
- 소프트웨어 엔지니어링
- 네트워킹
- 분산 컴퓨팅
- 스토리지 또는 기타 저수준의 세부사항
1.2.1 데이터 성숙도와 데이터 엔지니어
데이터 성숙도는 조직 전체에 걸쳐 더 높은 데이터 활용률, 기능, 통합을 향해 나아가는 과정이지만, 단순히 기업 연혁이나 매출에 따라 결정되는 않는다.
데이터 성숙도 모델은 다음과 같다.
- 데이터로 시작하기 → 2. 데이터로 확장하기 → 3. 데이터로 선도하기
1.2.2 데이터 엔지니어의 배경과 기술
데이터 엔지니어링은 빠르게 성장하는 분야이지만, 데이터 엔지니어가 되는 방법에 관해서는 많은 의문점이 남아있다. 데이터 엔지니어링은 비교적 새로운 분야인 만큼 형장 투입에 필요한 정식 교육은 거의 제공되지 않는다.
데이터 엔지니어가 성공하는 데 필수적인 지식이 있다. 데이터 엔지니어는 정의상 데이터와 기술을 모두 이해해야 한다.
- 데이터 측면 : 데이터 관리의 다양한 모범 사례 앍리
- 기술 측면 : 데이터 엔지니어가 도구들의 다양한 옵션, 상호 작용 및 상충 관계 알기
결국 소프트웨어 엔지니어링, DataOps, Data Architecture에 대한 이해가 필요하다.
성공적인 데이터 엔지니어는 항상 전체적인 큰 그림을 이해하고, 비즈니스 가치를 극대화하는 방법을 파악하고자 한다.
빠르게 변하는 분야에서 뒤처지지 않는 법
변화하지 않는 것을 이해할 수 있도록 기본에 충실하되, 분야가 어느 방향으로 전개될지를 파악할 수 있도록 지속적인 개발에 관심을 기울이자.
1.3 조직 내 데이터 엔지니어
1.3.2 데이터 엔지니어와 기타 기술 역할
업스트림 이해관계자
- 데이터 아키텍트
- 소포트웨어 엔지니어
- 데브옵스 및 사이트 신뢰성 엔지니어
데이터 엔지니어는 소프트웨어 엔지니어와 협력해서 데이터를 생성하는 애플리케이션과 생성된 데이터의 양, 빈도, 형식 데이터 보안 및 규정 준수와 같은 데이터 엔지니어링 수명 주기에 영향을 미치는 기타 모든 사항을 파악해야 한다
→ 현재 EATceed의 로그 데이터를 Data warehouse를 구축하여 적재해야하는 과제가 존재한다. 이때 BE와의 긴밀한 협업이 필요할 것 같다!
다운스트림 이해관계자
- 데이터 과학자
- 데이터 분석가
- 머신러닝 엔지니어와 인공지능 연구원
2.1 데이터 엔지니어링 수명 주기란?
2.1.1 데이터 수명 주기 vs 데이터 엔지니어링 수명 주기
데이터 엔지니어링 수명 주기는 전체 데이터 수명 주기의 하위집합이다.
전체 데이터 수명 주기는 데이터의 전체 수명을 포괄하는 반면, 데이터 엔지니어리 수명 주기는 데이터 엔지니어가 제어하는 단계에 초점을 맞춘다.
2.1.2 데이터 생성
원천 시스템(source system)은 데이터 엔지니어링 수명 주기에서 사용되는 데이터의 원본이다.
예를 들어, IoT장치, 애플리케이션 메시지 대기열 또는 트랜잭션 데이터베이스일 수 있다.
데이터 엔지니어는 원천 시스템 자체를 소유하거나 제어하지는 않고, 원천 시스템의 작동 방식, 데이터 생성 방식, 데이터의 빈도 및 속도, 생성되는 데이터의 다양성을 실무적으로 이해해야 한다.
또한, 원천 시스템 소유자와 소통을 자주 해야하는데, 왜냐하면 원천 시스템 소유자가 데이터 타입 변경과 같은 마이그레이션 작업을 할 경우 데이터 엔지니어도 이를 알아야 하기 때문이다.
데이터 엔지니어링의 가장 큰 과제는 엔지니어가 작업하고, 이해해야 하는 데이터 원천 시스템의 방대한 배열이다.
예를 들면 다음과 같다.
- 애플리케이션 데이터베이스
- IoT 스윔과 메시지 큐(다수의 IoT 장치에서의 데이터가 메시지 큐에 담겨서 작업 진행하는 구조)
고려 사항
원천 시스템의 평가 질문 스타터킷에는 다양한 고려 사항이 존재한다. (pg.83)
- 데이터는 어느 정도의 속도로 생성되는가? 초당 몇 개의 이벤트가 발생할까? 시간당 몇 기가 바이트인가?
- … 등등
데이터 엔지니어는 원천으로부터 데이터를 생성하는 방법(관련 문제나 미묘한 차이점 포함)을 알아야 한다.
또한, 데이터 엔지니어는 상호 작용하는 원천 시스템의 한계를 이해해야 한다.
데이터 엔지니어가 하는 일의 핵심은 원천 시스템 스키마에서 원시 데이터를 입력받고, 이를 분석에 유용한 출력으로 변환하는 것이다. 원천 스키마가 진화함에 따라 이러한 작업은 어려워진다.
2.1.3 데이터 저장
고려 사항
데이터 웨어하우스, 데이터 레이크하우스, 데이터베이스 또는 객체 스토리지를 위한 스토리지 시스템을 선택할 때 확인할 몇 가지 핵심 엔지니어링 질문은 다음과 같다.(pg.85)
- 해당 스토리지 시스템은 향후 예상되는 확장을 처리할 수 있는가?
- 스키마 진화, 데이터 흐름, 데이터 계보 등에 대한 메타데이터를 캡처하고 있는가?
- … 등등
데이터 접근 빈도 이해
모든 데이터가 같은 방식으로 액세스되지 않는다. 검색 패턴은 저장 및 쿼리되는 데이터에 따라 크게 달라진다. 이에 따라 데이터의 ‘온도’ 개념이 나타나는데, 데이터 접근 빈도에 따라 데이터 온도가 결정된다
- hot data : 가장 자주 액세스되는 데이터
- 하루에 여러번(사용자 요청을 처리하는 시스템에서는 초당 여러번) 검색
- lukewarm data(미온적 데이터) : 가끔(매주 또는 매월) 액세스되는 데이터
- cold data : 거의 쿼리되지 않으며 아카이브 시스템에 저장하는 데 적합
2.1.4 데이터 수집
데이터 원천과, 사용 중인 원천 시스템의 특징 및 데이터 저장 방법을 이해한 뒤에 데이터를 수집해야 한다.
원천 시스템과 데이터 수집은 데이터 엔지니어링 수명 주기에서 가장 큰 병목 현상을 나타낸다.
신뢰할 수 없는 원천 및 수집 시스템은 데이터 엔지니어링 수명 주기 전반에 걸쳐 파급효과를 가져올 수 있기 때문이다.
배치 vs 스트리밍
우리가 다루는 대부분의 데이터는 본질적으로 스트리밍이다. 데이터는 거의 항상 원천에서 지속해 생성되고 갱신된다.
배치 수집은 이 스트림을 큰 청크로 처리하는 전문적이고 편리한 방법이다. 즉, 하루 분량의 데이터를 단일 배치 방식으로 처리한다.
스트리밍 수집을 사용하면 다른 애플리케이션이나 데이터베이스 또는 분석 시스템 등의 다운 스트림 시스템에 데이터를 실시간으로 연속해 제공할 수 있다. 여기서 실시간이란 데이터가 생성된지 얼마 지나지 않은 짧은 시간에 다운 스트림에 시스템에서 데이터를 사용할 수 있음을 의미한다.
→ 결국 데이터가 생성된 후 적재까지 빠르게 확인할 수 있으면 실시간인 것 같다!
배치 데이터는 미리 설정된 시간 간격에 따라, 또는 데이터가 미리 설정된 크기 임곗값에 도달하면 수집된다. 배치 수집은 한 방향으로만 이루어지며, 데이터가 배치로 분할되면 다운스트림 소비자의 지연 시간이 본질적으로 제한된다.
배치와 스트림 수집의 주요 고려 사항
- 스트리밍
- 다운스트림 스토리지 시스템이 데이터 흐름 속도를 처리할 수 있는가?
- 데이터 유실이 안되고!
- …
- 다운스트림 스토리지 시스템이 데이터 흐름 속도를 처리할 수 있는가?
스트리밍 우선 방식은 좋은 아이디어처럼 보일 수 있지만, 항상 간단하지 않으며 기본적으로 추가 비용과 복잡성이 발생한다. 수많은 좋은 수집 프레임워크는 배치 및 마이크로 배치 수집 스타일을 모두 처리한다.
배치 사용에 대한 트레이드오프를 정당화하는 비즈니스 사용 사례를 파악한 뒤에만 실시간 스트리밍을 채택하는 것이 좋다.
푸시 vs 풀
푸시 모델에서 원천 시스템은 데이터베이스, 객체 저장소 또는 파일 시스템과 관계없이 타깃에 데이터를 쓴다.
풀 모델에서는 원천 시스템에서 데이터를 검색한다.
2.1.5 데이터 변환
데이터를 수집하고 저장한 뒤에는 해당 데이터를 사용해 무언가 작업을 수행해야 한다. 즉, 데이터를 원래 형태에서 다운 스트림 사용 사례에 유용한 형태로 변경해야 한다. 적절한 변환이 이루어지지 않으면 데이터는 비활성 상태로 유지되며 보고서, 분석 또는 ML에 유용하지 않은 형식으로 남는다.
변환 단계에서의 주요 고려 사항
비즈니스 로직은 종종 데이터 모델링에서 데이터 변환의 주요 원인이다. 데이터는 비즈니스 로직을 재사용 가능한 요소로 변환하기 때문이다.
→ 원천 시스템에서의 데이터가 비즈니스에 활용되기 위해서 변환 작업을 수행!
2.1.6 데이터 서빙
데이터는 실용적인 목적으로 사용될 때 가치가 있다. 소비되지 않거나 쿼리되지 않는 데이터는 단순히 비활성 상태일 뿐이다.
→ 즉, 데이터는 사용되어야지 가치가 있기 때문에 이를 고려하자
BI(비즈니스 인텔리전스)가 존재하는 이유이다!
머신러닝
데이터 엔지니어는 ML에 익숙해야 할까? 그렇다면 확실히 도움이 된다! 데이터 엔지니어링, ML 엔지니어링, 비즈니스 분석 등의 운영 경계와 관계없이 데이터 엔지니어는 팀에 대한 운영 지식을 유지해야 하기 때문이다.
→ 효율적인 커뮤니케이션을 유지하고 협업을 촉진할 수 있기 때문
역 ETL
데이터 엔지니어링 수명 주기의 출력 측에서 처리한 데이터를 가져와 원천 시스템에 다시 공급하는 아키텍처이다.
기업이 Saas 및 외부 플랫폼에 점점 더 많이 의존하게 되면서 역 ETL은 특히 중요해지고 있다.
기업은 데이터 웨어하우스에서 고객 데이터 플랫폼 또는 CRM 시스템으로 특정한 측정 지표를 푸시할 수 있기 때문이다.
2.2 데이터 엔지니어링 수명 주기의 드러나지 않는 주요 요소
2.2.1 보안
데이터 엔지니어는 보안을 최우선으로 생각해야 하며, 이를 무시하는 사람은 위험을 감수해야 한다.
데이터 엔지니어는 데이터와 접근 보안을 모두 이해하고 최소 권한 원칙을 실행해야 한다.
최소 권한 원칙이란 사용자 또는 시스템이 의도된 기능을 수행하는 데 필수적인 데이터와 자원에만 접근할 수 있는 것을 의미한다. 모든 사용자에게 관리자 권한을 부여하는 것은 최악의 행위이다.
데이터 엔지니어는 보안이 자신들의 영역에 속하므로 유능한 보안 관리자여야 한다. 데이터 엔지니어는 클라우드와 온프레미스 환경 모두에 대한 보안 모벜 사례를 이해해야 한다. 사용자 및 ID 접근 관리(IAM)의 역할, 정책, 그룹, 네트워크 보안, 암호 정책, 암호화 등은 보안 관련 지식을 쌓기에 좋은 출발점이다.
2.2.2 데이터 관리
데이터 관리는 수명 주기 전체에 걸쳐 데이터와 정보 자산의 가치를 제공, 제어, 보호 및 향상할 계획, 정책, 프로그램과 사례를 개발, 실행 및 감독하는 것이다.
데이터 거버넌스는 무엇보다도 조직이 수집한 데이터의 품질, 무결성, 보안 및 사용성을 보장하기 위한 데이터 관리 기능이다. 적절한 보안 제어로 데이터를 보호하면서, 조직 전체의 데이터 가치를 극대화하기 위해 인력, 프로세스 및 기술을 활용한다고 할 수 있다.
메타데이터
메타데이터는 수명 주기 전체에 걸쳐 파이프라인을 설계하고, 데이터를 관리하는 기반이 된다.
- 비즈니스 메타데이터
- 비즈니스와 데이터 정의, 데이터 규칙과 로직, 데이터 사용 방법과 장소, 데이터 소유자 등 비즈니스에서 데이터가 사용되는 방식
- 기술 메타데이터
- 시스템이 생성하고 사용하는 데이터 의미
- 운영 메타데이터
- 다양한 시스템의 운영 결과를 설명하며 프로세스, 작업 ID, 로그 데이터
- 참조 메타데이터
- 다른 데이터를 분류하는 데 필요한 조회 데이터
데이터 통합과 상호 운용성
여러 도구와 프로세스 전반에 걸쳐 데이터를 통합하는 프로세스
데이터 통합은 맞춤형 데이터베이스 연결이 아닌 범용 API를 통해 이루어지는 경우가 늘고 있다.
- S3에 저장하고 Snoflake의 API를 호출해 테이블에 적재한 다음, API를 다시 호출해 쿼리를 실행한 뒤 결과를 S3로 내보내 스파크가 데이터를 소비할 수 있게하는 구조
2.2.3 데이터옵스
관찰 가능성과 모니터링
데이터와 데이터 생성 시스템을 관찰하고 감시하지 않으면 결국 자신만의 데이터 공포 상황에 맞닥뜨리게 . 될것이다. 관찰 가능성, 모니터링, 로깅, 경고 및 추적은 모두 데이터 엔지니어링 수명 주기에서 발생하는 문제에 대처하는 데 매우 중요하다.
2.2.5 오케스트레이션
오케스트레이션은 많은 작업이 예약된 순서대로 최대한 빠르고 효율적으로 실행되도록 조정하는 프로세스이다.
→ 오케스트레이션은 스케줄러와는 다른 개념으로, DAG 형태를 이용한 작업 종속성에 따라 메타데이터를 구축한다.
2.3 결론
과거 대부분의 데이터 엔지니어링 관련 논의는 기술에 관한 것이었지만, 데이터 수명 주기 관리에 대한 더 큰 그림은 놓치고 있었다. 기술이 점점 더 추상화되고 더 많은 작업이 진행됨에 따라 데이터 엔지니어는 그만큼 더 높은 수준에서 사고하고 행동할 기회를 얻게 됐다.
데이터 엔지니어는 수명 주기 전반에 걸쳐 ROI(투자수익률)를 최적화하고 비용을 절감하며 리스크(보안, 데이터 품질)를 줄이고 데이터 가치와 효용을 극대화하는 목표를 가진다.
'Book' 카테고리의 다른 글
[데이터 파이프라인 핵심 가이드] 1. 데이터 파이프라인(패턴) 소개 및 데이터 인프라 (1) | 2025.01.26 |
---|