查看: 58570| 回复: 76
跳转到指定楼层
上一主题 下一主题
收起左侧

从Facebook海归到国内互联网公司高管(四)

   
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 大队管理员 于 2019-9-22 00:22 编辑

https://www.1point3acres.com/bbs/thread-544467-1-1.html
关于技术栈,各个方面比较多,这里先讲infra。文章较长,不喜技术者慎入。

.--我在国外只在FB做过工程,infra方面跟G比较类似,跟国内比的话应该是两个极端。硅谷其他公司,个人理解或多或少介于两者之间,欢迎知情者补充。

要作技术对比,理解人才背景和发展历史很有帮助。硅谷的技术圈是一个联合国,聚集了各个国家的顶尖人才,土生土长的美国人反而是少数。中国虽然人多,数理化的底子也好,但毕竟只是一个国家。然后国内互联网公司比美国多了不知道多少倍,不管美国有的还是没有的,中国都有,还不止一个版本。所以有限的资源还分得很散。
. 1point 3acres
现在很多人说互联网寒冬,应该是跟之前人口红利时期疯狂扩张对比。那时候,我们公司研发一年从100扩大到1000。滴滴Uber大战期间,从无到有搭建各个部门,都是几百几百的进人,没人脉的海归都不给管理岗。平安搞智慧城市半年就进了500人。这种例子遍地都是。相比之下,FB增幅长期都坚持每年不超过30%。

这种市场推动下,国内大部分技术人员都不是985或者计算机专业。国内又没有一个良好的转专业或者选修机制,课程水平大家也都知道。那为啥感觉国内各种app功能比美国多无数倍,也不见得一天到晚当机或者长得不忍直视呢?这不得不佩服国人的智慧,演化出一套构架让任何小白看一本Java入门就能开始贡献产品级代码。

也正是因为这套架构,让程序员变成了一个劳动密集型工种,让996变得家喻户晓,程序员单位时间生产力跟美国截然不同。

代码管理

代码管理的重要区别就是 FG 是一个代码库加主干开发,国内除了个别玩Go的,一般至少一个项目一个,很容易就到四位数级别。关于repo数量,很多争议。单个repo主干开发,确实影响迭代速度。我在FB升级numpy,折腾了一个多月解决各种dependency,最后还是有两个build搞不定,强行升级让他们团队自己搞了。国内也缺少git/hg高手,check in的冲突都不一定能摆平。开源的gitlab也不scale。老板催急了肯定就顾不了那么多了。

. Χ多repo国外也很常见。但是在国内,合作意识本来就不足,repo多了雪上加霜。如果你回来做管理,可能处理最多的问题就是下属抱怨事情不能推进因为其他部门不配合。有时候甚至故意不给代码库权限,让你没法估计工作量。我一个朋友公司,infra想要int改long,业务研发一直拖着,多次惊动CTO出面也无济于事。业务优先你能怎么办?跨部门提交代码的事情国内我从来没听说过。

这种情况下,各个部门重造轮子是常有的事。自己造轮子能壮大团队,谈合作只会得罪人,你选哪个?哪怕CTO级别,手心手背都是肉,往往也就睁只眼闭只眼了。
.--
除了不合作这种软性问题,多repo也有技术硬伤。首先是公共lib的管理,一个公司几十个JSON lib,不兼容导致生产事故是常有的事。即便有同一个lib,跨repo的变更没法保证原子性。还是那个int改long的事,四位数的repo改了整整三个月,中间因为RPC类型不匹配出过两次严重down机事故。在FB的话,codemod自动生成一个大diff,assign到不同部门,大家各自review然后approve就完事了。
. Χ
要解决这个问题,不光要有repo的技术,还要有意识。否则代码合并了,每个项目一个目录,没人维护公共的东西比如lib和RPC,没有意义。

微服务
.google  и
微服务主要是指业务逻辑层的架构,也就是承接前端的各种请求,根据业务逻辑,拆解成底层各种数据访问或者其他网络请求的这个模块。
. From 1point 3acres bbs
FB的这个部分,从创始到现在,一直是一个叫www的单一php代码库完成。只是编译系统从最早的php原生解释器,到hiphop编译器(php->C++),到just-in-time的hhvm编译器。FB所有桌面和app的全部业务逻辑都集中在一个代码库里面,无可否认,学习周期还是比较长的。而且经常重构,基本一年不碰,可能就不知道怎么写了,写出来也不符合新规范要求。

