본문 바로가기
0️⃣Algorithm&자료구조&codingTest/Book&Study

[견고한 데이터 엔지니어링] - 1장 데이터 엔지니어링 상세

by jyu_seo_ 2026. 1. 28.

1. 데이터 엔지니어링이란?

  • 데이터 엔지니어링에 관한 다양한 사람들의 정의들
  • 조직 내 다른 전문가가 데이터를 사용할 수 있도록 만드는 일련의 작업
    • 데이터 엔지니어는 조직의 데이터 인프라를 구축하고 운영해 데이터 분석가와 데이터 과학자가 추가 분석을 수행할 수 있도록 준비한다.
  • 데이터 엔지니어링의 유형은 SQL 중심 과 빅데이터 중심으로 나뉜다.
  • 데이터 엔지니어링 분야는 소프트웨어 엔지니어링에서 더 많은 요소를 가져오는 비즈니스 인텔리전스와 데이터 웨어하우징의 상위집합(superset)으로 '빅데이터' 분산 시스템 운영에 관한 전문화를 통합한다.
  • 데이터 엔지니어링은 데이터의 이동, 조작, 관리에 관한 모든것

1-1 데이터 엔지니어링 정의

  • 데이터 엔지니어링
    • 원시 데이터 (raw data)를 가져와 분석 및 ML 같은 다운스트림 사용 사례를 지원
    • 고품질의 일관된 정보를 생성하는 시스템과 프로세스를 개발, 구현, 및 유지관리하는 작업
    • 보안, 데이터 관리, 데이터 운영, 데이터 아키텍쳐, 오케스트레이션, 소프트웨어 엔지니어링의 교차점
  • 데이터 엔지니어(DE)
    • 데이터 엔지니어링의 수명주기를 관리한다.
    • 데이터 엔지니어링 수명 주기: 원천 시스템에서 데이터를 가져와 분석 or ML 사용사례에 데이터를 제공하는 과정

1-2 데이터 엔지니어링 수명 주기

  • 데이터 엔지니어링 수명 주기(data engineering lifecycle)
    • 데이터 자체와 데이터가 제공해야 하는 최종 목표

 

  • 데이터 엔지니어링 수명 주기 단계
      1. 데이터 생성(generation)
      2. 데이터 저장(storage)
      3. 데이터 수집(ingestion)
      4. 데이터 변환(transformation)
      5. 데이터 서빙(serving)
  • 데이터 엔지니어링의 드러나지 않는 요소(undercurrent)
    • 보안
    • 데이터 관리
    • 데이터 옵스
    • 데이터 아키텍처
    • 오케스트레이션
    • 소프트웨어 엔지니어링

