FDE Times 数据在招 FDE 职位 862▼55 近 7 天在招职位数的变化(同口径比较):不计入本周新开始追踪的公司的职位近 7 天新增 70在招公司 180支持远程 24%美国薪资中位数 $200k招聘最多 Palantir 95
ENVI

前线部署工程师(FDE)的专业媒体

书籍与课程

四年过去,Joe Reis 几乎不想改写他的数据工程书

工具几经更替,书中六条“暗流”仍是 FDE 初见客户时该带上的问题。

封面: Fundamentals of Data Engineering
Fundamentals of Data Engineering · Joe Reis · 封面图片:Open Library
分享微博

要点速览

  • 这本书于 2022 年 7 月 26 日出版。四年后,Joe Reis 表示若重写,大体仍会这样写,只有几点保留。
  • 书的价值主要在六条暗流,而不在某个具体工具。部分存储章节写得很细,可以略读。
  • 对 FDE 来说,这本书提供了提对问题、逐步排查问题的方法,在客户环境横跨多个云时尤其重要。
数据生命周期示意图:Generate、Store、Ingest、Transform、Serve 五个方块排成一行,用箭头相连。下方六条横带贯穿全宽,分别代表一条暗流:安全、数据管理、DataOps、数据架构、Orchestration 和软件工程。Orchestration 横带为橙色,标注“POS 在 2:00 完成,但 Ingest 在 1:00 运行”,即文中零售连锁案例的故障所在。
据《数据工程基础》,六条暗流不是阶段,而是贯穿全部五个阶段。在零售案例中,报表出错的原因不是 SQL,而是任务的执行顺序。来源:Joe Reis 与 Matt Housley,《数据工程基础》;示例为文中的说明性案例。

“四年前的昨天。”Joe Reis 回顾《数据工程基础》(Fundamentals of Data Engineering)的文章,就以这句话开头。这本书于 2022 年 7 月 26 日出版,他的文章发布于 2026 年 7 月 27 日。

他自问:如果今天再写,会不会写得不一样?他的简短回答是:大体保持原样,只有几点保留。

数据工具更新很快。一位作者四年后仍认可自己的框架,这一点值得留意。

如果你想做前线部署工程师(FDE),这一点就更重要。在客户现场,技术栈轮不到你来选。你能带去的是一种看待系统的方式,而 Reis 与 Matt Housley 这本书教的正是这个。

五个阶段,一套排查方法

全书的核心是一个五阶段的数据生命周期:Generate、Store、Ingest、Transform、Serve。听起来像幻灯片里的示意图,但出问题时就能看出它的价值。

假设你在一家零售连锁企业做 FDE。运营负责人抱怨,今天早上的营收报表比收银员报上来的数字少。很多开发者会打开看板,也就是 Serve 阶段,开始检查 SQL。

生命周期的思路是反过来,从源头查起。门店的 POS 系统(Generate)几点同步完?负责拉取数据的任务(Ingest)几点运行?

假设 POS 凌晨 2 点同步完,Ingest 任务凌晨 1 点就跑了。那么上次同步以来的所有交易都不会出现在报表里,哪怕你的 SQL 完全正确。

问题不在 Transform 或 Serve,所以改 SQL 解决不了任何问题。合理的修复是强制执行顺序:Ingest 只在 POS 报告同步完成后运行,而不是按固定时间运行。

五个阶段给了你逐一排除的顺序。在客户现场,这个顺序能省下几个小时的瞎猜。

价值在六条暗流

上面的例子其实是 Orchestration 问题,而 Orchestration 是书中六条“暗流”之一。暗流不是阶段,而是贯穿每个阶段。Reis 本人也认为这是全书最有用的部分。

暗流对 FDE 的价值在于,它们可以变成在客户现场提出的问题。套用到上面的零售连锁企业,每条暗流都能变成一个具体的调研问题:

暗流 可向零售客户提出的问题
安全 POS 数据里有没有顾客手机号?谁能读取?
数据管理 各部门说的“营收”是同一个意思吗?
DataOps 数据管道出故障时,通知谁?多快通知到?
数据架构 门店数据进入报表前要经过哪些系统?
Orchestration 哪些任务必须在哪些任务之前完成?谁来检查这个顺序?
软件工程 数据管道代码有没有代码评审、测试和版本控制?

第一次需求调研的小建议:不要带着功能清单去,而是带着类似这样的六个问题去,记下客户在哪里犹豫。项目往往就会在那里出问题。

当问题横跨两朵云

再把例子往前推一步。假设这家零售企业把 POS 数据存在一朵云上,看板却跑在另一朵云上。Google Cloud 把这种架构称为多云,即至少组合使用两家公有云厂商,给出的理由之一是避免被单一厂商绑定。

这时,上面的时序问题就难发现得多,因为 Ingest 和 Serve 分处两地,有两套日志。

先检查数据从一朵云流向另一朵云的交接点,问三个问题:传输任务的运行时间与源端写完的时间相比如何?两边记录时间用的是同一个时区吗?传输失败时,谁收到告警,在哪朵云上?

如果有人建议把这个传输任务迁到 serverless 上来理顺流程,请记住 Corey Quinn 写过:遗憾的是,serverless 的承诺至今仍未兑现。同意之前,先问清楚它能否真正解决这个交接点上的执行顺序和告警问题。

关于 AI/ML,Reis 仍未决定是否把它列为第七条暗流,但他明确表示,无论如何,AI/ML 都会在数据工程中占据重要位置。对为客户部署 Agent 或模型的 FDE 来说,这提醒我们:输出质量仍取决于上游的五个阶段。

谁该读,按什么顺序读

Johnny Winter 在 Greyskull Analytics 上撰文,建议所有从事数据工作的人都备一本,而不仅是数据工程师。对想转 FDE 岗位的后端或全栈开发者来说,这本书应该在任何工具文档之前读。

Winter 也指出了一个不足:部分存储章节写得非常细。先精读生命周期和暗流的章节,立刻套用到手头的一条数据管道上;等项目真正用到时,再回头读存储章节。

写简历时,可以借用书里的说法。不要写“优化了 ETL”,而是写你在 Ingest 阶段发现了一个导致 Serve 阶段报表失真的问题,并说明怎么修复的。看岗位描述时,留意“端到端数据管道”或“对接客户数据基础设施”这类表述,这些岗位需要的正是这种思维方式。

工具还会更替很多次。一个连作者本人四年后都想保留的框架,值得带进你接下来的每一个数据项目。

这篇文章对你有帮助吗?

4 个信源
路线图上的下一篇 · 阶段 2: 全栈工程能力这门免费数据管道课程,精华在最后三周Data Engineering Zoomcamp 在 2025 年改用 Kestra,工具会变,独立搭完整管道的能力不会。