国内大部分公司都经历了业务逻辑层从单体到微服务的转型,刚开始是因为单体服务牵一发动全身,实在没人搞得定,后来服务越拆越细。有个统计,针对8个数千人研发团队的公司,除了新浪,其余都是四位数的微服务。其中5个公司微服务比研发人员多。有个公司仅7000台服务器就跑了3000个微服务。

具体每个微服务在做什么?举个例子,比如我们要做一个社交用户管理系统,那首先要有个用户数据库保存用户基本信息。为了保证服务稳定和数据隔离,就会有个专门访问这个用户数据库的微服务,所有应用都必须通过这个微服务访问用户数据库。为了保证性能,还会加个缓存,一般是Redis,然后又有个专门访问这个缓存的微服务。在这两个数据底层服务之上,有个业务层的微服务负责新增、修改、删除用户等前端请求。如果需要批量修改数据,又会有个批量修改的微服务。批量修改往往是异步服务,又会增加一个队列,和专门访问这个队列的微服务。这就五个微服务了。用户需要交朋友,那就需要一个用户关系数据库和刚才罗列的对应这个新数据的五个微服务。然后现在删除老用户同时需要异步批量删除朋友关系,所以又要一个新的微服务专门处理删除老用户的请求。再加上状态更新、聊天、推荐等系统,很容易就三位数了。

服务细了,门槛就低了,能写的人也就多了。现在Spring Boot/Cloud 发展很快,加上Java各种牛逼annotation,我看到的用户系统,虽然可能有10+个微服务,自己写的代码也就100多行。相比之下,FB的用户系统,恐怕现在已经没有几个人能彻底搞明白了。

但是问题也就来了,比工程师人数还多的微服务,出了问题怎么办?事故定位就是个大难题,经常有事故完全不知道原因,只是碰巧重启或者回滚就好了。配置管理、依赖关系分析也非常棘手。就算服务写得天衣无缝同时运维团队超级牛逼,执行一点故障都没有,资源浪费就没法解决了。每个服务都只敢按照尖峰流量配置资源,平均CPU利用率在1%以下很常见。下面讲multi-tenant服务会进一步讨论资源利用率问题。

测试系统. check 1point3acres for more.

国内几乎所有的公司都有测试团队,不像硅谷工程师自测是主流。这倒不是问题的关键。FB很多给新人的task就是给系统写测试案例,说白了也就是测试的活。
您好!
本帖隐藏的内容需要积分高于 20 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 20 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

写高并发的multi-tenant服务还是只有C++。 C++11以上的很多feature能够大幅度减少代码复杂度,尤其smart point是必须的。国内懂C++和这些feature的人很少。看看CSDN还有知乎上讨论C++的帖子就知道了。. ----

海归能做什么?

理解这些问题以后,回国面试不妨跟面试官讨论讨论,相信一定会有很多共鸣,因为这些事每家都遇到。FB回国的有不少在做infra方面的创业,很多是为了提高工程效率。

但是,实事求是的说,这么多年了,跟业务日新月异的变化比,国内infra的改变微乎其微。在我看来,关键问题倒不一定是技术能力。我曾带领三个人C++半年复现了FB的Scuba系统,单表的任何SQL查询,哪怕数十亿记录也只要亚秒级的时间。最主要的问题还是管理,而且越早介入越好。

所以我更想做中小公司技术负责人而不是大公司哪怕VP。变化从来都是从小公司开始的。我现在招人就是硅谷的技术面试+文化的形式,还会先来一轮网上笔试。比leetcode初级还简单的题也能淘汰一半左右。目前猎头推了50份简历只录了一个,很多一些知名大公司的人,发现基本数据结构都不知道。这样能走多远坦白说我也不知道,但比天天开发 me too 的功能就开心太多了。

评分

