聊聊 Tubi 的数据工程 (Data Engineering)
今天,我们的 VP 佘昶 (Chang 是大家喜爱的 Python 库 Pandas 的第二位核心作者,在 Tubi 负责数据、机器学习等业务) 发表了一篇博客:
比图科技:打造一家模型驱动型公司 - Tubi 数据与机器学习平台简介 谈到了 Tubi 的数据工程,机器学习,算法驱动。内容非常丰富,值得深入阅读。借这个机会我也聊聊对于数据相关的想法,对于机器学习和模型驱动打算再写一篇。
数据
几乎每一个公司都会号称自己是数据驱动公司。所以我特别喜欢一个问题,“你们的前端工程师可以轻松的获取所有的数据,得出跟数据分析师一样的结论吗?”,这件事情在绝大多数公司都是难以想象的。
数据的存储不规范,大量的隐藏知识(hidden knowledge)只被少数人拥有,慢慢就会形成数据垄断。一方面说着我们是数据驱动的公司,一切以数据为准,另一方面只有很少的人能够知道数据存在哪里,格式是什么,如何查询,历史的变迁等等。数据此时又变成了任人打扮的小姑娘,成了领导层实施自己主观意志的工具,他们想做什么,数据就能变成什么,这完全丧失了数据存在真正的意义。
数据驱动的核心目的,就是让决策的流程可以分布式,让团队的每一个人都能够获取同样高质量的数据,每个人都能做出相同的决策,消除纷争,相互信任,共同向前。
这当然很难,一方面需要大量的基础设施建设,另一方面也需要提高每位同学数据相关的技能。但这是未来的发展方向,是值得的,让 Tubi 的每一个人都是 Mini Data Scientist,就是我们的愿景。
工具
数据很难做,但是在 Tubi,因为从上到下我们是如此的在乎数据的质量,数据相关的任务几乎都是最高优先级。
首先,我们设计了高质量的数据语言,确保客户端和数据的读取用户一眼就能明白这些数据是什么意思。
我们设计了一套和自然语言接近,能够记录用户交互行为的语法。我们使用不同的事件描述各类用户行为,这个设计相对牺牲了一定的灵活性,但是保证了数据的高质量,从长远看降低了维护成本,增加了我们分析使用这些数据时的信心。

CTO 马老师带我们重温一堂语法课
我们有二十多个不同平台的客户端,他们开发平台各异,语言不同,框架不同,保证相同高质量的用户行为数据难上加难。但是数据质量就是公司的生命线,所以优先级高,客户端做了大量的自动化测试工作,确保功能的开发不会导致数据质量的变化。同时后端有大量的预警系统,确保一旦数据有问题能够第一时间得到修复。
**客户端统一数据质量,存储端统一数据存储,查询端也要统一工具查询。**我们搭建了 Tubi Data Runtime 使得每一位同学都能快速的获得想要的数据。

无代码可视化(Jupyter + Nteract Data Explorer)

我们的内容宇宙(Jupyter + Plotly Dash)
热爱
每位加入 Tubi 的同学都会惊叹,为什么 Tubi 可以在如此小的工程师团队(至今不过百),维护将近三十个完全不同的平台客户端,有自己完善的数据系统、机器学习系统、AB 测试平台、广告平台、广告竞拍、内容管理系统、流媒体处理等若干异常复杂的系统,可以收入做到这么高,增长那么快,甚至超过不少国内数千人工程师的公司。
我们热爱工具,我们相信工具赋予每位工程师的力量。我在之前的一篇文章提到过,我相信技术对于生产力的进步也是符合摩尔定律的,也是能做到18月翻一番的。硅谷这几年大量的开源技术 + 云服务 + SaaS 极大地减少了工程师重复造轮子的需求,让我们可以做到每位同学都能关注核心的业务逻辑,只做业界领先的事情,每位同学都 work life balance 的情况下,迭代的速度依然领先。
受益于旧金山-北京全球迭代的模式,我们在北京和旧金山都有大量的职位:
北京:
Tubi China Team 旧金山:
Watch Free TV & Movies Online | Stream Full Length Videos | Tubi 我常驻旧金山城区,也经常去北京。欢迎对我们感兴趣的小伙伴私信我,一起喝杯咖啡 ;)。
