Book Deep-Read · Fundamentals of Data Engineering · Chapter 2
Fundamentals of Data Engineering · Ch 2 · Reis & Housley · 2022
Your banking app says "You spent $340 on dining this month, 12% more than last month." Behind that one line, every card swipe was collected, stored, sorted by category and finally summed into a number on your screen. This chapter splits that journey into five stops and tells you which questions to ask at each stop before you build anything.
Think of a restaurant kitchen. Produce comes from farms (data is born in business systems); a buyer brings it through the back door (moving the data in); the freezer, fridge and pantry keep it in the right place (storage); cooks wash, chop and cook (shaping it into something usable); waiters carry plates to tables (delivering it to people reading reports and to prediction models). And a few jobs belong to no single station but matter at every one: hygiene, who gets into the kitchen, shift schedules, bookkeeping.
With this five-stop map, a team first asks "who are we feeding, and how fresh does it need to be?" and only then picks tools, not the other way round. Start with the simple one-delivery-a-day approach; upgrade to on-demand only when the business can say "every minute late costs us money." The honest cost: on-demand really is fresher, but it is pricier, harder to maintain, and more likely to break at 3 a.m.
Data passes five stops on its way to being used: born, brought in, stored, prepared, served. Ask the right questions at each stop before choosing tools, and keep a few cross-cutting jobs underneath it all.
Want the book's key questions for each stage, how to weigh batch against streaming, push vs pull and change data capture (CDC), storage temperatures, and what each of the six undercurrents covers? → Switch to the deep read
You'd think the lifecycle is a tool list ("A for ingestion, B for storage, C for transformation"). What the chapter actually gives you is five sets of questions to settle before building anything: where data comes from, how it gets in, where it lives, how it is shaped, and who uses it, plus six undercurrents running underneath the whole thing. Its most counterintuitive conclusion: batch is still the default; real-time streaming must earn its cost with a business case.
Chapter 2 of Part I, "Foundation and Building Blocks." Chapter 1 drew the lifecycle map; this chapter walks each stage and explains the six undercurrents. Chapter 3 builds architecture principles on top, and Part II (Chapters 5–9) gives generation, storage, ingestion, transformation and serving a chapter each. In practice it answers: "before building a data pipeline, what do I need to think through first?"
Tool names change every year, yet pipelines keep failing in the same ways: an upstream field changes silently, data arrives late or twice, a real-time pipeline gets built for a daily report, a dashboard goes unused, someone deletes data that should have been kept. None of these are bugs in a tool. A stage asked the wrong questions, or an undercurrent had no owner.
The chapter first separates two ideas: the data lifecycle is the full life of data from creation to disposal; the data engineering lifecycle is the part of it data engineers own. Then it gives each stage a checklist. The authors' judgment from experience: source systems and ingestion are the biggest bottlenecks in the whole lifecycle, because they sit outside your control.
A source system is where data is born: application databases, app event tracking, third-party APIs, IoT devices. The data engineer usually doesn't own it, yet pays for every change it makes. The book's evaluation questions fall into a few groups:
The book's advice: build a relationship with the owners of source systems, so you hear about upstream changes before they happen, not after a report breaks.
In the book's diagram, storage sits beneath the other stages: ingestion lands data, transformation reads and writes it, serving queries it. Questions to ask: can its read and write speeds keep up with upstream and downstream? Will it become the bottleneck? How does it scale if data grows tenfold? Is it storage only (object storage) or can you query it directly (a cloud warehouse)? Can it record metadata and lineage?
One very practical split in the book is "temperature" by access frequency:
Temperature matters because of cost: the same petabyte kept entirely hot versus tiered hot and cold can differ by an order of magnitude on the bill. The catch is that cold data takes time to retrieve and carries retrieval fees, so data you thought was cold but actually gets queried often ends up costing more in the wrong tier.
Ingestion moves data from source systems into storage. It is the most fragile link: a source that stops responding, a sudden drop in quality, an upstream format change, any one of them can break the whole downstream line. Two pairs of choices matter here.
Batch vs streaming. The book offers an important lens: at the moment it is produced, almost all data is a continuous stream of events; batch is simply a convenient way of processing that stream in large chunks. Streaming ingestion gets data downstream almost in real time, but the book keeps asking first: what business value does real time give that batch doesn't? How much more money and operations time will it cost? Will the streaming pipeline hold up when infrastructure fails? The conclusion: batch remains the sensible default for most cases; adopt true real time only after you find a business use case that justifies the trade-offs.
Push vs pull. In push, the source system sends data to you; in pull, you fetch it from the source on a schedule. Change data capture (CDC) comes in both flavours: periodically querying "which rows changed since last time?" by timestamp is pull; reading the database's own change log (such as MySQL's binlog) and forwarding each commit as it happens is closer to push.
Transformation is where data starts to create value. The book lists several layers: type mapping (turning strings into dates), cleaning and standardizing (deduplicating, unifying units), modeling (reshaping into analysis-friendly structures), business logic (what exactly counts as an "active user"), and, for machine learning, featurization: extracting the inputs a model can use from raw data.
The book stresses two points. First, business logic is the biggest driver of transformation, and the part most likely to go wrong and most in need of an owner: three reports with three definitions of "monthly active users" destroy trust faster than any outage. Second, every transformation should justify its cost and return: whose time does this step save, which decision does it support? Keep transformations simple and isolated from one another.
Serving is the last stop. The book has a sharp warning: beware data vanity projects, lakes and warehouses built with great fanfare that nobody uses. Serving comes in three kinds:
Undercurrents are not a stage of the lifecycle; they are work every stage must do:
Table 1 · Time granularity of ingestion and processing: what to use when
| Mode | Typical latency | Good for | Cost |
|---|---|---|---|
| Batch | hours to a day | daily reports, financial reconciliation, daily model retraining | stale data; one failure reruns the whole batch |
| Micro-batch | minutes | near-real-time dashboards, near-real-time warehouses | scheduling overhead; still not true real time |
| Streaming | under seconds | fraud blocking, real-time recommendations, operational alerts | cost, operations, out-of-order and duplicate handling are hardest; someone must be on call |
The test: ask "if data arrives an hour late, what does the business lose?" If you can't name a concrete loss, use batch.
Table 2 · Push, pull and log-based CDC
| Approach | How | Pros | Cost |
|---|---|---|---|
| Pull: full snapshot | export the whole table on a schedule | simplest, complete result | slow and expensive at scale; heaviest load on the source |
| Pull: incremental query | fetch rows updated "since last time" by timestamp | only moves changes, easy to build | needs a reliable timestamp column; misses hard deletes |
| Push: log-based CDC | read the database change log, forward each change | seconds of latency; captures deletes; no heavy queries on app tables | needs log access and extra components; schema changes need separate handling |
| Push: app emits events | the application writes events straight to a message queue | clearest semantics, most real time | requires changing upstream code and the upstream team's cooperation |
Storage tiering is a trade-off too: hot is fast but expensive, cold is cheap but slow, with retrieval fees on top. Tier by access frequency, and check regularly whether "cold" data is actually queried often.
The chapter's framework maps almost one to one onto the modern data stack: generation is MySQL / PostgreSQL application databases and event tracking; ingestion is CDC tools, managed connectors and Kafka; storage is object storage plus a cloud warehouse or lakehouse; transformation is SQL modeling and Spark; serving is BI, feature stores and reverse ETL tools; orchestration and data-quality tools span all of it. When an architecture review asks "is this pipeline sound?", a good answer walks the stages: source rate, ingestion mode and latency, storage tiers, who owns the transformation logic, who consumes the output, then names who owns each undercurrent.
Open-source evidence
① The data engineering lifecycle is a subset of the data lifecycle: generation → ingestion → transformation → serving, with storage underneath all of it.
② Each stage is a set of questions to settle first, not a tool name.
③ Source systems and ingestion are the biggest bottlenecks: you don't own them, but you must understand their rate, quality and schema evolution, and keep talking to their owners.
④ Storage is tiered hot, lukewarm and cold by access frequency, trading latency for cost.
⑤ Batch is a stream processed in chunks; batch stays the default, and real time needs a business case that justifies its cost.
⑥ Push vs pull: incremental pulls are simple but miss deletes; log-based CDC is low-latency and captures deletes but costs more to operate.
⑦ Transformation is driven by business logic and each step should justify its cost; serving means analytics, ML and reverse ETL, so watch out for vanity projects nobody uses.
⑧ Six undercurrents: security (least privilege; people are the biggest weakness), data management (quality, lineage, deletability), DataOps, architecture, orchestration (not cron), software engineering.