没有CTO的Netflix有哪些值得我们学习的工程文化?

2018-06-11 16:46

  Netflix 是美国在线影片租赁商,曾利用超过 100 亿次的用户观看纪录分析观众喜好,制作出热播剧集《纸牌屋》。Netflix 的工程文化,被很多国内一线互联网公司研究借鉴,但实际上,这家技术实力超群的公司,却是没有 CTO 的。

  某天晚上和下属一起吃晚饭,期间聊到 Netflix 技术那些大胆的创新,事后觉得有必要总结一下,给团队分享,让大家了解世界的技术组织在技术、架构、组织和文化方面的创新。让大家在埋头干活的时候,偶尔也可以抬头看看天(大处着眼,小处着手)。于是就有了这篇文章。

  100s 范围的微服务,1000s 范围的每日生产变更,10,000s 范围的实例,1,000,000s 范围的活跃客户数,1,000,000,000s 范围的度量。但是只有 10s 范围的运维工程师,没有自己的数据中心 NOC,应该算微服务 DevOps 的最高境界了。

  Netflix 微服务技术栈的核心组件基本上都是开源的。Pivotal 在 2~3 年前把 Netflix 开源的这摊东西封装一下改头换面,再一些其它东西(配置中心,调用链等)就变成了 Spring Cloud。现在大家耳熟能详的 Zuul 网关,Eureka 服务发现注册中心,Hystrix 熔断限流,Archaius 配置等组件,Netflix 在 2012 年左右就都开源出来了。

  大致在 09/10 年左右, Netflix 就开始启动上公有云战略(当然背后也是吃了自建数据中心的苦头),应用逐步向 AWS 迁移,这个过程一共持续了将近 5 年,到 15 年的时候,迁移完毕,全部应用上到 AWS。09/10 年左右的 AWS 还不太成熟,别说当时,即使现在也没有几个大公司不掂量一下敢提全部迁移公有云的战略。另外 AWS 能有今天,Netflix 也是功不可没,帮 Amazon 趟了无数的坑。

  Netflix 在 AWS IAAS 的基础上封装打造了自己的 PaaS 云平台服务 (大部分组件开源),包括

  Netflix 原来用 Oracle 等传统 Sql 数据库,但是受到扩展性挑战。公司架构管理层大胆性提出使用 Cassandra Nosql 作为主要的持久化存储机制,Netflix 在 2012 年就做到大部分数据存放 Cassandra 和 S3 等非关系数据库上。这个架构决策也常大胆有魄力,一般没有几个公司敢这么干的。Cassandra 本质上是一种 KV 数据库,更像 sorted map 存储,不支持事务,不支持 join。在 CAP 理论中,Cassandra 是展现 AP 特性,无中心分散式高可用,天然支持跨数据中心数据同步,这大概是 Netflix 最看重的特性。Cassandra 是读慢写快的特性(一般数据库是读快写慢),Netflix 大量使用 Memcached 做缓存补偿。

  近年 docker 容器技术大火,大家都在谈不可变基础设施 (immutable infrastructure) 的,本质就是镜像部署。Netflix 在 2012 年前就已经实现镜像部署,发布的单位是 AMI(Amazon Machine Image) 镜像,通过持续交付工具 Asgard(现在升级版叫 Spinnaker)直接将镜像推到 AWS 云中部署,支持蓝绿(需要至少两倍虚机),灰度和金丝雀等部署模式。

  金丝雀发布之后,系统会自动生成金丝雀健康报告和分数(背后需要统计上千个 metrics + 复杂智能算法),达到一定的分数 (比如 80 分),才能继续 roll out。这个也称发布自动刹车。

  Netflix 大胆提出反脆弱架构的(架构师受到尼古拉斯·塔勒布《反脆弱》一书的,并将其应用到架构领域):为了让你的系统更加健壮,不是将它们严格起来,而是主动随机性地增加一些性测试,研发人员做好高可用。

  国内一些互联网公司也有演习和自攻一说,但基本都是提前打招呼的,规模一般也不大,Netflix 是随机不打招呼玩线、几乎没有流程,没有员工手册

  Netflix 的技术这么牛逼,但它是没有技术 CTO 职位的,只有首席产品 CPO,工程团队和产品团队的 VP 都向 CPO 汇报。这样做更多是为了产品导向,便于技术和产品沟通合作,避免两边扯,避免业务驱动还是技术驱动的悖论,大家都是产品驱动。Netflix 把它称为 BusDevOps 组织架构。

  不用多解释,这大概是 Netflix 最霸气和牛逼的一点。据我在米国的同学讲,去 Netflix 基本是硅谷顶薪,博士毕业去给开了超过 30 万美金的年薪(这还是前几年的行情)。一般进去难,去了留下来也不容易,不胜任的被客客气气劝退的有。能留下来的一般也不跳,因为再跳也没有更高的待遇了。

  我本人没有在 Netflix 工作过,的信息主要通过互联网共享资料 (特别是 slideshare) 学习解读 (有些解读可能还是偏颇的),所谓强者无秘密,Netflix 的强大也体现在它分享,它在公司内部是信息公开透明分享的,对外部也一样,几乎所有 Netflix 微服务技术栈 (也称 NetflixOSS) 你可以从netflix 免费获得,其内部架构和技术相关资料基本上都可以通过 slideshare 或者 Netflix techblog 免费获得。在公开透明一块即使 Google、Amazon 和 Apple 这些互联网巨头都应该是自叹不如的。Netflix 公司大概是地球上开出的一朵特别奇葩耀眼的花。

  杨波,拍拍贷基础框架研发总监。具有超过 10 年的互联网分布式系统研发和架构经验,曾先后就职于:eBay 中国研发中心(eBay CDC),任资深研发工程师,参与亿贝 API 平台研发,携程旅游网(Ctrip),任技术研发总监,主导携程大规模 SOA 体系建设,唯品会(VIPShop),任资深云平台架构师,负责容器 PaaS 平台的调研和架构。