public note

Fundamentals of Data Engineering を読んで

オライリーから出版された Fundamentals of Data Engineering を読みましたので、感想を書きます。

書籍情報

Fundamentals of Data Engineering by Joe Reis, Matt Housley
Released June 2022
Publisher(s): O'Reilly Media, Inc.
ISBN: 9781098108304

www.oreilly.com

Book description を意訳します。

データエンジニアリングはこの10年で急速に発展しており、多くのソフトウェアエンジニアやデータサイエンティスト、アナリストが包括的な見解を求めています。本書では、データエンジニアリングライフサイクルのフレームワークを通じて、最適な技術を評価し、組織や顧客の要望に応えるシステムを計画・構築する方法を学びます。

どういう本か

この本は、下記2つの条件を満たした考え方を提示しています。

  • 関連技術を網羅していること(be comprehensive)
  • 風化しにくいこと(stand to the test of time)

データエンジニアリングが発展途上な領域であることは、衆目の一致するところだと思います。データエンジニアリングという用語自体についても、それが指し示す範囲は広く、データ分析や機械学習などの関連領域と重なることもあり、文脈によってそれが指す範囲は異なります*1。そのため、データエンジニアリングの実践において求められる技術について、包括的な情報を得にくいという事情があります。

また、データエンジニアリング関連のツールや技術に関するドキュメント・ Tips は充実しているものの、新しいツールやサービスが次々と生まれているために、各人が置かれた環境に適したものを選択することは難しい状況にある、という課題を指摘しています。その背景にある考え方にあたる部分を抽出することで、時間の経過に耐える知識を提供することを目指しています。

対象読者

メインターゲットは以下としています(p.11 Who Should Read This Book より引用)

  • Technical practitioners
  • Mid- to senior-level software engineers
  • Data scientists
  • Analysts interested in moving into data engineering
  • Data engineers working in the guts of specific technologies, but wanting to develop a more comprehensive perspective

感想

以下は私の個人的な感想です。

データエンジニアリングも人とシステムによる営み

一般のシステム開発と同様に、データエンジニアリングも人とシステムによる営みです。本書ではデータ基盤やデータマネジメントという How の前に、Whom や Why についてふれられています。どのような立場で人々と関わっていくのか。それぞれがやりたいことはなにか。それを実現するためにどのような仕組みをつくればよいか。何がしたくてシステムを組み上げるのか、その目的を忘れずにやっていきたいものです。

Data Engineering Lifecycle / Undercurrents

Data Engineering Lifecycle と Undercurrents という整理は、綺麗な抽象化だなと感じました。このあたりが自分の中でも明確に整理できておらず、人へ伝えるのに苦労していた部分でした。ざっくりした説明をしたいときは本書を引用すればよくなったので、この点だけでも大変ありがたいです。

ライフライクルプロセスごとに、基礎的な技術解説やよく使われる概念について解説がありますので、初学者にとって全体像を把握するのによいのではと思います。そして、ライフサイクルにおける各プロセスに対して Undercurrents ごとに検討するという考え方は、これから新しいことをやるうえでの軸になりそうです。

また、ライフサイクルはその名のとおり cyclic であるはずなので、終端はありません。データやダッシュボード、通知機能をつくったで終わりにせず、その先が途切れていないかを見るというのは大事ですね(実践するのが難しい)。

Principle of Good Data Architecture

ソフトウェアアーキテクチャという観点では、データ基盤だからといって基本的なところは同じということを再認識しました。本書でも Fundamentals of Software Architecture が引用されています。

www.oreilly.co.jp

そのあたりをおさえつつ、Data Warehouse や Data Lake にはじまり、流行の Modern Data Stack の活用まで解説しています。

Serving の整理

Serving 方面の代表例として Analytics, Machine Learning, Reverse ETL の3つが挙げられています。この部分はニーズによって手段が多様化するため、一般化は難しいのかなと感じました。このあたりは、世の中の事例を参考にしつつ、引き続きやっていかねばならないのだなぁという気持ちになりました。

まとめ

データエンジニアリングの全体像をつかむのに良い書籍です。広範な内容を扱っているために 624 ページという大著に仕上がっているので、通読するには相応の時間が必要かと思います。でも、それだけの価値のある本だと思いますし、私は読んでよかったです。翻訳を期待します。

*1:この本においても複数の定義が紹介されつつ、独自の定義をしています