1-3 데이터 엔지니어의 진화

  • 1980 - 2000년 : 데이터 웨어하우징에서 웹으로
    • 비즈니스 데이터 웨어하우스(business data warehouse)와 데이터 웨어하우스(data warehouse) 용어의 출현
    • 데이터 웨어하우징(DW): 시장에서 발생하는 대량 데이터를 처리하고 지원하는 시스템
    • 다수의 프로세서를 사용하는 대규모 병렬 처리 데이터베이스(MPP) 출현으로 확장성 있는 분석을 가능케 함
    • 데이터 웨어하우스와 BI(Business Intelligence)엔지니어링은 오늘날의 데이터 엔지니어링의 선구자격
  • 2000s : 현대 데이터 엔지니어링의 탄생
    • 90s 까지 전통적 모놀리식 RDBMS와 DW는 시스템적 한계사항까지 도달
      • 차세대 시스템은 비용효율적, 확장성과 가용성, 안정성을 갖춰야 했음.
    • 대규모 컴퓨터 클러스터의 출현으로 분산 연산과 분산 저장이 가능케됨 -> 빅데이터 시대의 도래
    • 빅데이터 : 데이터의 3V (속도 velocity, 다양성 variety, 크기 volume) 특징을 띈 대규모 데이터
    • 아마존의 출현
      • 아마존 웹서비스(AWS)가 외부 서비스로 오픈되면서 퍼블릭 클라우드 서비스가 출현함
      • 가상 하드웨어의 대여함으로써 기업들의 하드웨어, 소프트웨어 관리 리소스를 줄여줌
  • 2000 - 2010s : 빅데이터 엔지니어링
    • 하둡, 오픈소스 빅데이터 도구의 성숙으로 대부분 기업은 최고 수준의 기술업체와 동일한 최첨단 데이터 도구에 접근이 가능해짐
    • 배치 컴퓨팅에서 이벤트 스트리밍으로의 전환 혁신이 발생함 (일/시간 단위의 비실시간성 -> 실시간 분석으로 변경)
    • 빅데이터 엔지니어 (big data engineer)의 탄생
      • 대규모 데이터 제공을 위해 상용 하드웨어의 대규모 클러스터를 유지 관리
      • 데이터 도구의 폭발적 증가가 영향을 미침
      • 코드 우선(code - first) 엔지니어링의 유행
      • 빅데이터에 대한 이해도가 낮아 작은 데이터 문제에도 하둡 클러스터 등 빅데이터 도구를 사용하는 경우들이 발생
      • 빅데이터 엔지니어는 복잡한 도구 유지, 관리에 큰 시간을 들이면서도 비즈니스의 통찰력과 가치를 파악하는데엔 장점을 발휘하지 못함
    • 단순화(simplification)로의 회귀
      • 개발자들과 업체들은 빅데이터를 추상화하고 단순화하면서도 사용 가능한 방법을 찾기 시작함
      • 대부분 회사들은 더이상 데이터의 사이즈에 집착하지 않고 데이터 자체를 분석해 문제를 해결하는걸 목표로 함
    • 2020s : 데이터 수명 주기를 위한 엔지니어링
      • 데이터 엔지니어는 기존 모놀리식 프레임워크(저수준 세부 정보) 툴에서 분산/모듈/관리/추상화 도구로 이동시키고 있다.
      • 모던 데이터 스택(modern data stack): 상용 오픈 소스들 및 서드 파티 제품들의 모음
      • 데이터 엔지니어링궁극적 비즈니스 목표를 달성하기 위해 다양한 기술을 조립하고 연결하는 상호 응용 분야로 발전하고 있음.
      • 과거와 비교해 다양한 데이터 툴들이 태동하고 있으며, 데이터 엔지니어들은 이를 회사 환경에 맞게 조립하고 연결하여 사용하고 있음.
      • 데이터 수명 주기 엔지니어(data lifecycle engineer)의 출현
        • 추상화와 단순화를 통해 세부사항에 큰 신경을 쓰지 않게 됨
        • 여전히 저수준 데이터 프로그래밍 기술을 유지하고 사용할 능력이 있어야 하지만 예전에 비해 많은 시간을 들이지 않게 됨.
        • 대신 보안, 데이터 관리, 데이터 옵스, 데이터 아키텍쳐, 오케스트레이션 및 일반 데이터 수명 주기 관리 등 가치 사슬의 상위 영역까지로 역할이 확대됨
      • 데이터 엔지니어의 태도 변화
        • 과거에는 "가장 큰 데이터"를 잘 보유하고 관리하는 것이 목표
        • 현재는 오픈소스 프로젝트와 서비스 데이터 관리 및 통제, 사용 및 발견의 용이성, 데이터 품질 향상에 큰 관심을 기울이고 있음
        • 파이프라인 설계 시 개인정보보호, 익명화, 데이터 가비지 수집 및 규정 준수에도 큰 관심과 고민을 가짐

1-4 데이터 엔지니어링과 데이터 과학

  • 데이터 엔지니어링은 데이터 과학의 업스트림(상위역할)
    • 데이터 엔지니어는 데이터 과학자가 사용할 데이터를 제공하며, 데이터 과학자는 데이터를 유용한 결과로 변환하게 됨
    • 데이터 엔지니어와 데이터 과학 및 분석은 별개의 역할
    • 서로를 보완하지만 다른 개념으로 바라봐야 함  
  • 데이터 과학 욕구 단계를 통해 데이터 엔지니어의 출현 이유를 살펴볼 수 있다.

  • 기존 데이터 과학자(DS)는 ML모델 구축 및 튜닝에 집중하고 싶지만, 실제론 70~80%의 시간을 계층 구조의 하위 부분(데이터 수집, 정리, 처리)에 시간을 사용하는것으로 추정된다.
  • DS는 상용 제품 수준의 데이터 시스템을 처리하는 엔지니어링 훈련을 받는 경우가 적은데도 전처리 작업을 수행해야 하는 경우가 많다.
  • 이상적 환경에서 DS는 분석, 실험 및 ML 튜닝같은 피라미드 최상위 계층에 90% 이상 시간을 할애해야 한다.
  • DE가 계층구조 최하단 작업에 집중한다면 DS가 더 의미있는 활동 할수 있도록 지원할수 있을것이다.

