本文来自 阿里巴巴 信息平台资深技术专家 何亚明在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

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

2)Scuba实时数据分析系统

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

3) Deltoid数据分析工具

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

2、Facebook的开发

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

何亚明:Facebook的工具文化和多媒体QoE相关推荐

  1. LiveVideoStackCon讲师热身分享 ( 三 ) —— Facebook的工具文化与多媒体QoE

    LiveVideoStackCon 2018音视频技术大会是每年的多媒体技术人的盛宴,为了让参会者与大会讲师更多互动交流,我们推出了LiveVideoStackCon讲师热身分享第一季,在每周四晚19 ...

  2. facebook注册工具_如何打开Facebook的数据保护工具

    facebook注册工具 If you spend a lot of time on Facebook, you can burn through your mobile data pretty qu ...

  3. 终极版Facebook广告管理工具新手教程!赶紧收藏!(上篇)

    广告管理工具是一款用于创建和管理Facebook广告的工具.用户可以查看和修改所有Facebook广告系列.广告组和广告,以及查看相关结果. Facebook是很多跨境人不会错过的海外社媒营销平台,所 ...

  4. Google、Facebook的工程师文化到底是什么?

    " 近日,技术圈996事件.月饼事件让无数技术人感叹中国没有像Google.Facebook 那样行之有效的工程师文化.那么,究竟什么样的文化才是我们所追求的工程师文化呢?一起来看看左耳朵耗 ...

  5. 继WhatsApp后 Facebook聊天工具Messenger用户也突破十亿人

    PC互联网时代的社交网络霸主Facebook,正在成为移动互联网时代的移动聊天霸主.继WhatsApp用户已经超过十亿人之后,其另外一款聊天工具Facebook Messenger用户规模也超过了十亿 ...

  6. LinkedIn:用数据提高视频性能

    LinkedIn通过在视频播放过程中收集的大量数据,对多种视频指标进行实验以提高视频性能,改善用户体验.本文来自LinkedIn工程博客,LiveVideoStack对文章进行了翻译. 文 / Eva ...

  7. 音视频技术开发周刊 61期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第61期内容,祝您阅读愉快. 架构 马思伟:视频领 ...

  8. Sean Lynch谈Facebook Claspin监控工具的由来

    InfoQ中文站曾经报道过Facebook的工具文化,Claspin就是该文化的产物,形象来说,Claspin就是Cache的健康热图.该工具的创始人Sean Lynch在一篇博客中分析了它的由来. ...

  9. Linus Torvalds的安全性,Facebook的AI工具等

    在本周的开源新闻综述中,我们将看看开放数据还不是那么开放,Facebook将更多工具作为开源发布,以及更多! 开源新闻让您阅读愉快. 2015年1月17日至1月23日 万维网基金会发布第二份开放数据晴 ...

最新文章

  1. 今天开始记录自己苹果开发博客旅程!~
  2. 2008年5月网络管理员考试上午试卷参考答案
  3. ENTER键指定事件
  4. 虚函数实现多态---C++
  5. PHP警告:socket_bind():无法绑定地址
  6. 酒桌上,领导将酒泼到你脸上......
  7. 玩游戏提示计算机性能过低,如果玩游戏的fps低怎么办?八个问题和九个解决方案...
  8. sqlserver2008R2下载安装教程
  9. Cobbler-自动化部署神器01
  10. spring源码学习(1)- bean
  11. PPC手机QQ2008 最新版下载
  12. 小菜编程成长记(十一 无熟人难办事?——聊设计模式迪米特法则)
  13. wampserver大红色橘色变成绿色
  14. 牛牛牛!正则阿拉伯数字变中国大写
  15. 如何让PHP性能问题不再饱受诟病
  16. 菊花是哪个城市的市花1_2.html,花中四君子——秋菊知多少?
  17. 关于汉字的部件部首和独体字
  18. LintCode 141. 对x开根 JavaScript算法
  19. 处理autocad 2010闪退
  20. phpspreadsheet excel导入导出

热门文章

  1. iOS:quartz2D绘图 (动画)
  2. ICC_lab总结——ICC_lab2:设计规划
  3. 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控
  4. 如何成为优秀的前端工程师
  5. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(秋季赛)- 占座位(最小割)
  6. CH - 6901 骑士放置(二分图最大独立集-二分图最大匹配+奇偶拆点)
  7. HDU - 3486 Interviewe(RMQ-st表+暴力)
  8. 共享单车数据集_共享单车数据可视化报告
  9. 对校招生培养工作的建议_如何提升人才培养质量?西华的老师们正面临一场大考...
  10. mysql的explain的用途,利用Explain来分析和优化你的mysql