포스트

DuckDB 인 액션 - 인사이트 / MANNING

데이터 엔지니어링 관점에서 신기술(예를들면 duck db)의 딜레마 > ##### 데이터 엔지니어는 업무특성상 넓은 영역의 업무범위를 가지고 특히 최신

DuckDB 인 액션 - 인사이트 / MANNING

도서출판 ’인사이트‘의 도서 지원을 받아 작성한 리뷰입니다.
리뷰의 내용은 출판사와 관계가 없음을 미리 밝힙니다.

데이터 엔지니어링 관점에서 신기술(예를들면 duck db)의 딜레마

데이터 엔지니어는 업무특성상 넓은 영역의 업무범위를 가지고 특히 최신기술이며 사용자가 적은… 그러한 경우의 경험을 많이 가지게 됩니다. ray 라던가, duckdb, clickhouse, polars, superset, prometheus 등이 그러한 군집의 사례들이며, 오히려 공부할 자료와 교재가 많은 하둡, spark, kafka 같은 기술들은 해당 기술이 반드시 필요한 케이스가 아니라면 도입비용과 유지보수의 업무량 때문에 대기업 외에는 선택하기 쉽지 않습니다.
혼자, 혹은 두세명의 팀으로 연매출 30억의 회사에서 당해년도 bep 달성을 위해 인프라 비용이 쪼들리고 있을때 스노우 플레이크를 도입하거나 이러저러한 단단하고 끝내주는 인프라 데이터 분석 아키텍쳐를 가져가면서 월 3000만원의 비용을 회계팀에 요청할 수 있을까요? 어렵습니다.

duckdb 는 뭐가 다른가

duckdb를 선택 했던 건 vworld.kr 에서 공간지형정보를 가진 파일들을 다운로드 후에 가공하는 업무를 해야할 때 였습니다. shp -> csv 변환 후 해당 데이터를 db에 로드 하고 postgis로 쿼리해서 결과를 다시 csv 로 내리고 s3에 올리는 흐름이였습니다.
어느날 1.4tb 데이터를 처리해서 하나의 dw 구축이 필요했을때였습니다. 컴퓨팅 자원을 요청하기엔 시간도 어려웠고 일회성이기 때문에 지속적 사용의 당위성도 부족하며 이것 저것 다 처리한다고 치면 너무 번거로웠습니다.
활동하고 있던 데이터 엔지니어 채팅방에서 duckdb 에 관한 건 어느정도 들어봤기 때문에 간단하게 문서를 참조후에 도입해봤고 결과는 짜잔. 놀라울 정도였습니다. 충분한 로컬 자원을 기반으로 db 에 대한 로드 언로드 없이 로컬 파일의 데이터에 실제 sql과 거의 95% 이상 흡사한 형태로 sql 을 날리면서 작업을 할 수 있었습니다.
로컬에서 shp -> parquet 로 변환했으니 속도도 빠르고, 로드 언로드가 사라졌으며, sql 과 흡사한 사용법 때문에 분석가 분들에게 사용을 유도하기 용이합니다. 이게 말이되나 싶을정도의 속도와 편리함 이였어요. 그리고 미국 아마존에서 서적을 찾아보다가 DuckDB 인 액션을 발견하고 구매하게 되었지만 영어의 장벽으로 페이지가 쉽게 넘어가지 못했습니다.
그러던 중 기술서적 관련 채팅방에서 해당 책의 번역판 출판에 따른 리뷰어 모집 소식을 듣고 바로 손을 들어서 지원하게 되었습니다. 너무나 기다리던 소식이고 책이였거든요. 덕분에 좋은 기회를 얻어서 책을 먼저 받아보고 리뷰 할 수 있게 되었습니다.

DuckDB 인 액션 목차 에 따른 구성

