포스트

견고한 데이터 엔지니어링 Part 2 & Part 3

견데엔 리뷰

견고한 데이터 엔지니어링 Part 2 & Part 3

Part 2

데이터 엔지니어링 수명 주기 심층 분석 리뷰

이번 파트는 지난 2장에서 설명한 데이터 엔지니어링 수명주기에 대한 내용이다. 전에서는 전체적인 큰 그림이 이렇다 설명하는 것이었다면 이번에는 각 세부 단계에서 중요한 요소들과 주의할 점 등을 자세하게 소개하고 있다.


5장 1단계: 원천 시스템에서의 데이터 생성

데이터 생성 단계에서는 원천 시스템이 어떤 종류가 있는지부터 살펴본다. 대표적으로 운영 데이터베이스(OLTP)가 있는데, 이 시스템은 ACID 원칙을 준수하는 데이터베이스를 사용한다는 점이 강조된다. 반면, 분석을 위한 데이터베이스인 OLAP의 개념도 함께 다루며, 두 시스템의 차이점을 비교해볼 수 있었다.

또한, 데이터 생성의 예시로 CDC(Change Data Capture)나 로그 데이터 등이 어떻게 초기 데이터로 활용될 수 있는지도 설명한다. 이 데이터들이 메시지나 스트림 형태로 전달되는 방식 역시 중요한 개념으로 다뤄졌다.

결국 데이터는 다양한 방식으로 원천 시스템에서 생성되며, 이러한 특성을 충분히 이해한 뒤에 다음 단계인 데이터 저장 방식을 어떻게 설계할지 고민해야한다.


6장 2단계: 데이터 저장

이번 장에서는 데이터 저장 단계, 특히 데이터 스토리지 시스템의 구조와 특징에 대해 심도 있게 다루었다.
스토리지 시스템은 단일 머신과 분산 스토리지로 나뉘며 각각 확장성과 내구성 측면에서 차이가 있음을 알 수 있었다.

분산 스토리지에서는 데이터 일관성을 어떻게 보장할 것인지가 중요하다. 최종 일관성과 강력한 일관성의 개념을 비교하며 실제로는 최종 일관성을 기본으로 하되 필요에 따라 강력한 일관성을 옵션으로 제공하는 경우가 많다는 점이 중요한 내용이었다.

더하여 데이터 엔지니어링 스토리지 개념으로 데이터 웨어하우스, 데이터 레이크, 데이터 레이크하우스, 데이터 플랫폼의 개념을 설명한다. 그중에서도 데이터 레이크하우스, 데이터 플랫폼은 현대의 다양한 데이터 소스를 처리하고 통합 관리하는 환경이다. 해당 사용 기술 방식을 중점적으로 학습할 필요가 있다고 느꼈다.

이외에도 데이터 리니지와 관계 표현을 통한 데이터 카탈로그, 물리적 이관이 필요하지 않은 데이터 공유, 스토리지 수명 주기와 데이터 보존에 대한 이야기를 하며 저장된 데이터를 어떻게 관리할지에 대한 설명도 자세하게 나와있었다.


7장 3단계: 데이터 수집

데이터 수집은 데이터 엔지니어링 수명 주기에서 저장 단계와 밀접하게 연결되어 있으며, 실제로 데이터 엔지니어링의 핵심적인 역할을 담당한다.
이 단계에서는 데이터 파이프라인의 정의, 유한/무한 데이터, 배치/실시간/마이크로배치, 동기/비동기 수집, 직렬화와 역직렬화, 처리량과 확장성, 신뢰성과 내구성, 페이로드(종류, 형태, 크기, 스키마, 메타데이터), 스키마 변경 검출 및 처리, 푸시/풀/폴링 패턴 등 수집시의 다양한 엔지니어링 고려사항을 다룬다.

