何亚明:Facebook的工具文化和多媒体QoE

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/81256838 ...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/81256838

640?wx_fmt=jpeg


本文来自 阿里巴巴 信息平台资深技术专家 何亚明在LiveVideoStackCon 2018热身分享,并由LiveVideoStack整理而成。在分享中,何亚明介绍了Facebook工程师团队的特点与其常用的几种开发工具,并对其开发流程与实际测试方法进行了总结。


文 / 何亚明

整理 / LiveVideoStack

直播回放:

https://www.baijiayun.com/web/playback/index?classid=18071162649778&token=3IE1w9JXSIJt681rrJ0J_WiYpSJR33rVGBsc9zAjeyfCkyeeAyDcLdSjmEllJrb2CqdH1zJ1Si0 


本次分享主要是想聊聊在Facebook根深蒂固的工具文化,以及越来越被关注的视频QoE。从音视频文化上带给大家一些启发,在今年10月份还会做一个正式的分享,会更多的从技术层面出发。


Facebook工程师团队


Facebook大家应该都很熟悉了,虽然它现在在中国没有市场,实际上在国外一直是一个垄断的地位,也一直处于一个快速的增长过程之中。Facebook工程师团队的特点,如下:


1)小团队,不重复造轮子

首先非常强调小团队文化,一般是一个团队负责一个东西,不重复造轮子;


2)没有测试工程师,没有产品经理,没有数据分析师

每个工程师要对自己的代码要完全负责的,你就是你产品的主人翁,也就是说每个开发工程师同时也是QA,PD,Data Scientist;


3)自驱力,创造力

在Facebook里面非常强调的一个文化,它就是自驱力和创造力;


4)强大的工具支持

在前面说的,每个工程师要自己负责,但通常很多事情并不是靠个人就能做完的,实际上它除了团队文化,背后是有非常强大的工具体系来支撑的。


质量保证 QoE


由于Facebook的用户量是特别大的,那么怎么样才能保证每个工程师写的代码能够有比较正面的影响呢?在Facebook里面强调的是:“Everything must be tested”,就是说任何一行代码都要必须被测试过,一般从代码快速上线 ,有一个周期从2个星期到3个小时的演化,然后从Master Train到实时上线。任何的功能都是经过实际的来测试的,如何做到这点呢?分两个方面:


1)灰度发布


灰度发布在Facebook是用两个东西来做的,一个叫GK,一个叫QE。 GK是用在Web端和服务器端的,QE是用在Mobile端,就是安卓和IOS上的,它可以非常精确的定点和定向,然后还有逐步灰度,比如说,你想选择在某个区域里面,手机是IOS5.0以上的版本的用户能够进入到你的灰度里面,它也是一个逐步灰度的过程,从1%的用户到2%,3%,一直到20%,就像是一个逐步放大的过程,这样能够确保任何时候,如果你的代码有不良的影响,可以被非常快的关掉。因为有这样的机制,它就保证说你的代码随时的上线。


2)ABTest


ABTest,指的是在同样的情况下用户会分成两种,例如,当准备上线2%的用户时,有1%的用户会经过你的新Code,有1%的用户是没有经过你的新Code,在完全相同的情况下,由于Facebook的量很大,即使 1%的用户也是上百万乃至上千万级别的,这样它可以在很短的时间内收集海量的数据,通过海量的数据分析,能够定位到代码是不是真正的有效。


Facebook的工具文化


总结下来,Facebook工具文化的精髓就是用工具提高效率,可能和国内公司不太一样,他们最优秀的工程师都会在开发内部工具,开发的工具不但是给自己提供方便,给整个公司也提供方便。通过工具解决流程问题,企业文化也可以通过工具来推广,简单来讲,把这些事情都做到工具里面,让机器来做就好了。


1、常用工具


下面会给大家介绍一些Facebook的常用工具:


1)代码开发协同工具 – Phabricator


640?wx_fmt=png


这是一个开源的代码协同的工具,它会自动扫描你的代码,看看在格式和语法上面有没有不合规的地方需要修改,同时也会自动完成代码测试到上线的整个流程。


2)Scuba实时数据分析系统


640?wx_fmt=png


 这是一个实时数据分析的系统,会进行一个海量数据的分析,当你的某个产品上线后,它能快速找出用户使用的数据来进行分析,还能对比同时期各种数据的指标。


3) Deltoid数据分析工具


640?wx_fmt=png


 Deltoid数据分析工具是一个自动ABTest分析工具,在海量的数据里面,这个工具能够准确的、快速的把ABTest数据量化,从统计学的角度排除掉干扰的信息,告诉你哪些数据是有效的,哪些数据是噪音,哪些数据是无效的。通过Deltoid可以很清楚的看到哪些功能是有效的,哪些是无效的。