2. 데이터 엔지니어링 기술과 활동

  • 데이터 엔지니어링에 요구되는 기술역량(skill set)
    • 데이터 도구들을 평가하는 방법
    • 데이터 엔지니어링 수명 주기 전반에 도구들이 어떻게 조합되는지에 대한 이해도
    • 원천 시스템에서 데이터가 어떻게 생성되는지에 대한 파악
    • 가변적 요소를 처리하고 비용,민첩성,확장성,단순성,재사용성,상호 운용성을 비교하며 최적화를 수행
    • 여러 단순하고 추상화된 데이터 도구들을 조합해 민첩한 데이터 아키텍처를 구축할 수 있는 능력
    • 기존 이해 관계자의 주업무를 이해해서 적절한 기능적 이해를 통해 최선의 시스템을 제공

2-1 데이터 성숙도와 데이터 엔지니어

  • 데이터 성숙도(data maturity): 조직 전체에 걸쳐 더 높은 데이터 활용률(utilization), 기능(capability), 통합(integration)을 통해 나아가는 과정
    • 데이터 성숙도는 기업의 규모와는 상관없이 기업이 데이터 경쟁 우위를 얼마나 중요시 하는지로 결정됨
  • 이 책에서는 데이터 성숙도 모델 (DMM, data management maturity)을 단순화해 아래 3단계로 표현한다.

1. 데이터 시작하기

2. 데이터 확장하기

3. 데이터 선호하기

 

1단계: 데이터 시작하기

데이터를 시작하는 기업이 있는 단계

  • 데이터 엔지니어는 DS나 소프트웨어 엔지니어 등 여러가지 모두를 수행하는 제너럴리스트임
  • 목표는 빠르게 움직여서 견인력을 얻고 부가가치를 창출하는 것
  • 시작단계부터 ML에 뛰어드는 것은 비추함
  • DE는 아래 사항에 중점을 둬야함
    • 기업의 목표를 지원하는 데이터 아키텍처를 정의하고 설계
    • 데이터 아키텍처 내에서 작동할 데이터를 확인하고 검수
    • 견고한 데이터 기반을 구축
  • 데이터 시작하기 단계의 DE에게 주는 팁
    • 기술 부채를 줄일 계획을 세워야 함
    • 내부에서만 작업하지말고 다른 부서 사람들과도 대화를 해라
    • 역할을 관련없는 과중한 업무를 감당하지 마라
    • 불필요한 기술 복잡성에 얽매이지 마라
    • 경쟁 우위를 창출할 수 있는 경우만 맞춤형 솔루션과 코드를 구현하라

2단계: 데이터 확장하기

어느정도 프로세스를 갖춘 기업으로 임시적으로 데이터 요청을 하지 않고 공식적인 데이터 요청 관행 프로세스가 존재하는 기업

  • 확장성 있는 데이터 아키텍처 구축 및 데이터 중심의 기업으로의 도모를 계획해야 함
  • DE의 목표
    • 공식적 데이터 관행 수립
    • 확장성 있고 견고한 데이터 아키텍처 구축
    • 데브옵스 및 데이터옵스 관행 채택
    • ML 지원 시스템 구축
    • 과중한 업무를 피하고 경쟁우위를 확보할 때만 커스터마이징 
  • DE가 살펴볼 문제점들
    • 모든 기술적 의사결정은 고객에게 제공되는 가치에 따라 판단되야 한다.
      • 무조건 최첨단 기술이라고 좋은게 아니다. 최첨단 기술은 들이는 시간과 에너지에 비해 좋은 output이 나오지 못할 가능성이 있다.
    • 팀의 처리량 확장을 위해서는 배포와 관리가 쉬운 솔루션에 집중해야한다.
    • 데이터의 실질적 유용성에 대해 다른팀과 소통하고 타 팀에 데이터 사용과 활용법에 대한 교육이 필요함.

3단계: 데이터 선호하기