이후에는 데이터 수집 방법에 대한 구체적인 내용을 설명한다. 직접 데이터베이스에 연결하거나 변경 데이터 캡쳐, API, 데이터 커넥터 등을 활용한다.

핵심은 데이터의 특성과 비즈니스 요구에 따라 적합한 수집 방식을 선택하고, 신뢰성·확장성·유지보수성을 고려해 파이프라인을 설계하는 것이다.


8장 4단계: 쿼리 모델링과 데이터 변환

이렇게 설계된 파이프라인을 바탕으로 데이터를 조회하거나, 변경하거나, 변환하는 작업을 거치게 된다. 그에 대한 설명이 이번 장에 잘 나타나있다. 쿼리의 기본 개념부터 성능 최적화, 스트리밍 데이터 쿼리, 그리고 데이터 모델링 기법까지 실제 데이터 엔지니어링 실무에서 마주치는 다양한 이슈와 해결책을 폭넓게 설명한다.

주요하게 살펴본 내용으로는 다음과 같다.

  1. 쿼리 성능 향상을 위한 다양한 방법
    • 조인 전략, 스키마 최적화, CTE 활용 등 쿼리 성능을 높이기 위한 다양한 방법을 소개한다.
    • 실행 계획(EXPLAIN) 분석, 전체 테이블 스캔 방지, 커밋 처리 방식(ACID, 스냅숏 등), 데드 레코드 정리(베큠), 캐시 활용 등 실무에서 자주 쓰이는 최적화 기법을 구체적으로 다룬다.
    • DBMS별 커밋 처리 방식(PostgreSQL, BigQuery, MongoDB 등)의 차이와 그에 따른 쿼리 동작 특성을 비교한다.
  2. 스트리밍 데이터 쿼리
    • CDC, 패스트 팔로워, 카파 아키텍처 등 스트리밍 환경에서의 쿼리 패턴을 설명한다.
    • 윈도우, 트리거, 워터마크 등 실시간 데이터 처리에서 중요한 개념과, 스트림-테이블/스트림-스트림 조인 등 다양한 결합 방식의 특징과 한계를 정리한다.
  3. 분석 데이터 모델링 기법
    • 배치 데이터 모델링: 인먼(정규화 중심, ER 모델), 킴벌(비정규화, 스타 스키마), 데이터 볼트(허브/링크/위성 구조), 와이드 테이블(비정규화, 컬럼 기반) 등 대표적인 데이터 모델링 방법론을 비교한다.
    • 스트리밍 데이터 모델링: 스트리밍 데이터의 특성(무한, 반정형, 스키마 변화)에 따라 기존 배치 모델링 기법의 한계와, 데이터 볼트 등 대안적 모델링 방법을 소개한다.
    • 원천 시스템의 데이터 품질과 비즈니스 로직 정의의 중요성을 강조하며, 실시간 데이터 환경에서 모델링 전략이 어떻게 변화하는지 전망한다.
  4. 배치 변환 방식
    • 논리적 조인을 클러스터 내 개별 서버에서 실행되는 훨씬 작은 노드조인으로 분할하는 분산 조인 방식에 대해서 설명한다.
    • ETL, ELT와 같은 데이터 파이프라인 방식에 대해서 설명한다
    • SQL과 코드 기반 변환 도구를 적절히 활용하는 방법도 설명한다.

8장에서는 쿼리 성능 향상을 위한 다양한 방법, 분석 데이터 모델링 기법, 그리고 배치 변환 방식을 실제 사례와 함께 폭넓게 다루었다.
결국 데이터 엔지니어는 데이터의 특성과 비즈니스 요구에 따라 적합한 쿼리 및 변환 전략을 선택하고, 변화하는 환경에 유연하게 대응할 수 있어야 한다는 점이 주요 요지였다.


9장 5단계: 분석, 머신러닝 및 역 ETL을 위한 데이터 서빙