2、Facebook的开发

 640?wx_fmt=png


我个人总结Facebook的开发主要分为五步:


第一步,确定要的功能,完成代码,进行自测

第二步,设置测试分组流程

第三步,通过内部和外部用户测试

第四步,分析测试结果

第五步,根据结果决定是发布还是丢弃,再次进行修改


3、数据指导QoE


通过数据来指导的QoE,首先要制定好主要的指标,次要的指标,像跟视频多媒体相关的,主要指标要注意Messenger – 通话时长(Call Duration),Live – 观看时长(Watch Duration),次要指标就有很多了。另外,我要强调的是,QoE不是单纯的QoS,更是一种服务体验,比如图标ICON,Layout和弱网提示等,这些都会影响到用户的体验。


Q&A


Q1:推荐几本多媒体的书?


A:基本上讲的比较好的,一本讲H.264的,另外还有讲RTP的一本书。


  • 《H.264 and MPEG-4 Video Compression》恩·E·理查森

  • 《 RTP: Audio and Video for the Internet 》科林·珀金斯


Q2:Facebook在GitHub上有哪些相关的项目?


A:就说多媒体方向的话,音视频方向的开源项目并不是特别多,我记得后面我们开源了一个基于Quick来做得那种媒体播放的,然后的话,非常多的是基于这个底层下面的。


Q3:现在有很多Code也是直接就Check到WebRTC主流上面,它的这个多人连麦视频窗口排列有所不同,这个会影响用户体验吗?


A:这个是有可能会的,从用户的层面来讲,他很多时候感知到的是一种服务,是一种体验。他只要觉得,他讲话的时候,得到了反馈,他知道对方在讲话,他看到了这个反馈,也听到了这个声音,他就愿意多用你的产品。


640?wx_fmt=jpeg

相关文章
|
机器学习/深度学习 算法 决策智能
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
218 0
|
XML jenkins Java
Facebook开源静态代码分析工具Infer介绍
Infer是Facebook公司的一个开源的静态分析工具。Infer 可以分析 Objective-C, Java 或者 C 代码,用于发现潜在的问题。其作用类似于sonar和fortify。Infer更倾向于发现代码中的空指针异常、资源泄露以及内存泄漏的问题。
Facebook开源静态代码分析工具Infer介绍
|
移动开发 安全 程序员
Facebook的黑客马拉松文化
Facebook 于2012年5月18日晚登陆纳斯达克上市,交易代码“FB”。然而很少有人知道的是,Fackbook庆祝上市的方式是举办一场黑客马拉松。这场黑客马拉松在扎克伯格象征性地敲响纳斯达克开盘钟时达到高潮。
358 0
Facebook的黑客马拉松文化
|
安全 前端开发 API
KVOController:facebook 开源的 KVO(Key-value Observing)工具
KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。
287 0
|
机器学习/深度学习 存储 人工智能
Facebook 开源高速大规模图嵌入工具 PBG
比起一般的嵌入软件,表现更快,同时能产出与先进模型相当的嵌入质量。
621 0
|
机器学习/深度学习 人工智能 自然语言处理
Facebook 发布无梯度优化开源工具 Nevergrad,可应用于各类机器学习问题
Nevergrad 提供了许多不依赖梯度计算的优化算法。
681 0
|
机器学习/深度学习 Web App开发 移动开发
|
编解码
LiveVideoStackCon讲师热身分享 ( 三 ) —— Facebook的工具文化与多媒体QoE
LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19:30,邀请1名大会讲师进行线上分享技术干货,解答热点问题。
1526 0
|
测试技术 iOS开发 容器
关于Facebook iOS UI 工具ComponentKit简介
在 iOS 上面开发界面,需要创建视图、配置界面、视图分层等等很多步骤,也就不可避免的需要书写 N 多的代码。这还仅仅是界面设计,除此之外,完成 controllers 的回调、控制内部事务在界面上的显示效果、界面的操控和内部事务的联系等等多方面的事情都需要手动解决。
2111 0
|
缓存 数据可视化 测试技术
开源多年后,Facebook这个调试工具,再登Github热门榜
让许多工程师合作开发大型应用大多会面临一个挑战,通常没有一个人知道每个模块是如何工作的,这种技能会让开发新功能、调查Bug或优化性能变得困难,为了解决这个问题,Facebook创建并开源了Flipper,一个可扩展的跨平台的调试工具,用来调试 iOS 和 Android 应用。近日又双叒登上了Github热榜。