데이터 중심의 기업으로 DE의 자동화된 파이프라인과 시스템으로 직원들은 셀프 서비스 분석과 ML 수행이 가능함

  • DE의 작업 목표
    • 이전 단계 목표점들을 계속해서 고도화하고 구축함
    • 새로운 데이터의 매끄러운 배포와 사용을 위한 자동화 구축
    • 데이터 관리 및 데이터 옵스 등 데이터의 "기업적" 측면에 집중
      • 데이터 관리에는 데이터 거버넌스와 품질 관리도 포함됨
    • 데이터 카탈로그, 데이터 계보 도구(data lineage), 메타데이터 관리 시스템을 포함해 데이터를 조직 전체에 노출하고 전파하는 도구를 배포
    • ML 엔지니어, 데이터 분석가, 소프트웨어 엔지니어 등과 효율적인 협업
    • 사람들과 협업하고 토론할수 있는 커뮤니티 환경 구축
  • DE가 살펴볼 문제점들
    • 현재 상태에 안주하지 마라. 항상 유지보수 및 개선에 집중해야한다 집중
    • 통일되지 않은 기술의 산만함은 오히려 위협요소이다. 경쟁 우위를 제공하는 경우에만 직접 구축한 기술을 활용해라.

2-2 데이터 엔지니어의 배경과 기술

DE는 데이터와 기술 모두를 이해해야 한다.

  • 데이터 측면에선 데이터 관리의 다양한 모범사례를 이해
  • 기술 측면에선 데이터 엔지니어가 사용할 도구들의 다양한 옵션, 상호작용과 상충관계를 이해해야 함
    • 소프트웨어 엔지니어링, 데이터 옵스, 데이터 아키텍처에 대한 이해 필요

2-3 비즈니스 책임

거시적 책임은 데이터 엔지니어 뿐만 아니라 데이터와 기술 분야 모든 종사자들에게 중요한 문제다.

  • 비 기술자 및 기술자와의 커뮤니케이션 방법
    • 커뮤니케이션이 핵심
  • 비즈니스 요건과 제품 요건을 살펴보고 수집하는 방법 이해
    • 구축할 방향을 파악하고 이해관계자가 이에 동의하는지 확인
  • 애자일,데브옵스,데이터옵스 문화에 대한 이해
  • 비용 관리
    • 최대한 절감된 비용으로 동일한 가치를 누리도록
  • 지속적 학습
    • 흐름에 뒤쳐지지 않고 학습할 필요성

성공적인 DE는 전체의 큰 그림을 이해하고 비즈니스 가치를 극대화할 방법을 파악해야 한다.

  • 데이터 팀은 다른 이해관계자와 커뮤니케이션을 바탕으로 성공하는 경우가 많다.
  • 기술만으로 성공하는 경우는 거의 없다.

2-4 기술 책임

  • 성능과 비용을 효율적으로 최적화하는 아키텍처 구축방법을 이해해야 한다.
  • 아키텍처와 구성 기술은 데이터엔지니어링 수명주기를 지원하는 구성요소임
  • 데이터 엔지니어는 상용 제품 수준의 소프트웨어 엔지니어링 기술을 가져야 함
  • 코드베이스의 상세한 아키텍처를 깊게 들여다 볼수 있는 기술을 가지는게 필요
    • 특정 기술 요구 사항 발생시 기업에 기술적 우위 제공할 수 있음.
    • 실제 상용 제품 수준 코드를 작성할 능력이 없으면 어려움을 겪을 것
    • SQL, 파이썬, 자바, 스칼라, JVM(자바가상머신), 배시 등에 대한 이해가 필요
    • R, JS, 고, 러스트, C/C++, 줄리아 등 보조적인 프로그래밍 언어에 대한 이해가 필요할수 있음 (기업의 주 언어에 따라 달라짐)
    • 유능한 데이터 엔지니어는 SQL에 매우 익숙해져야함.
      • 스파크,프랑크 등 프레임 워크 내에서나 오케스트레이션을 통한 여러 도구 결합이 발생할 경우, SQL을 다른 작업과 함께 구성하는데 필요한 전문 지식 습득이 필요함
      • 숙련된 경우 SQL이 작업에 적합하지 않은 케이스들을 인식할 시, 적절한 대안을 제시하고 코드화 할 수 있음.
    • 기본에 충실하면서도 분야의 변화 방향을 빠르게 캐치해야 함
      • 지속적인 개발에 관심을 기울여야 함
      • 새로운 기술이 데이터 엔지니어링 수명 주기에 어떤 도움을 줄 수 있는지 이해할 필요가 있음