해당 파트의 가장 마지막 단계인 데이터 서빙이다. 결국 데이터는 어떻게 활용하기 나름인 것이므로, 해당 개념은 데이터 엔지니어링 외의 다른 영역과 어떻게 일할 것인지에 대한 내용이다.

어쩌면 너무 당연한 내용이지만 신뢰를 기반으로 데이터를 사용하므로 품질관리, 검증, 관찰 가능성과 같은 부가적인 요소가 중요하게 다뤄진다. 함께 사용하기 위해서 데이터 메시와 같은 개념을 설명한다. 이는 데이터 서빙을 위한 분산된 책임 구조이다. 조직 각각의 팀이 자기 데이터를 마치 제품처럼 제공해야 한다는 개념이다.

데이터 서빙의 주요 활용 영역은 다음과 같다.

  1. 분석
    • 장기적이고 전략적인 의사결정을 지원하는 비즈니스 분석이 있다. 대시보드나 리포트 형식으로 사용된다.
    • 실시간 인사이트를 기반으로 즉각적인 행동을 실행하기 위한 운영 분석이 있다.
    • 데이터를 애플리케이션 내부에서 보는 임베디드 분석이 있다.
  2. 머신러닝
    • 데이터 과학자, ML 엔지니어가 모델을 만들고, 데이터 엔지니어가 파이프라인, 특징 엔지니어링, 인프라 관리를 지원한다

이를 위해서 파일 교환이나 데이터베이스, 쿼리 페더레이션, 데이터 공유 등의 방식을 사용해 데이터를 전달하는 역할을 한다. 이 과정에서 새롭게 나온 개념이 시맨틱 계층과 메트릭 계층이다. 비즈니스 로직 부분에 해당하는 의미론적 개념과, 일관된 적용 방식을 사용하도록 설계 계층을 분리하는 것이다.

데이터 엔지니어링 수명 주기는 이 서빙 단계로 마무리된다. 하지만 여기서 끝이 아니라 피드백 루프(구축 → 학습 → 개선)가 시작되어 지속적으로 시스템 개선이 이뤄진다.


정리

이번 Part 2 리뷰에서는 데이터 엔지니어링 수명 주기의 각 단계별 핵심 개념과 실무적 고려사항을 심층적으로 다루었다. 데이터 생성부터 저장, 수집, 쿼리 및 변환, 그리고 최종 데이터 서빙에 이르기까지, 각 단계에서 마주치는 기술적 선택지와 트레이드오프, 그리고 이를 뒷받침하는 다양한 아키텍처와 모델링 기법들이 구체적으로 소개되었다.

특히 OLTP/OLAP의 차이, 분산 스토리지의 일관성, 데이터 파이프라인 설계, 쿼리 최적화와 스트리밍 모델링 등 실제 현업에서 자주 고민하게 되는 주제들이 현실적인 예시와 함께 설명되어 이해를 도왔다.

무엇보다 데이터 엔지니어링의 본질은 변화하는 데이터 환경과 비즈니스 요구에 유연하게 대응하는 데 있음을 다시금 느꼈다. 데이터 품질과 신뢰성, 확장성, 그리고 다양한 활용 목적에 맞는 설계 전략이 중요하게 다뤄졌으며, 마지막 서빙 단계에서는 데이터 메시, 시맨틱/메트릭 계층 등 최신 트렌드도 함께 짚어주었다.

결국 데이터 엔지니어는 기술적 깊이와 넓은 시야를 모두 갖추고, 전체 수명 주기를 아우르는 관점에서 시스템을 설계하고 운영해야 한다는 점이 인상 깊게 남았다.


Part 3

보안, 개인정보보호 및 데이터 엔지니어링의 미래 리뷰

이 책의 마지막 파트는 보안과 미래에 대한 내용이다. 당연하면서도 쉽게 간과하는 내용에 대한 이야기다.

10장 보안과 개인정보 보호