参与人数 120大米 +422 收起 理由
ohohgod + 2 很有用的信息!
suxiaoyu + 1 赞一个
xdog + 1 赞一个
limifly + 2 很有用的信息!
ClaireRenai + 2 给你点个赞!

查看全部评分


上一篇:问问大家对美国医疗系统的看法和经验
下一篇:有没有苏州微软的小伙伴

本帖被以下淘专辑推荐:

  • · 海归|主题: 94, 订阅: 18
全局:
干货太多了。。fb由于infra support太好了导致业务层研发又快又方便,但同时也失去了进一步了解整个系统的机会。还是应该多换换组或者公司学习下不同层面的东西
回复

使用道具 举报

yhfyhf 2019-9-22 05:52:48 | 只看该作者
全局:
感谢楼主,果然作为fb的早期员工,对很多系统的见解非常insightful。

另外吹一下facebook的CI/CD - fb的www repo早在16/17年就变成了push from master: https://engineering.fb.com/web/rapid-release-at-massive-scale/。很多在17年及之后入职fb的小伙伴也许觉得这很自然,但其实在这种体量和scale下做到这种程度的CI/CD,豪不夸张的说,已经远远远远领先于整个业界。

评分

参与人数 1大米 +10 收起 理由
admin + 10

查看全部评分

回复

使用道具 举报

 楼主| alexwy 2019-9-22 11:03:41 来自APP | 只看该作者
全局:
dandan22 发表于 2019/09/22 02:08:23
感谢fb前辈分享经验,受益匪浅!不知道能否再跟G家,A家对比着讲一下,有哪些相同和不同的地方,trade-off?. 1point3acres

还有就是既然大家都知道这些infra痛点,为什么在业务变化上日新月异,而infra...
A家完全不知道。G家个人感觉比F更多样化一些,FB非常homogenous,任何事情只有一个系统,不管多烂,其他组都没有重造轮子的机会。另外个人感觉F对自动化追求特别极致,一个机械工作人工做两次以上还没自动化解决方法会被各种diss…

infra改革肯定不是不重视,就算CTO不重视,CEO不可能不关注人和机器的开支。之前CFO都开始问我机房开销那么大,到底CPU利用率多少的问题了。所以我说大家放心谈,不用担心老大不在乎。

问题是怎么做。我之前说过国内海龟非常少,BAT TMD VP以上级别几乎没有海归,至少没有FG infra混过的海归。而且也不是每个回来的都熟悉infra 0-1的过程,做的往往是99.9%到99.99%甚至更高的活。这些事情,不是听几个宣讲,看几篇论文就能依样画葫芦的,太多细节问题。另外就是摊子大了不好搞,如果一个上千人的团队,里面一半的人不知道排序的复杂度,你谈工程效率就有点扯了。所以我现在特别怕大团队空降的活,刚回来为了落地熟悉还好,天天做就太累心了。


补充内容 (2019-9-22 03:11):
阿里有两个FB前E8,一个是之前做hiphop的,不想管事拿了P10,一个应该是现在AI infra的VP。阿里技术中台的负责人毕玄是个老阿里,业界名气非常大。

评分

参与人数 4大米 +53 收起 理由
xzv666 + 1 赞一个
ktmud + 1 赞一个
dandan22 + 1 很有用的信息!
Warald + 50 很有用的信息!

查看全部评分

回复

使用道具 举报

松鼠山 2019-9-22 13:19:14 | 只看该作者
全局:
alexwy 发表于 2019-9-21 19:03
A家完全不知道。G家个人感觉比F更多样化一些,FB非常homogenous,任何事情只有一个系统,不管多烂,其他组 ...
. ----
您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

 楼主| alexwy 2019-9-22 17:31:54 | 只看该作者
全局:
BryanBai 发表于 2019-9-22 16:05
我是做DevOps CI/CD 方面的architect 。国内外企混过,北美十年经验。现在硅谷。这种背景国内有市场吗?

非常有!尤其如果你能搞定整套系统而不是某个模块的话。不过得找个识货的人,大公司要找毕玄这种级别的。中小公司的话,如果你其他的infra也略知一二,找个懂行的CTO或者CEO,能拿到比如infra 的 VP,最起码。个人觉得中小公司比较有前途,因为infra整套都是息息相关的,比如Java微服务不改造,你测试环境问题还是解决不了。

