关于神秘的GrowthHacking,Facebook都做了什么?(下)

2015-11-28 22:54 稿源:雷锋网  0条评论

【编者按】雷锋网专栏特约作者覃超,前FB工程师,现为FREES技术合伙人。本文是 Growth Hacking 系列的下篇:揭开 Growth Hacking的神秘面纱(憋以为就这么结束了,咳咳,还有番外篇)。

写在前面

古语有云:"一鼓作气,再而衰,三而竭"。现在我一鼓作气,写完最后两篇。这篇是下篇,另外下周还要发一篇叫番外篇。届时再与雷锋网读者们一起分享,有兴趣的可留言探讨。

设计软件有两种方法: 一种是简单到极致而明显没有缺陷; 另一种是复杂到极致以至于没有明显的缺陷。前者要难得多!

——C.A.R.Hoare

下篇开始!

灰度发布和 A/Btesting

如果看过中篇(《关于神秘的Growth Hacking,Facebook都做了什么?(中)》)的朋友应该对于里面Facebook首页和人人网首页改版的例子印象深刻。这里Facebook使用的一大法宝就是灰度发布和 A/B testing。这一利器像宙斯盾一样(想不出更好的比喻),多次将Facebook从出错的悬崖上拉回来。就好像上一篇里面所说的那样:

即使像 Facebook 这样的航母,在创业的大海里还是犹如“盲人”一样,很多产品的改动没人真正知道方向到底在哪儿。所以这里采用的方式就是 "Everything must be tested"。在灰度发布后,data dashboard + A/B testing 就犹如航母上的雷达或者声纳一样,对于方向和航线起到验证作用。

所以来重点介绍一下Facebook的这台雷达系统。

Facebook早在2007-2008年就在网页服务端(PHP)上开发了这套 发布和测试系统,代号叫 GateKeeper (最早在Boz的文章中提到),本质上它就是一个开关,可以在一个admin page上定义一个个的开关,然后控制某些开关到底是开还是关。这些开关的属性预先都缓存在内存中,所以读取开关的操作不重。示例代码如下:

主要的逻辑就在 if 中,判断这个开关是否对相应的用户开启,如果是则跑实验代码,否则跑老代码。非常直接和简单对吧!后来,Facebook又陆陆续续对它进行了各种加强,让其可以更加精细地分割和控制用户,比如说 对于US的1%用户开放,或者对于 日本的年龄25岁以下的男性用户开放,等等。可以从时间,国家,加入日期,好友数,是否为FB员工,性别,年龄等等各种维度进行控制。

这极大方便了我们对于用户分批进行 A/B testing。

Gatekeeper(简称GK)对于Facebook的整个internal tools组来说一个很重要的基础设施。随着Facebook用户量的增大,每个GK每日的被访问量也大大增加;同时Facebook自己的功能和相应的GK项也不断增加, 这对于整个GK的规模能力后来也提出了很大的挑战。

到了移动时代后,iOS和Android的 core team 也相应地推出了比较强大的移动灰度发布和 A/B testing 工具,代号叫做 Airlock ,其中我们的一位中国工程师也参与它的开发。当然,类似的工具还有不少,比如 Twitter 开源的 Clutch IO 。移动上的 Airlock 系统稍微复杂一点:

首先,用户在手机上登录或者打开Facebook App后,airlock会从FB server取得所有的GK值;然后在本地缓存起来;

2. 然后在 iOS 或者 Android 代码里写相同 if 判断逻辑,来检查当前用户是否已经开启这个属性。是的话,跑试验代码;否则跑老代码;

3. 然后app每隔一段时间去和server同步一次(FB用的是一个小时的间隔);当然app随时也可以强制去取server上的最新值。

4. 最关键的是:移动端的logging会把当前用户的每个GK的值记录在logging中,这样当这些logs被上传到server后, server可以根据这些logs来统计用户的GK值和相应的动作。

回顾来看,移动上的灰度发布和 A/B testing 本质就是要在本地代码加入一个库,来负责和server同步所有开关的值,以及在logs里记录好相应的这些开关,便于后来分析用户的行为,来了解此用户是暴露在怎样的开关组合中。

案例一:Facebook iOS app的演化

下面来说一下iOS下面的Facebook app界面演化过程。众所周知,Zuck 和 Steve Jobs 的私交一直不错,Zuck 也把乔帮主当做自己的模样,私下里经常去乔老爷家里共进晚餐和请教 run company 的窍门。所以,用 iPhone 第一版SDK开始,Facebook就有iOS原生应用开始入驻App Store:

可以看到iOS还是拟物化的风格,Facebook用的是当年红极一时的九宫格首页。消息提示在首页的最下面,当时Facebook还没有 Like button,只可以comment。此版本的Facebook app为最初一版,由一大牛独自完成。此大牛把后来的常用组件开源成 Three20 库。

有好的文章希望站长之家帮助分享推广,猛戳这里我要投稿

相关文章

相关热点

查看更多