[转帖 cnblog 的news ]技术实力超群的Netflix,为何没有CTO

图片来自于网络
1、写在最前面
某天晚上和下属一起吃晚饭,期间聊到 Netflix 技术那些大胆的创新,事后觉得有必要总结一下,给团队分享,让大家了解世界顶级的技术组织在技术、架构、组织和文化方面的创新。让大家在埋头干活的时候,偶尔也可以抬头看看天(大处着眼,小处着手)。于是就有了这篇文章。
2、大规模生产级微服务架构实践
微服务很多公司 (eBay, Amazon, BAT) 都有,甚至比 Netflix 做得更早,但 Netflix 大概是大规模生产级微服务做得最杰出的。
100s 范围的微服务,1000s 范围的每日生产变更,10,000s 范围的实例,1,000,000s 范围的活跃客户数,1,000,000,000s 范围的度量。但是只有 10s 范围的运维工程师,没有自己的数据中心 NOC,应该算微服务 DevOps 的最高境界了。



(Netflix 微服务可视化)
3、开源整个微服务技术栈
Netflix 微服务技术栈的核心组件基本上都是开源的。Pivotal 在 2~3 年前把 Netflix 开源的这摊东西封装一下改头换面,再拼凑一些其它东西(配置中心,调用链监控等)就变成了 Spring Cloud。现在大家耳熟能详的 Zuul 网关,Eureka 服务发现注册中心,Hystrix 熔断限流,Archaius 配置等组件,Netflix 在 2012 年左右就都开源出来了。
Netflix 为啥热衷于要搞开源?
将自己的解决方案建立为行业标准和最佳实践
建立 Netflix 技术品牌
雇佣、留住和吸引顶级工程师
从共享生态中获得反馈输入并受益
4、系统全部迁移 AWS 公有云
大致在 09/10 年左右, Netflix 就开始启动上公有云战略(当然背后也是吃了自建数据中心的苦头),应用逐步向 AWS 迁移,这个过程一共持续了将近 5 年,到 15 年的时候,迁移完毕,全部应用上到 AWS。09/10 年左右的 AWS 还不太成熟,别说当时,即使现在也没有几个大公司不掂量一下敢提全部迁移公有云的战略。另外 AWS 能有今天,Netflix 也是功不可没,帮 Amazon 躺了无数的坑。

5、在 AWS 基础上打造 PaaS 平台
Netflix 在 AWS IAAS 的基础上封装打造了自己的 PaaS 云平台服务 (大部分组件开源),包括
平台运行时服务 (Eureka,Zuul, Edda,Atlas)
平台库和框架 (Karyon/Ribbon,Hystrix,RxJava, Governator,Servo, Archaius, Astyanax)
平台大数据和缓存服务 (Cassandra/ES/Hadoop Platform as a Service, EVCache,S3)
平台工具和服务 (Asgard/Aminator, SimianArmy/ChaosMonkey, ICE)
业内最近开始提出云原生 (Cloud Native) 架构的理念,Pivotal 是这个理念的主要推动者(背后主要是要推它的 Cloud Foundry 产品)。其实 Netflix 在 2013 年就提出了 Cloud Native 理念,而且它的整个平台 (AWS IAAS + PaaS) 就是云原生的。
6、两地三中心高可用
Netflix 的高可用架构也是做得大气磅礴,同城部署 3 个对等的可用区 (AWS Availability Zone),1 个甚至 2 个挂不影响可用性。

异地 (Regions) 再做对等部署,一个 Region 里头的 AZ 全挂,另外一个 Region 接着可用。

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

Cassandra 在同城多个 Zone 之间同步数据,在异地 (Inter-Region) 之间再同步,流量到 9Gbits/s,延迟 83ms,18TB 的数据备份 (2013 年的数据)。
8、镜像部署和发布自动刹车
近年 docker 容器技术大火,大家都在谈不可变基础设施 (immutable infrastructure) 的理念,本质就是镜像部署。Netflix 在 2012 年前就已经实现镜像部署,发布的单位是 AMI (Amazon Machine Image) 镜像,通过持续交付工具 Asgard(现在升级版叫 Spinnaker)直接将镜像推到 AWS 云中部署,支持蓝绿(需要至少两倍虚机),灰度和金丝雀等部署模式。