소프트웨어 중 가장 많이 발생하는 사례는 Human 에러가 분명하다. 이 책에서도 그렇게 설명한다.
보안에 가장 취약한 존재는 바로 You, 사람이라고. 그렇기 때문에 긍정적인 사고보다는 부정적인 사고를 하라고 말한다.
동물이 살아남기 위해서 불안이 생겨난 것 처럼 방어적인 태도를 취하며 재앙 시나리오를 미리 고려하고 사고를 예방하자는 이야기다.

책임과 권한에 대한 이야기도 빠질 수 없는 주제다.
역할은 필요한 만큼만 할당하고, 민감 데이터에 있어서는 세부 수준 접근 제어가 필요하다는 거다.
추가로 자격 증명 보호나 장치 보호, 소프트웨어 갱신 정책 등을 적극적으로 사용해서 보호할 것을 권장한다.

이를 빠르게 인지하기 위해서는 로깅, 모니터링, 알람도 빠질 수 없는 주제다.
이상 네트워크 접근 징후 탐지, 과한 리소스 사용, 초과된 권한을 가지고 있진 않은지 수시로 확인해야한다.
이와 같이 우리는 뻔히 잘 알고있지만 그래서 쉽게 간과하는 기본적인 보안 수칙을 잘 지키자는 이야기였다.


11장 데이터 엔지니어링 미래

이 책은 빠르게 변화하는 기술에서 변하지 않을 것 같은 신호를 찾아서 쓴 책이라고 설명한다.
여태까지는 데이터 엔지니어링 수명주기라는 개념으로 수명주기의 연속성과 드러나지 않는 요소를 다뤘다.
마지막 장은 미래에 대한 저자의 의견이다.

이 중에 가장 인상깊었던 내용은 기술 사용에 대한 복잡성은 더욱 간소화되고, 사용하기 쉬운 도구들은 더 많이 등장한다는 점이었다. 이어서는 데이터 엔지니어와 ML 엔지니어 직업이 통합되서 나타난다는 점.
안그래도 최근에 기업 공고를 보다보면 AI 데이터 엔지니어, ML 데이터 엔지니어라는 새로운 직군이 등장하는 것 같다.

11장은 저자의 개인적인 의견이 많이 포함되어 있다.
하지만 엔터프라이즈 크기의 데이터 엔지니어링이 부상할 것이라는 것은 책을 쓰는 중에도 점차 그렇게 발전되고 있다고 설명한다.
생각해보면 이전에는 쿠버네티스나 카프카와 같은 별도의 클러스터 구축이 필요한 오픈소스는 규모가 큰 기업에서만 사용하는 것이라는 생각이 있었는데, 점차 규모가 작은 기업에서도 SaaS 제품을 통해 쉽게 사용하는 것을 보아 그 말이 일면 맞다는 생각이 든다.


정리

이번 파트는 앞선 과정들을 거치면서 간과하면 안되는 보안에 대한 내용을 강조하여 설명했다.
이어서 저자가 생각하는 데이터 엔지니어링의 미래에 대해 이야기했다.
그러면서 데이터 엔지니어링의 큰 목표인 수명주기, 비즈니스, 데이터 서빙 등에 더욱 집중하기를 강조하며 책을 마무리 했다.
기술은 점차 사용하기 쉬워진다. 데이터 엔지니어링 뿐만 아니라 다른 기술도 마찬가지로 쉬워진다.
그 과정에서 전체 그림을 그리고, 주 목적과 본질을 파악할 수 있는 기술자로 성장해야한다고 느꼈다.

이 책으로 큰 그림을 그린 기분이다. 결국은 도메인을 잘 파악하고 적확한 질문을 던지고 그에 맞는 기술을 사용하는게 필요하다고 느낀다.
그러기 위해서 꾸준히 배워서 빈 부분을 메워놓으면 언젠가 필요할 때 딱 맞는 답을 하고 싶다. 책 리뷰 끝!

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

인기 태그