[데이터 엔지니어링 디자인 패턴] 경량 ETL 실습 후기

2026. 3. 3. 05:42·Insight/서평
728x90

한빛미디어 서평단 <나는리뷰어다> 활동을 위해서 책을 협찬 받아 작성된 서평입니다.

데이터 엔지니어링 디자인 패턴 / 바르토시 코니에치니 저


배경

데이터 기반의 프로젝트를 수행할 때, 보통은 이미 정제된 데이터를 잘 활용하는 것에 집중하는 경우가 많다. 데이터 수집 및 관리 영역은 마치 도시의 인프라처럼, 초기에 제대로 구축해두면 이후에는 유지/보수만 해주면 되기 때문이다. 그러나 인프라에 대한 신뢰가 깨지는 것만큼 치명적인 사건도 드물다. 이미 모든 작업들이 그 신뢰를 바탕으로 진행되어 왔다면, 최초로 발견한 데이터 품질의 문제가 어디에 또 어디에 도사리고 있을지는 아무도 알 수 없기 때문이다. 이러한 데이터 통합을 경험해보고자 직접 간단한 ETL 프로세스를 구현해봤다. 책에서 제시하는 대표 사례는 꽤 복잡하게 느껴졌기에 다소 단순화하여 접근했다.

문제: 증분 적재

내 경우 크롤링을 수행해서 필요한 데이터를 수집하는 경우가 많다. 주기적으로 작업을 수행할 때, 애초부터 중복이 발생하지 않도록 설계하지만, 작업이 실패하고 재실행하면서 불필요하게 데이터 중복이 발생하기도 한다. 이런 상황을 생각해서 안정성을 추구하다보니 작업 속도는 느려지는 것을 감수하곤 하는데, 그러다보니 각 작업이 실패했을 때는 전체 적재를 수행하기에 너무 시간이 오래 걸리는 문제가 있었다. 이러한 문제를 해결하기 위해 4개의 패턴 — 체크포인터, 증분 로더, 키 기반 멱등성, 수평 파티셔너를 활용하여 단순한 ETL 프로세스를 구현해보았다.

이 책의 패턴을 활용한 인프라의 개략적인 구조

기초 개념: ETL

ETL—meaning extract, transform, load—is a data integration process that combines, cleans and organizes data from multiple sources into a single, consistent data set for storage in a data warehouse, data lake or other target system. —IBM Data Management Guide


ETL은 다양한 원천에서 수집한 데이터를 하나의 온전한 데이터셋으로 통합하는 프로세스를 의미한다. 쉽게 말하면 API에서 DB에 데이터를 적재하는 과정이다. 이는 굉장히 기초적인 개념이지만, 본 책에서는 다루지 않는다. 대신 실무적인 관점에서 데이터 관리를 위한 다양한 디자인 패턴을 제공하는 것에 집중한다. 책은 일반적인 데이터 엔지니어링 라이프사이클의 관점에서 필요한 작업의 순서대로 패턴을 정리해주고 있다. 또한 부록으로 패턴 요약을 제공하여 한 눈에 모든 패턴을 살펴볼 수 있도록 제공한다. 이 책으로 모든 것을 해결할 수 없고, 필요한 개념이 있다면 따로 찾아 학습해야 했다.

책에서 제공하는 전체 디자인 패턴 요약

내결함성 - 체크포인터

체크포인터의 핵심 역할은 이전 데이터의 재처리를 피하는 것이다. 이번 실습에서는 크롤링 대신 공공데이터 API의 대기오염 데이터를 사용했는데, 측정소별 데이터가 매시간별로 수집되는 것을 확인했다. 그래서 시간을 기준으로 레코드를 구분했고, 물론 이런 방식은 책에서 제시하는 실무적인 방식은 아니지만, 임의롭게 단순한 JSON 파일 하나를 생성해서 어디까지 처리되었는지 기록했다.

파이프라인 실행에 성공하면 그 시간이 기록된다.

증분 적재 - 증분 로더

책에서 두 가지 구현 방식을 소개하고 있어 이를 모두 활용하려 했다. 들어오는 데이터가 각 시간별로 이미 나누어져 있어 `last_fetched_at` 를 활용하여 델타 컬럼 방식으로 수집 방식을 정의했고, 시간 분할 데이터셋 방식을 활용해서 날짜 파티션별 parquet으로 저장했다. 실습의 목적으로 두 방식 모두 활용한 것이지만, 두 방식 중 하나만 적용하는 것도 충분해보였다. 이 과정에서 자연스럽게 수평 파티셔너 패턴도 사용하게 되었다.

시간 분할된 데이터셋과 조회한 내부 레코드

데이터베이스 - 키 기반 멱등성