Netflix 的发布管道叫 Paved Road,就是平台团队铺好的路,由提交,构建,AMI 镜像烘焙 (Image Baking) 和发布四个阶段组成。
金丝雀发布之后,系统会自动生成金丝雀健康报告和分数(背后需要统计上千个 metrics + 复杂智能算法),达到一定的分数 (比如 80 分),才能继续 roll out。这个也称发布自动刹车。
9、反脆弱架构
Netflix 大胆提出反脆弱架构的理念(架构师受到尼古拉斯·塔勒布《反脆弱》一书的启发,并将其应用到架构领域):为了让你的系统更加健壮,不是将它们严格保护起来,而是主动随机性地增加一些破坏性测试,逼迫研发人员做好高可用。

Netflix 从周一至周五,上午 9 点到下午 3 点,混乱猴子军团会随机杀生产实例,这个叫 Chaos Monkey,还有增加延迟的 Latency Monkey。
还有 Chaos Gorilla 可以杀整个可用区 (Availability Zone),Chaos Kong 杀整个 Region。据说 Netflix 曾主动关闭一个可用区,客户没有任何影响。
国内一些互联网公司也有演习和自攻一说,但基本都是提前打招呼的,规模一般也不大,Netflix 是随机不打招呼玩真的。
10、 几乎没有流程,没有员工手册
Netflix 是一家高度重视人才密度,重自由和责任文化,轻流程的公司。公司没有正式的员工手册,只有一条简单的指导原则:

