[견고한 데이터 엔지니어링] 01장

book-cover

[견고한 데이터 엔지니어링] 1장. 데이터 엔지니어링이란 무엇인가?

읽은 책: Fundamentals of Data Engineering (Joe Reis, Matt Housley)
목표: 데이터 엔지니어링의 정의와 데이터 엔지니어의 역할, 데이터 엔지니어링 생애주기를 큰 그림으로 잡기


0. 이 장이 던지는 질문

데이터 엔지니어링이라는 직군은 최근에 생겨난 것처럼 느껴지지만,
사실 데이터가 존재하는 순간부터 누군가는 항상 데이터를 “쓸 수 있는 형태로 만드는” 일을 해왔다.

이 장의 핵심 질문은 이거다:

  • 데이터 엔지니어링이란 정확히 무엇인가?
  • 데이터 엔지니어는 다른 직군(데이터 과학자, 데이터 분석가)과 어떻게 다른가?
  • 데이터 엔지니어에게 요구되는 비즈니스/기술 역량은 무엇인가?
  • 조직의 데이터 성숙도에 따라 데이터 엔지니어의 역할은 어떻게 달라지는가?

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

책에서 제시하는 정의:

“데이터 엔지니어링은 원시 데이터를 고품질의 일관된 정보로 변환하는 시스템과 프로세스를 개발, 구현, 유지보수하는 것이다.”

핵심 키워드를 정리하면:

  • 원시 데이터(Raw Data): 저장된 그대로의, 정제되지 않은 데이터
  • 고품질·일관된 정보: 다운스트림(분석, ML 등)에서 실제로 활용 가능한 형태
  • 시스템과 프로세스: 단발성 작업이 아닌, 재현 가능하고 안정적인 파이프라인

중요 포인트:

  • 데이터 엔지니어링은 “데이터 과학을 위한 준비 작업”에 그치지 않는다.
  • 비즈니스 가치를 만들어 내는 독립적인 엔지니어링 분야다.

2. 데이터 엔지니어 vs 데이터 과학자

많은 사람이 두 직군을 혼동하지만, 책은 명확하게 구분한다.

구분 데이터 엔지니어 데이터 과학자
주된 관심사 데이터 수집·이동·저장·변환 데이터 분석·모델링·예측
산출물 데이터 파이프라인, 데이터 플랫폼 인사이트, ML 모델
핵심 역량 시스템 설계, 분산 처리, 데이터 아키텍처 통계, ML, 도메인 지식
주요 질문 “어떻게 데이터를 안정적으로 전달할까?” “데이터에서 무엇을 발견할 수 있나?”

개인 메모: 현실에서 두 역할이 겹치는 경우가 많지만,
조직이 성숙할수록 분리된다. 데이터 엔지니어 없이는 데이터 과학자도 일하기 어렵다.


3. 데이터 엔지니어링 생애주기(Data Engineering Lifecycle)

이 책의 핵심 프레임워크다. 데이터가 소스에서 최종 소비까지 거치는 5단계를 정의한다.

생성(Generation) → 저장(Storage) → 수집(Ingestion) → 변환(Transformation) → 서빙(Serving)

3.1 생성(Generation)

  • 소스 시스템에서 데이터가 만들어지는 단계
  • 애플리케이션 DB, IoT 디바이스, 로그, 서드파티 API 등
  • 데이터 엔지니어가 직접 제어하기 어렵지만, 소스 데이터의 특성을 이해해야 한다.

3.2 저장(Storage)

  • 데이터를 어디에, 어떻게 저장할 것인가
  • 오브젝트 스토리지(S3 등), 데이터 레이크, 데이터 웨어하우스, RDBMS 등
  • “저장”은 단순히 쌓는 것이 아니라 접근 빈도, 비용, 쿼리 패턴을 고려한 설계다.

3.3 수집(Ingestion)

  • 소스 시스템에서 데이터를 가져오는 단계
  • 배치(Batch) vs 스트리밍(Streaming) 방식 선택이 핵심
  • 신뢰성과 장애 복구 능력도 설계에 포함돼야 한다.

3.4 변환(Transformation)

  • 원시 데이터를 분석/ML에 적합한 형태로 가공하는 단계
  • 정제, 집계, 조인, 비즈니스 로직 적용 등
  • 데이터 품질과 일관성을 여기서 보장해야 한다.

3.5 서빙(Serving)

  • 최종 소비자(분석가, 데이터 과학자, 애플리케이션)에게 데이터를 제공하는 단계
  • BI 대시보드, ML 피처 스토어, 사용자 facing API 등
  • 다운스트림 사용자가 실제로 쓸 수 있어야 한다는 게 핵심이다.

개인 메모: 생애주기를 이해하면 “나는 전체 흐름의 어느 부분을 담당하는가”를 명확히 알 수 있다.
파이프라인 하나가 터졌을 때 어디부터 봐야 하는지도 빨라진다.


4. 데이터 성숙도(Data Maturity)와 엔지니어의 역할

조직마다 데이터 활용 수준이 다르다.
책은 이를 3단계 성숙도로 구분하고, 각 단계에서 데이터 엔지니어의 역할이 다름을 강조한다.