관측소명을 뜻하는 `stationName`, 그리고 관측 시간인 `dataTime`. 두 개의 속성을 복합키로 삼아 멱등성을 보장했다. 물론 이용하는 API 데이터셋의 특성상 과거 데이터가 수정되는 경우는 없으므로 불필요한 작업이다. 또한 제약조건을 걸어두고 데이터베이스를 사용하여 처리할 수도 있었지만, 활용해보는 것에 의의를 두고 작업을 진행했다.

transformer.py > deduplicate()


깨달음: 문제와 해결책, 그리고 패턴

이러한 작업을 특별한 기술 스택 없이 진행하면서 느낀 점은, 워크로드를 최대한 단순하게 유지하는 것이 가장 중요하다는 점이다. KISS 원칙처럼 요구사항을 단순하게 이해하고 빠르게 처리해야 한다. 왜냐하면 처음부터 다른 회사에서 사용하는 멋진 인프라를 구축하는 것은 다른 중요한 작업에 투자할 시간을 뺏고, 자칫하면 데이터셋에 대해 잘못 이해하거나 스키마가 변경되면서 기존 작업이 시간 낭비가 될수도 있기 때문이다.

 

그 다음 단계는 추가되는 요구사항에 따라 발생하는 문제를 식별하고, 그것에 대한 해결책을 패턴 기반으로 숙지하는 것이다. 대부분의 문제는 본 책에 명시된 패턴들을 활용하여 해결할 수 있다. 사용하는 기술 스택의 스펙을 이해하고, 적절한 수준에서 패턴을 구현하는 것만 신경쓰면 될 것 같다. 가령, 어떤 작업 요청이 정상적으로 수행되었는지 확인하기 위해 오류 관리를 논하는 3장의 체크포인트 패턴을 활용할 수도 있지만, 넓게는 데이터 품질을 논하는 9장의 AWAP 패턴  — 감사-쓰기-감사-배포 패턴을 활용하여 데이터셋 자체의 정합성을 보장하는 것으로도 문제를 해결할 수 있는 것이다.

 

이 책은 다양한 패턴을 수록하여 자신이 마주한 문제 상황에 대한 해결책과 그에 맞는 패턴을 찾을 수 있는 것이 가장 큰 장점이다. 아쉽다면 초보자에겐 그 패턴이 필요한가를 판단하는 것이 어려울 수 있고, 설명 수준이나 사례로 사용되는 기술 이해도 등이 중급자를 대상으로 작성되어 있다는 점이다. 바꿔 말하면 이 책의 내용은 정말 실무 메뉴얼로 사용해도 좋을만큼 실전적이다. 어느 정도의 실무 경험이 있는 데이터 엔지니어들에게 이 책을 추천한다.

728x90
저작자표시 비영리 동일조건 (새창열림)

'Insight > 서평' 카테고리의 다른 글

[서평] 스프링 부트 개발자 온보딩 가이드  (0) 2025.12.23
[서평] 0과 1 사이 (원제: Binary Hacks Rebooted)  (0) 2025.11.27
[서평] 헤드퍼스트 소프트웨어 아키텍처  (0) 2025.10.27
[서평] 스프링 6 레시피 (5판)  (0) 2025.09.28
[서평] 개발자를 위한 IT 영어 온보딩 가이드  (1) 2025.07.28
'Insight/서평' 카테고리의 다른 글
  • [서평] 스프링 부트 개발자 온보딩 가이드
  • [서평] 0과 1 사이 (원제: Binary Hacks Rebooted)
  • [서평] 헤드퍼스트 소프트웨어 아키텍처
  • [서평] 스프링 6 레시피 (5판)
ooMia
ooMia
  • ooMia
    데이터 과학자의 꿈
    ooMia
  • 전체
    오늘
    어제
    • 분류 전체보기 (117)
      • Insight (25)
        • 서평 (21)
      • Learn (43)
        • UPSIDE (22)
        • ASAC (4)
        • 우테코 (4)
      • Tip (24)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Velog.io
    • GitHub
    • Linked-in
    • Instagram
    • Solved.ac
  • 공지사항

  • 인기 글

  • 태그

    패스트캠퍼스
    쉬움
    업사이드
    우테코
    DAPP
    티스토리챌린지
    업사이드 아카데미
    나도 할 수 있는 Java&Spring 웹 개발 종합반
    내일배움카드
    SQL 데이터 분석 첫걸음
    매우 쉬움
    web3
    K디지털기초역량훈련
    가이드
    국비지원교육
    C언어
    한빛미디어서평단
    for 반복문
    한빛미디어
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
ooMia
[데이터 엔지니어링 디자인 패턴] 경량 ETL 실습 후기
상단으로

티스토리툴바