登录
首页精彩阅读如何快速搭建一个类似于神策数据或诸葛IO的数据分析平台?
如何快速搭建一个类似于神策数据或诸葛IO的数据分析平台?
2017-03-16
收藏
Growth Hacking 这个词在过去一两年开始迅速从硅谷传播到国内,也诞生了一系列专注于企业数据分析业务的明星初创公司,如 GrowingIO,神策数据,诸葛IO 等。
Growth Hacking 简单的来说就是用数据驱动的方式来指导产品的迭代改进,以实现用户的快速增长,可以看看上面几家数据分析公司披露的客户就知道它有多流行了:
· GrowingIO 客户:有赞,豆瓣,36Kr 等
· 神策数据客户:秒拍,AcFun,爱鲜蜂,pp 租车等

· 诸葛IO 客户:Enjoy,罗辑思维等


我司的一个主要产品是面向中小诊所的运营 SaaS 软件,就是诊所可以通过登录网站的方式完成诊所的日常工作,如完成病历,开药以及日常的盘点等。同时产品的推广渠道比较多元化,包括地面销售团队,合作伙伴推广以及常规的搜索引擎推广。作为一个资源相对有限的创业公司,重点关注的就是不同渠道的用户转化以及产品使用情况。

因为自己之前一直在数据算法团队,对于数据收集、处理与应用的流程比较熟悉,加上公司本身规模不大,业务也相对简单,所以在和神策数据沟通后还是觉得自己可以尝试基于阿里云平台快速搭建一个公司自有的数据分析平台。

以阿里云产品体系为例,一个典型的网站架构如下:
图1 基于阿里云的网站典型架构

除了云服务之外,我们还购买了负载均衡 SLB,云数据库 RDS,云数据库 Redis,云监控等服务,主要是考虑是初期没有专业的运维,而这些产品很好的解决了运维需求。

言归正传,主要还是介绍一下数据分析平台的搭建,下面是一个简单的数据流程架构图。
图2 基于阿里云的数据分析平台

我们以常规的七日留存率为例,来说明数据分析流程构建。

七日留存率的一个简单计算公式如下:
七日留存率 = 七天前注册的当日活跃用户数 / 七天前注册的用户数

根据不同公司业务的运营策略,有时也直接将登录系统的用户等价为活跃用户,这个例子中允许定义活跃用户的关键行为(以诊所软件为例,活跃用户需要开处方、售药等)。

一、数据收集

通常来说数据包括前端日志和后端结构化数据两部分。

以计算常规的七日留存率为例,活跃用户数(必须满足指定的使用轨迹)来自于前端服务器(Apache或者 Nginx)日志的解析。

步骤一:采用埋点的技术来记录用户的访问行为:

1. URL 埋点
最简单的方法就是投放到不同推广渠道的注册页在 url 上使用特殊的参数来标记渠道,如 channel=xxx,这样解析前端访问日志时就可以通过 refer 字段来区分渠道。

2. 点击埋点
点击埋点是被广泛使用的技术,简单的做法是在前端页面在发送需要记录的行为时额外发送一个后端请求,如请求一个非常小的图片文件 1.gif ,文件本身没有任何内容,主要是用于在前端日志中产生一个记录,同样的,在这个请求会带上特殊的参数,如spm=xx.xx.xx.xx,而且参数本身可以采用类似于 ip 的段位来构建埋点体系,如第一段表示业务,第二段表示产品,第三段表示功能,第四段表示位置等等。如图3 的淘宝网埋点示例:

图3 淘宝网前端埋点示例

最终前端产生的日志(以 apache 为例)如图4所示:

图4 apache 日志示例

通过 URL参数和点击埋点,我们可以就可以监控用户在网站上的使用轨迹,以七日留存率指标为例,我们可以定义活跃用户的行为必须包括哪些关键路径,即 spm 埋点必须符合哪些规则。

步骤二:自动解析并同步集群机器日志到日志数据库

1. 在所有 ECS 上安装阿里云 logtail 工具,ECS 上几个命令行搞定,如图5 所示:
图5 logtail 命令行安装

Logtail 会自动根据设定的时间间隔提交数据。

2. 创建日志数据库

开通日志服务后,在日志服务控制台创建 Project(支持多个 LogStore),Project 下面创建 LogStore(支持多个解析配置),创建配置(即解析规则),如图6所示。


图6 LogStore 中的解析配置

这样就完成日志数据的结构化存储,而计算七日留存所需的用户注册数据则已经以结构化的形式存储在 RDS Mysql 中,下一步需要做的是定时提取 LogStore 和 Mysql 中的数据进行运算。