评分

参与人数 2大米 +2 收起 理由
cser017 + 1 很有用的信息!
BryanBai + 1 赞一个

查看全部评分

回复

使用道具 举报

BryanBai 2019-9-22 23:01:16 来自APP | 只看该作者
全局:
我又看了一遍这篇技术干货,太有共鸣了。其实现在硅谷的许多infra和测试自动化的雏型,15-20年前国内外企都有也都在用,但同样的一批工程师离开外企去了民企,那套东西就全扔了。不是技术不对,而是水土不服。我是软件工程专业的,深知软件工程这种东西属于锦上添花的利器,也就是scale up,大公司为了降低成本没得说,独角兽就要两说了,有眼光的初期就设计和构建端到端自动化为了以后变大后更敏捷。但大部分国内公司,都是应用创新,而且成败也不在技术(而是资本),这种一锤子买卖,就让人忽视这些infra方面的东西了,怎么快怎么便宜,怎么来。以后真能上市再说。

另外做DevOps的也属于万金油,纵向从硬件网络到应用,横行研发测试到客服销售都要懂。各种架构语言拿起来就要用。大公司一般都是自己培养的,小公司又不重视,所以要找识货的。
回复

使用道具 举报

 楼主| alexwy 2019-9-23 22:45:44 | 只看该作者
全局:
neverlandzzy 发表于 2019-9-23 08:02
DE指的是?所谓做管理就是必须management track是吧,tech track即使做到E6/E7也不是真正在做管理?

(二)里面DE有比较多讨论。不能参加performance review会议就不是真正的管理。当然回国另当别论,tech leader 背景完全可以说是管理,因为国内管理对技术要求很高,要懂细节,人事方面的东西反倒不用那么专业,反正绩效管理本来也混乱,你很难做更差。。。
回复

使用道具 举报

全局:
感谢lz最后的建议
回复

使用道具 举报

全局:
写的真好,赞,希望能看到后续
回复

使用道具 举报

全局:
真的很感谢楼主坚持分享 无论是工作和生活都了解学习到了很多 respect!
回复

使用道具 举报

🔗
起名真烦 2019-9-21 22:17:46 | 只看该作者
全局:
楼主,偏个题,
美国国籍在中国赚钱是要给美国交税吧,. 1point3acres
您都是怎么避税的?
回复

使用道具 举报

全局:
感谢楼主分享!!
回复

使用道具 举报

全局:
感谢fb前辈分享经验,受益匪浅!不知道能否再跟G家,A家对比着讲一下,有哪些相同和不同的地方,trade-off?. .и

还有就是既然大家都知道这些infra痛点,为什么在业务变化上日新月异,而infra改变比较慢?是因为不重视,还是大家觉得不重要?还是觉得很重要但是觉得技术上太难实现?
回复

使用道具 举报

🔗
shawnchangsdu 2019-9-22 03:55:16 | 只看该作者
全局:
dandan22 发表于 2019-9-22 02:08
感谢fb前辈分享经验,受益匪浅!不知道能否再跟G家,A家对比着讲一下,有哪些相同和不同的地方,trade-off ...

个人拙见
不管白猫黑猫
老猫新猫
现在能抓耗子
就是好猫

当然我还是认为在国内做infra投入产出比很低
所以引起重视就比较少
怎投入产出比低是具体如何投入大产出低的
那就会涉及到不少方面了
回复

使用道具 举报

🔗
黄金霸者 2019-9-22 05:07:12 | 只看该作者
全局:
感谢楼主,真的是受益匪浅!很久没有在地里看到这么干货满满的内容了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
  • ↑本版用于讨论归国工作,海归,归海等事宜。请勿发表政治言论
  • ☑短期回国,出行事宜,请去🔗生活经验版
  • ☑首次出国工作,请去🔗出国版
  • ☑留学相关讨论请去🔗留学申请大区

本版积分规则

>
快速回复 返回顶部 返回列表