4.1 1단계: 데이터로 시작하기(Starting with Data)

  • 데이터 인프라가 거의 없는 초기 단계
  • 데이터 엔지니어가 전체를 혼자 다 해야 하는 경우가 많음
  • 우선순위: 빠른 가치 증명, 너무 이른 아키텍처 복잡화는 금물

4.2 2단계: 데이터로 확장하기(Scaling with Data)

  • 데이터 인프라가 갖춰지기 시작하고, 팀이 성장하는 단계
  • 공식적인 데이터 파이프라인, 데이터 웨어하우스 도입이 시작됨
  • 데이터 품질, 거버넌스 이슈가 수면 위로 올라온다.

4.3 3단계: 데이터로 선도하기(Leading with Data)

  • 데이터가 비즈니스 의사결정의 핵심 자산인 단계
  • 셀프서비스 분석, ML 기반 의사결정, 실시간 데이터가 일상화
  • 데이터 엔지니어는 플랫폼/아키텍처 수준의 역할을 담당

개인 메모: 대부분의 스타트업은 1~2단계 사이 어딘가에 있다.
현 단계보다 과도한 아키텍처는 오히려 독이 된다. 성숙도에 맞는 선택이 중요하다.


5. 데이터 엔지니어에게 요구되는 역량

5.1 비즈니스 역량

  • 비용과 가치의 균형을 이해한다.
  • 다운스트림 사용자(분석가, 데이터 과학자, 비즈니스)의 요구를 파악한다.
  • “기술적으로 가능한 것”이 아닌 “비즈니스에 가치 있는 것”을 우선한다.
  • 커뮤니케이션과 협업 능력이 핵심이다.

5.2 기술 역량

  • 데이터 아키텍처 설계: 시스템 간 데이터 흐름과 저장 전략 이해
  • 소프트웨어 엔지니어링: 코딩, 테스트, 버전 관리, CI/CD
  • 데이터 파이프라인 운영: 배치/스트리밍, 오케스트레이션(Airflow 등)
  • 클라우드 플랫폼: AWS, GCP, Azure의 데이터 서비스 활용
  • 데이터 품질·거버넌스: 데이터 신뢰성과 메타데이터 관리

개인 메모: 기술 역량 목록이 방대하게 느껴지지만,
결국 “데이터가 어디서 와서 어디로 가는가”를 이해하는 게 가장 기본이다.


6. 데이터 엔지니어링의 “언디커런트(Undercurrent)”

책이 생애주기 외에 강조하는 횡단 관심사(cross-cutting concerns):

  • 보안(Security): 접근 제어, 암호화, 민감 데이터 처리
  • 데이터 관리(Data Management): 데이터 카탈로그, 계보(Lineage), 품질 관리
  • 데이터옵스(DataOps): 파이프라인의 운영 자동화, 모니터링, 장애 대응
  • 데이터 아키텍처(Data Architecture): 시스템 전체의 설계 원칙
  • 오케스트레이션(Orchestration): 파이프라인 의존성·스케줄링 관리
  • 소프트웨어 엔지니어링(Software Engineering): 코드 품질과 테스트 가능성

이 언디커런트들은 생애주기의 특정 단계에 국한되지 않고 전체에 걸쳐 적용된다.


7. 이 장의 결론: 데이터 엔지니어링의 큰 그림

정리하면:

  1. 데이터 엔지니어링은 원시 데이터를 쓸 수 있는 정보로 만드는 시스템과 프로세스 전체다.
  2. 생애주기는 생성 → 저장 → 수집 → 변환 → 서빙의 5단계다.
  3. 데이터 성숙도에 따라 엔지니어의 역할과 집중해야 할 아키텍처 복잡도가 달라진다.
  4. 비즈니스 역량기술 역량을 모두 갖춰야 진짜 데이터 엔지니어다.
  5. 생애주기 전반에 걸친 언디커런트(보안, 거버넌스, DataOps 등)을 놓치면 안 된다.

8. 내가 적용해볼 체크리스트

  • 현재 내가 담당하는 데이터 파이프라인이 생애주기의 어느 단계에 걸쳐 있는지 설명할 수 있나?
  • 우리 조직의 데이터 성숙도 단계는 어디인가? 현 단계에 맞는 아키텍처를 쓰고 있나?
  • 데이터 소스의 특성(변경 빈도, 볼륨, 스키마)을 문서화하고 있나?
  • 파이프라인 장애 시 탐지·복구 프로세스가 정의돼 있나?
  • 다운스트림 사용자가 데이터를 어떻게 쓰는지 파악하고 있나?

9. 한 줄 요약(5줄)

  • 데이터 엔지니어링은 원시 데이터를 고품질 정보로 만드는 시스템과 프로세스 전체다.
  • 데이터 엔지니어링 생애주기는 생성·저장·수집·변환·서빙의 5단계로 구성된다.
  • 조직의 데이터 성숙도에 따라 엔지니어가 집중해야 할 역할과 아키텍처가 달라진다.
  • 비즈니스 이해와 기술 역량을 함께 갖춰야 한다.
  • 보안, 거버넌스, DataOps 등의 언디커런트는 생애주기 전체에 걸쳐 적용돼야 한다.

Leave a comment