二、数据处理

云端的数据处理就好像 Evernote 和有道云笔记一样,可以非常方便的实现在线多人协作。阿里大数据计算平台好像也是今年9 月份左右开始对外公测,之前的名称叫做 ODPS,后来改名叫做大数据计算服务(MaxCompute),虽然对于我来说都一样拗口难懂(后面我就用 ODPS 来统一代指这个服务)……

现在数据处理这块,阿里云其实是单独开个了产品线,命名为”数加”平台,对应的服务入口并没有集成到缺省的阿里云控制台目录菜单,在控制台形形色色的产品命名中并不容易定位,所以,真正用起来只能收藏夹管理入口了……

吐槽结束,数据处理包括数据同步、数据运算和运维两个核心部分, 数据同步将 LogStore 和 RDS Mysql 数据同步到 ODPS, 数据运算和运维则基于 ODPS 实现多人协作开发数据处理任务并进行上线管理。

进入数加控制台后,进入数据开发目录,然后创建 Project,创建后通过右边的 Project 数据开发链接进入了一个在线的 IDE(有点像云笔记),就可以开始干活了。

步骤一:同步 LogStore 和 RDS Mysql 数据到 ODPS 数据库表

1. LogStore 的数据同步
基本做法就是在 IDE 的数据管理模块中创建和 LogStore 相同结构的 ODPS 表,然后回到日志服务控制台相应的 LogStore 配置管理中配置一个投递任务,这样就可以自动同步啦。(非常有用的是,在 ODPS 表中可配置一个时间分区,按天同步日志,这样方便的实现后面的按天调度和计算任务,也可以提升查询效率)。

2. RDS Mysql 的数据同步
这个也需要在 ODPS 中创建一个对应的表(字段可以比原始表少,即可以只同步部分数据),然后再 IDE 中配置一个同步任务就好了,如图7 所示:
图7 数据同步任务开发

步骤二:基于 ODPS 数据库表的定时任务开发

步骤一基本上完成了数据在 ODPS 平台上的准备,如每日的用户行为数据和注册数据,下面所需的就是开发定时计算任务了(如计算每天的七日留存指标),图7 上可以看出,可以使用 SQL 或 Shell 脚本开发简单的任务,也可以开发复杂的 MapReduce 任务,甚至是机器学习任务,也可以用拖拽的方式配置任务的执行顺序。

我们使用 SQL 任务就可以计算出每日的活跃用户、注册用户以及留存。图8 是开发 SQL 任务的界面,右边可以配置任务的执行周期和依赖,同时也支持多人编辑同一个任务。
图8 ODPS IDE 中的 SQL 任务编辑界面

步骤三:数据计算任务的运维

在完成开发和测试后,可以通过 IDE 将任务发布到线上,如图9 所示,比较方便的是,运维工具支持补数据,譬如在搭建这个数据流程之前,我们的日志和数据已经积累了数月,我可以补运行任务,从而得到之前数月的统计指标。


图9 数据计算任务运维界面

个人觉得数据计算平台是阿里云较为独特的产品,可以实现稳定的数据计算和管理。

三、数据应用

理论上经过自行设计的数据计算和运维后,企业可根据自己的业务搭建出高度个性化的应用。这里仍然以初创企业广泛使用的 BI 报表为例,看如何实现七日留存的数据报表应用。
图10 是数加平台控制台中的 BI 报表制作示意图。
图10 阿里云 Quick BI 流程示意图

我们主要使用 MaxCompute 也就是 ODPS 计算任务产生的七日留存率数据表作为报表数据源,使用图形化的操作工具即可实现七日流程率的展示,这种乐高积木式的操作比较简单,就不多啰嗦了,下面是一个完成后的报表图表,官网说可以支持以接口方式将制作的报表嵌入到第三方软件(挺酷的,不过没试过)。
图11 阿里云 QuickBI 七日留存率效果图

基本上,通过基于日志服务的数据采集、基于 ODPS 的数据计算和运维、基于 Quick BI 的报表制作,小规模的初创工具可以在2天左右快速的搭建完一个适合业务的、可以扩展的数据分析平台(你也可以基于这个平台搭建出一个商用的推荐系统),当然,这一切的前提是你的 BOSS 能知道数据分析的价值。

此外,类似于神策数据的专业服务公司其实每年的年费也不贵,对于愿意享受专业服务或相关技术人员比较缺乏的公司直接购买他们的服务也不失为一种较好的选择。

数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询