ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 엔지니어 공부를 위한 5권의 책
    Data 2020. 12. 19. 18:16
    반응형

    | Check English Version Here

     

     

    3년 전, 식품연구원에서 직무전환하여 데이터 엔지니어로 시작해 온라인 강의, 책, 유투브, 블로그 등을 뒤져가며(?) 하루하루 업무를 진행하고 고민해 왔던 것 같습니다. 데이터와 관련해 (특히 온프레미스 환경에서) 업무를 진행하면서, 대학교 수업 전공에서 배우는 것과 같이 좀 더 잘 정리된 이론적인 체계가 있으면 좋겠다는 생각을 많이 했는데요.

     

    이 글에서는 지난 시간 동안 데이터 엔지니어링과 관련한 사항들을 공부하며 데이터 업무를 진행할 때에 관점의 토대가 될 정도로 많이 참고할 수 있었던 책 5권을 추천해보려고 합니다.

     

    먼저 보시는 분들이 자신의 상황에 맞게 어떤 책이 도움이 될지 고르실 수 있도록, 5권의 책 중에 선택할 때 사용할 관점(Level of Analysis Problems)을 공유드리고, 각 책의 특징을 기술하겠습니다.

     

     

     

    주니어 데이터 엔지니어의 공부방법

    이 글에서는 비전공자로 시작해 지난 3년 간, 이커머스 그리고 핀테크 도메인의 클라우드(AWS), 이커머스 온프레미스(Hadoop) 기반의 데이터 환경에서 주니어 데이터 엔지니어로 근무하며 각 도메

    kadensungbincho.tistory.com

     

    5권의 책 중 무엇을 먼저 볼까?

    제가 곰곰히 5권의 책의 내용을 곱씹어 보며 생각해낸 판단기준은 크게 2가지 축이었습니다.

     

    하나는 컴퓨터과학과 관련 깊거나 해당 도구를 어떻게 사용하는지와 같은 기술적인 측면이었고, 다른 하나의 축은 실무에서 데이터를 다루고 처리하는 부분에 대한 지식 중 기술적인 부분을 제외한 '데이터 컨텍스트'라는 부분이었습니다. 

     

    그 2가지 축을 그림으로 나타내면 아래와 같고, 2가지 축 위에 주관적인 '난이도'에 따라 5권을 그려보았습니다.

     

    기술적, 데이터-컨텍스트별 난이도에 따른 책의 위치

    책과 이유를 짧게 설명드리면:

    • (1) I Hearts Logs by Jay Kreps: 분산환경에서 로그가 어떤 역할을 하는지 설명해줍니다. 짧고 비교적 간단하지만 데이터 시스템(DB, Kafka 등)에 핵심이 되는 개념을 이해할 수 있었습니다. (사실 책보다는 블로그를 먼저 보고 많은 아하 모먼트가 있었습니다)

     

    • (2) Designing Data-Intensive Applications by Martin Kleppmann: 데이터 모델, 분산시스템, 배치와 스트림 등의 데이터 환경에서 핵심적인 개념들을 나열해주고 자세히(분산시스템에서의 Two Phase Lock 같이) 설명해주고 있습니다. 

     

    • (3) Rebuilding Reliable Data Pipelines Through Modern Tools by Ted Malaska: 기존의 소프트웨어 엔지니어 또는 백엔드 등의 기술적인 부분이 있으나, 데이터 관련 업무에 대한 개념을 먼저 잡고 싶으시다면 추천드립니다. 기술적인 측면(예로, HDFS의 구조 등)보다는 데이터 파이프라인이 어떤 패턴으로 어떤 목적으로 구성되는 등과 같은 데이터 측면을 많이 다루어 위와 같이 위치시켰습니다.

     

    • (4) Expert Hadoop Administration by Sam R. Alapati: Oreilly에도 Hadoop Definitive Guide와 같은 좋은 책이 있으나, 실무(2년 차 정도)에서 어떤 궁금한 사항(HDFS Master 노드 시스템 설정은 어떻게 하지?, HDFS Monitoring은 어떤 포인트를 봐야하지? 등)을 찾아볼 때 유용해서 이 책을 넣었습니다.

     

    • (5) Architecting Modern Data Platform by Jan KunigkIan BussPaul WilkinsonLars George: 데이터 시스템의 각 구성을, 인프라 중점으로, 기술적으로 심도 깊게(뛰어난 이미지를 곁들여) 설명해주고 있습니다.

    위의 책들과 관련해 제가 가정한 상황별로 추천을 드려보면:

    • 데이터 엔지니어 취업 준비자: 번호순서대로 보시면 좋을 듯 합니다.
    • 백엔드에서 데이터 엔지니어로: (3)과 같이 데이터 업무의 환경을 세세히 그려주는 책을 먼저 보아도 좋을 것 같습니다.

     

     

     

    각 책에서 다루는 주요 내용

    어떤 책은 비교적 짧기도 하지만 책 한권을 읽는 데에는 많은 시간이 들기에, 선택을 도와드리고자 각 책에서 제가 생각할 때 가치가 있었던 부분들을 중심으로 전달드리고자 합니다.

    I Hearts Logs (~ 50 Pages)

    LinkedIn 출신의 Kafka, Samza를 개발한 Jay Kreps이 저자로, 저자는 흔히 웹서버에서 발생하는 형태로 인지하고 있는 로그가 데이터베이스와 분산시스템에 중심적인 역할을 하며 로그 중심의 디자인과 로그 & 컨센서스에 있어서도 다른  해결책과 비교해도 납득할만한 장점을 제시합니다.

     

    그 구체적인 사례로  '데이터 통합', '실시간 데이터 처리', '분산 시스템 디자인'을 설명해주고 있습니다. 

     

    많은 Write 시스템과 Read 시스템 사이에서 각 시스템끼리 통신을 하는 것보다는 로그가 Single Source of Truth로 Write 시스템은 하나의 통합된 로그에 기록하고 Read  시스템은 해당 통합된 로그를 바라보는 것은 컨센서스라는 점에서도, 시스템 간의 결합도를 낮추는 데에도 좋다고 말하고 있는데요. 

     

     개인적으로 데이터 시스템이 대부분 분산환경에 놓여 있기에 로그에 대한 Jay Kreps의 관점을 알게되고 다른 분산시스템을 접하신다면 그 본질을 이해하여 단순하게 바라볼 수 있는 것 같아 맨 처음에 넣었습니다. 

     

    저자 쓴 블로그 글에 그 중심 내용이 잘 기술되어 있으며, 잘 번역된 페이지도 있습니다.

     

     

    Designing Data-Intensive Applications (~ 550 Pages)

    많은 분들도 접하셨을 것 같은 '데이터 중심 애플리케이션 설계'라는 번역본으로 나와있는 책입니다. 하둡 이전의 데이터베이스(RDB, NoSQL 등) 시스템부터 분산환경의 데이터 시스템과 데이터 처리에 있어서의 중심 개념과 중심 기술의 구현에 관해 자세히 설명해주고 있습니다. 

     

    데이터 모델, 데이터 구조, 인코딩과 스키마 Evolution, 분산환경의 복제, 파티셔닝, 트랜잭션, 주요 문제점과 컨센서스 등 얼핏 들어도 데이터와 관련해 한 번쯤은 들어봤으며 실무를 하다가도 '정말 잘 이해하고 있는 것이 맞나?'라는 생각이 들어 다시 한 번 되새겨 보게되는 많은 중요한 개념들을 다루고 있습니다.

     

    또한, 데이터 처리 시에도 자주 언급되는 Stream과 Batch도 하둡과 관련해 상세히 기술해주고 있기에, 하둡을 어떻게 다루고 실행하는 지가 아닌 하둡과 다양한 시스템의 구조적인 특성이 어떻게 어떤 한계점을 가질지 바라볼 수 있게 관점을 심어주는 책이라고 생각됩니다.

     

    개인적으로도, 실무를 하다가도(한 번 정독했지만) 다시 펴 그 개념을 자주 들춰보는 책인 것 같습니다.

     

     

     

    Rebuilding Reliable Data Pipelines Through Modern Tools (~ 100 Pages)

    unravel에서 Report 형태로 무료로 배포하고 있는 이 책은, 데이터 환경에 어떤 주요 이해관계 직군들이 있는지, 데이터 ETL(Extract, Transfrom, Load)의 흐름이 어떤 '지형(Landscape)'을 이루는지 데이터 관점에서 잘 설명해주고 있습니다.

     

    다양한 비유를 통해 이해하기 쉬운 내용을 담았으면서도 실무적으로 데이터 파이프라인을 운영하다보면 마주하는, 기술과 데이터 문제를 데이터 파이프라인의 각 단계별로 기술하여 데이터 팀이 어떤 일을 하는지, 어떤 이해관계 속에서 업무를 진행하게 될지 느낄 수 있는 내용인 것 같습니다.

     

    저자인 Ted Malaska의 이전 작업물도 있지만, 짧고 간결한 이 책을 통해 전반적인 키워드와 흐름만 이해하신다면, 각 키워드를 통해 검색하여 충분히 좋은 리소스로 답을 찾아나가실 수 있겠습니다.

     

    데이터 엔지니어로 시작하고 싶은데, 데이터 환경에 대한 감이 전혀 없다고 생각되실 때, 빠르게 감을 일단 잡고 싶으시다면 읽기 좋은 책이라고 생각됩니다.

     

     

     

     

     

    Expert Hadoop Administration (~ 750 Pages)

    하둡 중심 시스템(HDFS, Yarn, Spark, Oozie, Sqoop 등)을 운영관리하는 데에 있어서

    마주하게 되는 실질적인 문제에 대한 기술적인 부분들이 상세히 기술되어 있는 책입니다. 국내에는 '빅데이터 전문가의 하둡 관리'라는 이름으로 번역되어 있습니다. 

     

    'HDFS를 설치할 때, 설치하는 서버는 어떤 스펙에, 어떤 설정이 필요한가?', '하둡 환경을 모니터링하려고 하는데, 어떤 부분을 어떻게 모니터링 할 수 있는가?', '최적의 성능을 위해 Yarn 메모리와 CPU를 어떻게 세팅해야할까?'와 같은 하둡 환경의 실무에서 해결해야되는 문제들을 두꺼운 책이기에 다양하게 다뤄주고 있습니다.

     

    'Hadoop Definitive Guide'와 같이 좋은 책도 Oreilly에 있지만, 이 책 역시도 각 서비스의 중요 기술을 이해할 수 있을만큼 자세히 기술하고 있고, 저 개인적으로 실무에서 어떤 문제가 발생했을 때, 어느 정도 답을 도출할 수 있는 레벨까지의 내용을 담고 있는 책이라 생각되어 리스트에 넣게 되었습니다.

     

    너무 길게 느껴지신다면, HDFS, Spark, Yarn의 아키텍쳐와 특징을 앞부분(~ 351 Pages)을 꼼꼼히 보시고 뒤의 내용은 구조만 파악하며 빠르게 훑어보셨다가 실무에서 필요할 때마다 찾아보시면 좋을 것 같습니다.

     

     

    Architecting Modern Data Platforms (~ 600 Pages)

    국내에는 '엔터프라이즈 데이터 플랫폼 구축'이라는 제목으로 번역되었으며, 위의 차트에서 보시는 바와 같이 심도있는 기술적인 내용을 다뤄주고 있습니다.

     

    위의 책과 비교해서는, 하둡 환경의 서비스 각각의 특징보다는 데이터 센터와 같은 대규모 데이터시스템 설계 시, 서버 및 네트워크의 스펙과 운영체제 그리고 가상화와 같은 각 서비스 외적인 고려사항들을 중심으로 어떤 부분을 고려해야 되는지 기술해주고 있습니다.

     

    또한, 그러한 각 서비스가 어떤 구조를 지니기에 위와 같은 고려사항들이 존재하게 되는지 간결하면서도 상당히 뛰어난 이미지로 전달해주고 있습니다.

     

    하둡 환경이 구성되는 인프라를 관리하는 관점에서 보기 좋은 책이며, 하둡 서비스의 기반 인프라가 궁금할 때 보면서 매우 흥미로웠던 책인 것 같습니다.

     

    하둡 서비스를 어느 정도 이해하고 있으나 'Yarn에서 어플리케이션이 사용한 vCores에서 core가 물리적으로 진짜 1개의 코어에 해당되는지?', '서버 상의 Page Cache와 파일시스템 드라이버(ext3, 4 등)와 같은 설정들에 하둡 서비스는 어떻게 영향을 받는지?'에 대한 부분이 궁금하시다면 재밌게 보실 수 있을 것 같습니다. 

     

     

     

    이상으로 '데이터 엔지니어' 공부와 관련한 책 5권을 전달 드렸습니다. 

     

    (책은 아니나) 제가 작성한 글, 주요 IT기업의 모던 데이터 시스템도 많은 도움이 되셨으면 좋겠습니다!

     

     

    주요 IT 기업의 모던 데이터 시스템

    이번 글에서는 주요 IT기업의 데이터 시스템을 중점으로 데이터 엔지니어링이 무엇인지 알아보려고 합니다. 이 글은 한글로 된 데이터 엔지니어링 관련 자료가 많이 없는 것으로 보여 이해를 돕

    kadensungbincho.tistory.com

     

     

    (Update - 20201231) 추가적으로 데이터 거버넌스를 찾아보며 알게된, Data Governance: The Definitive Guide도 데이터 업무를 파악하는데 좋은 내용이 많이 있는 듯 합니다.

    반응형
Kaden Sungbin Cho