duck DB 서적 자체가 많지 않고, 해당 책에 관심이 있을 인력 자체가 매우 적기때문에 목차단위로 내용을 살펴보고 간단한 의견을 적어보도록 하겠습니다.

  1. DuckDB 소개
  2. DuckDB 시작하기
    1,2장은 duck db의 컨셉, 유사 기술들과의 비교, 활용사례, 한계점 등에 대한 전체적인 원론적 접근을 설명합니다. 또한, 전문 엔지니어가 아니더라도 duck db 를 사용해 실습 할 수 있는 환경을 쉽고 빠르게 구축하고 이후의 실습을 진행할 수 있습니다.
  3. sql 쿼리 실행하기
  4. 데이터의 고급 집계와 분석
    3,4장은 sql 기반의 duck db 를 통한 데이터 질의를 다룹니다. 특히 rdb 를 사용해본 분석가 혹은 백엔드 엔지니어들은 sql 기반의 단순한 질의에서 duck db 가 얼마나 낮은 진입장벽을 가지고 있는지 체감할 수 있습니다. rdb에서 되면 duck db 에서도 된다. 라는 기본 전제를 가지고 접근해도 별 문제가 없으며 함수, 조인, group, 서브쿼리 등의 예제를 통해서 rdb를 사용할때의 sql과의 유사성 비교가 가능합니다.
  5. 지속성 없이 데이터 탐색하기
  6. 파이썬 생태계와 통합하기
    5,6장은 파이썬 기반의 duck db 사용환경에서 중요한 부분으로 parquet,json 데이터 포맷을 통해서 rdb에서는 경험할 수 없던 duck db의 강력함은 체험할 수 있습니다. parquet의 압축률과 고속 검색이나 pandas,polars 와의 통합을 python 최근에 각광받는 데이터 생태계에 대해서 간접적으로 경험하게 됩니다.
  7. duck db를 클라우드에서 motherduck과 함께 사용하기
    motherduck은 duck db 를 매니지드로 제공하는 클라우드 서비스 이며 이를 통해 접근성과 스토리지의 유연성을 가져갈 수 있습니다. 특히 motherduck은 duckdb 의 오픈소스에 큰 참여를 하고 있기 때문에 높은 사용성을 제공합니다.
  8. duckdb 로 데이터 파이프라인 구축하기
  9. 데이터 앱 구축 및 배포
    8,9장은 5,6 장에서 했던 파이썬 데이터 생태계의 또 다른 접근입니다. 데이터포맷과 분석목적의 파이썬 데이터 생태계를 접근했다면, dlt, dbt, dagster를 통해서 데이터 가공, 로드/언로드, 오케스트레이션 등에 대해서도 경험할 수 있습니다. 파이프라인 설계와 구성이라는 관점에서 시장에서 가장 대중적인 airflow 대신 dagster 를 차용하긴 했지만 role 에서는 유사한 목적으로 선정하였기 때문에 전혀 문제가 없습니다. 이러한 파이프라인 구성에 필요한 기술들을 살펴보고 데이터 기반의 인사이트를 사용자에게 제공할 수 있는 business intelligence 대한 오픈소스도 같이 경험합니다. streamlit superset 까지 경험하며 전체 데이터 파이프라인 사이클의 goal 에서 외부로 결과물을 보여주는 프로젝트의 완성을 시도할 수 있습니다.
  10. 대규모 데이터세트에 대한 성능 고려사항
  11. 결론
    10장에서는 9장까지의 전체 내용을 기반으로 누구나 한번은 해볼만한 주제를 기반으로하는 duck db 활용사례를 경험합니다. why, how duckdb 를 같이 생각해볼 수 있는 주제로 전체 책의 내용을 마무리 하는 10장의 내용을 기반으로 11장에서는 책을 정리하며 다음 스텝에 대한 이를테면 에필로그 같은형태로 책을 마무리 합니다.

duck db 는 “빈자의 데이터레이크(poor man’s data lake)” 라는 별명이 있을 정도로 쉽고, 가벼우며 강력한 기술입니다.
duck db in action 은 한국어로 접할 수 있는 duck db 출발서적으로서 개념, 실습(가장강력한 부분은 sql), python 기반의 데이터 생태계를 전반적으로 모두 경험해볼 수 있는 기회를 제공합니다. 실시간으로 수정되고 업데이트 되는 온라인의 많은 문서와 영상이 있음에도 불구하고 이러한 책을 구매할때의 기대는 특정한 목적의 구성과 저자의 고뇌의 기반으로 나열된 목차 때문일텐데요. duck db in action 은 충분히 그에 대한 기대를 충족할 수 있습니다.
물론, 정해진 목차와 분량으로 인한 아쉬움은 있을 수 있습니다. 빠른 업데이트에 대한 내용은 외부에서 찾아봐야 하고, 내부의 구동원리 오픈소스에 기여하고 싶다면 코어레벨에서의 설계에 대한 힌트를 얻고 싶을 수도 있지만 그러한 내용은 없습니다. airflow나 압축엔진, iceberg 같은 내용도 없습니다. 이러한 내용까지 모두 포함한다면 책은 1000페이지가 넘어갈지도 모릅니다.
duck db in action 이 필요한 사람은 꽤나 많습니다. 이 책으로 궁금증을 풀지 못하는 분들도 있을테구요. 데이터 엔지니어링에 관심가지는 백엔드 개발자들, sql은 사용할 수 있지만 parquet 나 로컬분석환경을 가지지 못한 데이터 애널리스트, 마케터, 기획자 들. 데이터 플랫폼을 구성해서 데이터 엔지니어링에 입문하려는 취준생들. 책의 내용을 기반으로 데이터 업무를 시작하거나 빠르게 파이썬 데이터 생태계를 훑어보고 자신의 커버리지를 넓히려는 분들에게 추천합니다. 특히 역자가 검토한 예제코드 품질과 원서의 예제코드에서 문제가 있던 부분을 직접 수정해주시는 부분은 매우 만족스러웠습니다.

DuckDB 인 액션 구매링크

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