数据平台沉思录

万丈高楼平地起,而今迈步从头越。数据平台用得好可以是屠龙宝刀,但是怎么才能真正把数据引入研发和市场的各个方面,并不简单。这里是我关于搭建数据平台的一些思考,作为菜鸟中的菜鸟,希望大家踊跃拍砖指导。


如果说对数据科学家的要求是把『无形化为有形』(详情可以参见我之前的文章 - 数据科学家沉思录),那么对于数据平台来说,则可以借用笑傲江湖里的一句话『无招胜有招』了。

在我看来,数据平台最重要的目的,不是数据本身,而是资源分配。为什么这么说?因为公司的资源是有限的,数据平台通过收集各类数据进行分析解释,可以得出的最有价值的结论,是到底有没有把 80% 的资源花在最重要的 20% 上,以及资源在投入的时候有没有得到最合理的配置。在此基础上,才有更加细化的,通过数据来驱动设计、研发和运营。

所以接下来也会以资源配置和数据驱动两个方面,结合业务本身来详细说说数据平台的定位和功能。

定位

做数据产品的公司不少,为什么我们还要自己做一套数据平台而不是直接用现有的产品呢?整个平台的定位是什么呢?大概有以下几点考虑:

  • 灵活定制:虽然许多数据产品能够提供几乎各类的基础数据服务以及一部分中高级的数据分析服务,但是总体来说通用性不够,并且国内的平台往往只专注于本土,对于我司需要全球提供服务的需求,不是非常符合条件,所以只能自己来做。
  • 业务结合:我司的业务有两个特点,一是全球化,二是硬件比重高于软件,在硬件研发方面,几乎没有任何垂直领域的数据平台,毕竟现在最火的互联网才是最容易抽象出通用模块的。所以为了和业务以及公司目前的工作机制配合,只能自己来做。
  • 数据安全:作为一家偏硬件的公司,很多设计开发运营的数据都是保密的。放在公有服务商风险太大,即使是购买解决方案部署到内部私有云上,因为系统本身不受我们控制,有极大的安全隐患。作为把数据安全极端重要的公司,核心关键数据平台只能自己来做。
  • 长期成本:采用外面的数据产品虽然起步时比较方便,也可能会因为规模效应省钱,但是随着业务复杂度的增加,越来越多定制化开发工作需要我们或者服务提供商来完成,因为底层系统不是我们自己开发的,这种情况极大拖慢节奏。长期来看,可能时间成本、人力成本会比自己来做还要高。

当然,诸如用户画像、用户分类等这些偏互联网,且需要多种信息源综合考量的内容来说,把外部数据产品作为公司数据平台的输入,也是不错的解决方案。

功能

功能部分原本打算写很多,不过因为涉及到太多敏感信息,这里就只能简单说说,最重要的功能其实就是数据仓库和数据挖掘相关的能力,这部分现在围绕几个大的生态都有比较完善的技术栈,具体只需要根据需要来选择最合适的。具体来说,有以下几个要点

  • 数据获取:内部研发数据、内部服务日志数据、外部用户信息导入、外部信息源导入等等
  • 数据存储:全球分布式存储、留档保存备份
  • 数据分析:产品研发、市场运营相关需求(这部分不能说太细)
  • 数据理解:产品研发、市场运营相关决策的数据支持(这部分不能说太细)
  • 数据可视化:数据展示,体现重要性
  • A/B 测试:上线前测试检验效果(这部分不能说太细)
  • 底层调度:主要依赖开源生态,但是由于我们的业务比较复杂,所以需要做一定的优化和定制
  • 容错容灾:这个不用多说
  • 权限管理:涉及到信息安全和相关法律问题(这部分不能说太细)

总结

搭建数据平台其实是非常有意思的过程,也是很好的尝试各种新技术新思路的地方,相信在这个过程中,能够学会很多东西。

书单

最后是一个可供参考的书单,我也会逐渐把这些书的读书笔记和书评更新出来。

  • 数据挖掘导论
  • 深入浅出数据分析
  • Web Analytics
  • 机器学习 周志华
  • 啤酒与尿布
  • 数据之美
  • SciPy and NumPy
  • Python for Data Analysis
  • Bad Data Handbook
  • 集体智慧编程
  • 机器学习实战
  • Building Machine Learning Systems with Python
捧个钱场?