Act in Netflix’s best interest,以 Netflix 的最佳利益行事。
11 、No CTO, No Ops
Netflix 的技术这么牛逼,但它是没有技术 CTO 职位的,只有首席产品 CPO,工程团队和产品团队的 VP 都向 CPO 汇报。这样做更多是为了产品导向,便于技术和产品沟通合作,避免两边扯,避免业务驱动还是技术驱动的悖论,大家都是产品驱动。Netflix 把它称为 BusDevOps 组织架构。
Netflix 也没有独立的运维团队 (NoOps),架构 + 中间件 + 运维 + 大数据闭环统称为云平台工程 (Cloud and Platform Engineering) 团队,一个 VP 总负责,更好地对接 DevOps 文化。Netflix 的产品导向文化非常浓厚,连平台工程团队开源出来的产品都是整整齐齐的 (见 https://netflix.github.io/),PaaS 云平台是整个云平台工程团队最大的产品输出。
Netflix 的 CTO 其实是 Chief Talent Officer,负责人才招聘的,公司对人才的重视可见一斑。
12、无论公司兴衰,始终支付市场最高工资
不用多解释,这大概是 Netflix 最霸气和牛逼的一点。据我在米国的同学讲,去 Netflix 基本是硅谷顶薪,博士毕业去给开了超过 30 万美金的年薪(这还是前几年的行情)。一般进去难,去了留下来也不容易,不胜任的被客客气气劝退的有。能留下来的一般也不跳,因为再跳也没有更高的待遇了。
显然,没有顶级的人才密度,就无法支撑其高大上的技术架构和鹤立鸡群的文化。顶级的人才聚集在一起,容易碰撞迸发创新火花,捣腾出颠覆性的东西和理念。
13 、写在最后
我在这边总结 Netflix 技术做的牛逼的事情,一方面是因为钦佩,但这不是重点,毕竟目前国内基础环境和人才密度是支撑不起这种类型文化的公司;但是,他山之石,可以攻玉,Netflix 的很多技术、架构、组织和文化思路值得我们学习和借鉴。
我本人没有在 Netflix 工作过,上面的信息主要通过互联网共享资料 (特别是 slideshare) 学习解读 (有些解读可能还是偏颇的),所谓强者无秘密,Netflix 的强大也体现在它无私分享精神,它在公司内部是信息公开透明分享的,对外部也一样,几乎所有 Netflix 微服务技术栈 (也称 NetflixOSS) 你可以从 github.com/netflix 免费获得,其内部架构和技术相关资料基本上都可以通过 slideshare 或者 Netflix techblog 免费获得。在公开透明一块即使 Google、Amazon 和 Apple 这些互联网巨头都应该是自叹不如的。Netflix 公司大概是地球上开出的一朵特别奇葩耀眼的花。
向 Netflix 致敬!
[转帖 cnblog 的news ]技术实力超群的Netflix,为何没有CTO的更多相关文章
- [转帖] cnblog新闻区 “40岁以上的员工,请自觉离开”
“40岁以上的员工,请自觉离开” 投递人 itwriter 发布于 2018-04-29 22:36 评论(9) 有2733人阅读 原文链接 [收藏] « » “准确地说,华为目前要裁掉的.清退的,是 ...
- [转帖]SSD和内存数据库技术
SSD和内存数据库技术 自己的理解还是不是很对 SSD 提升的是 随机读 并没有对顺序写有多大的提升, 因为数据库采用的是redo的模式. 理论上写入 时是顺序写 所以 写并发的提升不会很大 但是会很 ...
- [转帖]开源的监控技术栈除了ELK,还有InfluxData的TICK
开源的监控技术栈除了ELK,还有InfluxData的TICK https://cloud.tencent.com/developer/news/357119 来源 | Influxdata 译者 ...
- [转帖]全方位掌握OpenStack技术知识
全方位掌握OpenStack技术知识 http://www.itpub.net/2019/06/17/2206/ 架构师技术联盟的文章 相当好呢. 大家好,我是小枣君.最近几年,OpenStack这个 ...
- [转帖]cnblog 新闻 : 亚太云计算市场报告:腾讯位列前五 份额首超谷歌
亚太云计算市场报告:腾讯位列前五 份额首超谷歌 投递人 itwriter 发布于 2019-03-18 12:06 评论(1) 有213人阅读 原文链接 [收藏] « » 美国市场研究机构 Syner ...
- 【微服务技术专题】Netflix动态化配置服务-微服务配置组件变色龙Archaius
前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特 ...
- 蓝牙Bluetooth技术手册规范下载
[背景] 之前就已经整理和转帖了和蓝牙技术相关的一些内容: [资源下载]bluetooth 协议 spec specification 蓝牙1.1.蓝牙1.2.蓝牙2.0(蓝牙2.0+EDR)区别 但 ...
- 蓝牙Bluetooth技术手册规范下载【转】
蓝牙Bluetooth技术手册规范下载 http://www.crifan.com/summary_bluetooth_specification_download/ [背景] 之前就已经整理和转帖了 ...
- Atitit.cto 与技术总监的区别
Atitit.cto 与技术总监的区别 1. 核心区别1 2. Cto主要职责1 3. 如何提升到cto1 4. CTO五种基本的必备素质:2 5. 2 1. 核心区别 技术总监(Chief Tech ...
随机推荐
- underscore.js 分析6 map函数
作用:通过转换函数(iteratee迭代器)映射列表中的每个值产生价值的新数组.iteratee传递三个参数:value,然后是迭代 index. _.map([1, 2, 3], function( ...
- Java 原生日志 java.util.logging
简介 Java 中的 Logging API 让 Java 应用可以记录不同级别的信息,它在debug过程中非常有用,如果系统因为各种各样的原因而崩溃,崩溃原因可以在日志中清晰地追溯,下面让我们来看看 ...
- #2009. 「SCOI2015」小凸玩密室
神仙题啊.完全想不出 首先看方案.可以从任意一个点开始,在这个点要先走完子树,然后走到父亲,再走兄弟,再走父亲的父亲,父亲的兄弟..一直走到1,1的另外一个子树,结束. 完全不会鸭.jpg 设f[i] ...
- 在初学Flask中遇到的小问题。
今天初步认识到了Flask这个轻量级web开发框架.对于初步认识框架的我,暂时的有了一个小小的认识, 因为初学.也没有什么代码可供参开.一下的就是一个小小的例子. # 导包from flask imp ...
- Revit开发-设置对象样式
最近需要读取RVT项目样板一些对象样式,翻了一下API,查找到下面的情况:
- VGG——Very deep convolutional networks for large-scale image recognition
1. 摘要 在使用非常小(3×3)的卷积核情况下,作者对逐渐增加网络的深度进行了全面的评估,通过设置网络层数达 16-19 层,最终效果取得了显著提升. 2. 介绍 近来,卷积神经网络在大规模图像识别 ...
- aircrack-ng无线破解实验
查看无线网卡 airmon-ng 开启网卡监听模式 airmon-ng start wlan0 扫描附近的wifi airodump-ng wlan0mon 停止扫描: ctrl c 使用airodu ...
- comet4j推送 405/500 JSON转换异常
因为Comet4J工作在NIO方式下,所以我们需要调整服务器连接器配置,更换为NOI连接器. 打开server.xml文件将找到原先的连接器配置: <Connector executor=&qu ...
- oracle和mysql对时间与字符串的转换
1,oracle to_date(#{item.value},'YYYY-MM-DD hh24-mi-ss') to_char(CRERATE_TIME,'YYYY-MM-DD hh24-mi-ss' ...
- NEWBEE软件团队 人员分配情况及分数获得方式
人员分配: PM:李桐 王骜 dev:王骜 刘垚鹏 安康 林旭鹏 黄新越 test:黄伟龙 李桐 马佐霖 黄新越 注:黄新越为女生,不方便平时的交流,所以任务分配较为灵活,特分在两个组里. 评分 ...