2-5 A에서 B로 이어지는 데이터 엔지니어링 역할의 연속성

  • 기업의 데이터 성숙도에 따라 데이터엔지니어는 두가지 유형으로 나뉜다.
    • 1. A형 데이터 엔지니어(Abstraction, 추상화)
      • 데이터 아키텍처를 최대한 추상적이고 단순하게 유지해 시간 낭비를 피함
      • 과중한 작업을 피하고 기성제품,관리형 서비스와 도구들을 이용해 데이터 엔지니어링 수명 주기를 관리
      • 보통 데이터 성숙도 수준과 상관 없이 산업 전반에 걸쳐 다양한 회사에서 근무
    • 2. B형 데이터 엔지니어 (Build, 구축)
      • 기업의 핵심 역량과 경쟁 우위를 확장
      • 활용할 데이터 도구와 시스템을 구축
      • 보통 2단계나 3단계 회사에서 근무하거나 초기 데이터가 독특해서 맞춤형 데이터 도구가 필요한 회사에서 근무
    • 보통 A형 데이터엔지니어가 기반 확립을 위해 먼저 채용되고, B형 데이터 엔지니어는 후에 사내에서 교육하거나 인재를 고용함
      • 두 유형의 인재가 모두 같은 사람일수도 있음.

3. 조직 내 데이터 엔지니어

3-1 내부 VS 외부 대면 데이터 엔지니어

  • 서비스 사용 사례에 따라 데이터엔지니어 주요 업무는 다음과 같이 나뉜다.
  • 1. 외부 대면
  • 2. 내부 대면
  • 3. 혼합형

1. 외부 대면 데이터엔지니어(external-facing)

  • 외부용 애플리케이션 사용자와 연계함.
    • 보통 loT, SNS, E-commerce 플랫폼 사용자
  • 애플리케이션 발생 트랜잭션 및 이벤트 데이터를 수집,저장,처리 시스템을 설계,구축,관리함

  • 외부 대면 DE가 구축한 시스템은 애플리케이션과 데이터 파이프라인간 피드백 루프를 가짐
  • 외부 대면 시스템의 이슈
    • 내부 대면 시스템보다 훨씬 더 큰 동시성 부하를 처리하는 경우가 많다.
    • 외부대면 DE는 사용자가 실행할 수 있는 쿼리에 훨씬 엄격한 제한을 둬서 사용자가 인프라에 미치는 영향을 최소화 해야 한다.
      • 쿼리되는 데이터가 많은 고객 데이터가 단일 테이블에 저장되는 멀티테넌트(multitenant) 경우는 더 신경써야함.

2. 내부 대면 데이터 엔지니어(internal-facing)

  • 비즈니스 및 내부 이해관계자 요구사항에 집중
    • BI 대시보드, 보고서, 비즈니스 프로세스, 데이터 과학, ML 모델용 데이터 파이프라인(ETL), DW생성 및 유지 보수 등이 포함 
  • 외부 대면 업무와 내부 대면 업무는 혼합될 수 있음
    • 내부 대면 데이터는 일반적으로 외부 대면 데이터의 근간(raw data)임.

3-2 데이터 엔지니어와 기타 기술 역할

  • 데이터 엔지니어는 데이터 생산자(data producer)와 데이터 소비자(data consumer) 사이의 허브 역활
  • 1. 데이터 생산자(업스트림 이해 관계자)
    • 1. 소프트웨어 엔지니어
    • 2. 데이터 아키텍트
    • 3. 데브옵스 엔지니어 or 사이트 신뢰성 엔지니어(SRE)
  • 2. 데이터 소비자(다운스트림 이해관계자)
    • 1. 데이터 분석가
    • 2. 데이터 과학자
    • 3. ML 엔지니어

3-3 데이터 엔지니어와 비즈니스 리더쉽

  • 기업 내 최고 경영진, 그리고 타직군과 데이터 간 관계를 설명한 챕터
  • 최고경영진 부류
    • 최고경영자(CEO)
    • 최고 정보 책임자(CIO)
    • 최고 기술 책임자(CTO)
    • 최고 데이터 책임자(CDO)
    • 최고 분석 책임자(CAO)
    • 최고 알고리즘 책임자 (CAO-2)
  • 그외 직군과의 소통
    • 프로젝트 매니저
    • 제품관리자
    • 기타 관리 역할