Netflix的牛是如何炼成的?

简介: Netflix的牛是如何炼成的?

Netflix是一家在线影片租赁提供商。公司能够提供Netflix超大数量的DVD,而且能够让顾客快速方便的挑选影片,同时免费递送。Netflix已经连续五次被评为顾客最满意的网站。可以通过PC、TV及iPad、iPhone收看电影、电视节目,可通过WiiXbox360PS3等设备连接TV。


Netflix的牛在哪里?

可以看几个信息。

使用AWS之前,Netflix使用的是Oracle和IBM的技术来支撑其业务发展的。而现在,Netflix基于AWS构建自己的技术生态。 Netflix已经开源的许多基于全球PaaS平台下的组件以提供在云端的创建和运行高可用服务的最佳实践。


Netflix已经成为Acme Air的一家技术供应商(Acme Air这个产品采用了Netflix OSS的技术,特别是Karyon, Eureka, Hystrix和Ribbon)


ps:full set of NetflixOSS components is at http://http://netflix.github.io


Netflix面临的挑战


  • big:
  • EC2 Instances >100,000
  • CPU Cores >800,000
  • 每天有20%业务是AutoScaling进行弹性伸缩
  • ELB Traffic > 50 Gbps / Per Region
  • 网络流量 Peak Time > 37% internet traffic of USA
  • 大量的Accounts
  • fast:保持创新速度,出新业务很快
  • 1,000s changes
  • 1,000,000s new customers
  • 1,000,000,000s hours streamed

他们如何做到又big和fast呢?


牛是如何炼成的


在AWS re上,Dave Hahn(CORE Team / Netflix)分享了一个话题"Another Day in the Life of a Netflix Engineer (DEV209) ”,从中可以窥见一些端倪。

ps:link https://www.youtube.com/watch?v=aWgtRKfrtMY&feature=youtu.be


牛的背后尽是苦,不幸总是相似的。他们也曾遭遇无奈的宕机!!!


image.png


关于Chaos Principle,网上有参考资料:


1:Build a Hypothesis around Steady State Behavior


把系统当成黑盒,chaos专注在系统does work,而不是尽量验证它如何工作。 例如当故障或某一个状态发生到恢复期间,系统的吞吐量,错误率,延时分布等。


Focus on the measurable output of a system, rather than internal attributes of the system.  Measurements of that output over a short period of time constitute a proxy for the system’s steady state.  The overall system’s throughput, error rates, latency percentiles, etc. could all be metrics of interest representing steady state behavior.  By focusing on systemic behavior patterns during experiments, Chaos verifies that the system does work, rather than trying to validate how it works.


Chaos Monkey是最受关注的一个产品,顾名思义就是用来捣乱的,怎么捣乱?


把某些运算设备定制掉;把系统延迟时间调长等等。。。Chaos系列还可以模拟单机房故障、


 Chaos Monkey 最新版本依赖于Spinnaker这个持续发布平台。下面就不翻译了...


This version of Chaos Monkey is fully integrated with Spinnaker, the continuous delivery platform that we use at Netflix. You must be managing your apps with Spinnaker to use Chaos Monkey to terminate instances.

Chaos Monkey should work with any backend that Spinnaker supports (AWS, GCP, Azure, Kubernetes, Cloud Foundry). It has been tested with AWS and Kubernetes.


2:Vary Real-world Events


实际创造真实环境的事件,比如硬件fail,软件不可用来观察演练。


3:Run Experiments in Production


系统的行为取决于环境和通讯模式,采样真正的流量是唯一的方法来可靠地捕获请求路径。为了保证系统运行的真实性和当前部署的系统的相关性的真实性,chaos喜欢直接在生产流量实验。


4:Automate Experiments to Run Continuously


Running experiments manually is labor-intensive and ultimately unsustainable.  Automate experiments and run them continuously.  Chaos Engineering builds automation into the system to drive both orchestration and analysis.

chaos工程师任务手工的故障演练不可持续,因此构建自动化演练的机制。


强大的监控和部署


监控采用Vizceral,Vizeral已开源,可以参考 http://netflix.github.io/

可以将error的流量负载到多个zone,清晰化管理;zone内部也通过该工具监控。


image.png


Spinner是Netflix统一部署系统。


image.png


设计原则

在Mastering Chaos-- A Netflix Guide to Microservices  分享中,Josh Evans(Engineering Leader) 再次总结了netflix公司的设计原则,涵盖架构、运维及组织。


Dependency

ps:从单体架构演进到微服务架构,依赖会增加;复杂度增加则熵增加。

提供以下几种解决方案。

Circuit breakers, fallbacks, chaos ---保护、故障注入演练

Simple clients

Eventual consistency  --放弃分布式事务,最终一致性

Multi-region failover--跨机房FO能力


Scale

Auto-scaling  自动扩展,扩展都会做,要自动扩展、弹性也不简单

Redundancy – avoid SPoF  

Partitioned workloads

Failure-driven design

Chaos under load---对负载做chaos


Variance

Engineered operations

Understood cost of variance

Prioritized support by impact


Change

Automated delivery  

Integrated practices


Organization & Architecture

Solutions first, team second


文化

早在2009年, Netflix的CEO和首席人才官就做了一份127页的PPT,命名为《自由&责任的文化》,这份PPT在网上被查阅超过了600万次,甚至被Facebook公司的COO桑德伯格称为“硅谷最重要的文件”。这里摘录几条,尝试解读。

价值观

价值观不是挂在墙上的,公司真正的价值观应该是具体通过哪些人被奖励、被提升来体现。


image.png


真正的价值观是被员工所重视的行为和技能,该公司包括了9条:判断力、沟通力、影响力、好奇心、创新、勇气、热情、诚实、无私



image.png


自由和责任

作为一个软件工程师你有充分的自由做出各项选择。Netflix每个工程师都可以在部署和生产环境做出调整改变,这些操作不需要IT人员任何操作。什么是责任,你要为你做的每个错误选择而负责,你可能因为一个错误选择造成这个系统不稳定或者其他系统不稳定,那么你要尽快想办法找出解决方案把影响降到最低,另外一个责任是尽快把这个缺陷修好并且发布一个新的软件。自由与责任最好的体现是Netflix的休假制,任何人任何时间都可以修长的假期,这也是我站在这里的原因之一,休假是你的自由,但是你相应的责任是什么,你休假之前要把你该做的事情做好。而且你的休假不能给公司带来任何负面影响,其实你已经开始休假了,如果你的系统发生问题你也有责任在任何时间任何地方解决这个问题。


总结:Netflix独创了自己的企业文化、工程师文化,但成功的公司有相同的,就是都有确定的使命和价值观,雇佣优秀的人。在架构体系上,深度使用云平台,搭建多中心,面向失败设计、自动化故障演练测试、持续发布等对于大型互联网应用是非常好的示范。我们team曾创新故障注入组件,现已下沉到中间件。演练包括稳定性和资金安全case!


参考资料:互联网

自由&责任的文化

Mastering Chaos-- A Netflix Guide to Microservices  

Another Day in the Life of a Netflix Engineer (DEV209)

相关文章
|
5月前
|
架构师 安全 前端开发
阿里P9架构师推荐的Spring领域巅峰之作,颠覆了我对Spring的认知
你第一次接触spring框架是在什么时候?相信很多人和我一样,第一次了解spring都不是做项目的时候用到,而是在网上看到或者是听到过一个叫做spring的框架,这个框架号称完爆之前的structs和structs2,吸引了不少人的注意。
|
10月前
|
消息中间件 SpringCloudAlibaba Java
SpringCloud Alibaba 框架背后的故事
Spring Cloud Alibaba是Spring Cloud的一个子项目,它是由阿里巴巴公司推出的,用于构建基于微服务架构的分布式应用程序的开源框架。它与Spring Cloud的其他组件(如Netflix OSS)相结合,为开发人员提供了丰富的工具和功能,以便更轻松地构建、部署和管理分布式系统。
|
5月前
|
架构师 Java 数据库连接
震精!十年系统架构师每天熬夜到天明,竟在写Spring企业开发详解
回顾Spring的光辉岁月,一路与时俱进,引领时代之潮流。即便发生了多次版本的升级,其整体框架依然是向下兼容的,在这一点上,Spring明显区别于Struts、Hibernate 等框架的升级风格。
|
10月前
|
安全 Java 数据库
弯道超车!阿里甩出Spring Security宝典我粉了
据有关数据表明Spring Security在Java应用安全领域已经慢慢成为首先被推崇的安全解决方案。虽然它在Java应用安全领域所占比重越来越大,但大多数开发者面对Spring Security这样的“庞然大物”时无从入手,也因为对其不够了解而在实际项目中不敢轻易采用。如何学?怎么把它引入到项目里?已经是每一个开发人员需要考虑的问题。
|
运维 监控 前端开发
竟然开源,万人围观,spring-cloud详细解说
竟然开源,万人围观,spring-cloud详细解说
156 0
|
消息中间件 负载均衡 监控
国王小组:搭建交易所开发完整的Spring Cloud框架
关于SpringCloud Spring Cloud是一个有序的框架集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发方式完成 一键启动和部署。Spring Cloud并不重复制造车轮。它只是结合了各家公司开发的成熟实用的服务框架。通过Spring Boot风格的重新封装,屏蔽了复杂的配置和实现原理,最后给开发 作者留下了一套简单易懂、易于部署、易于维护的分布式系统开发套件。一般来说,一个完整的Spring Cloud框架应该是如下图所示。
国王小组:搭建交易所开发完整的Spring Cloud框架
|
负载均衡 监控 前端开发
SpringCloud Netflix学习从练气到化虚
这篇文章是总结SpringCloud NetFlix的,其中使用的Eureka、Hystrix、zuul、feign等技术已经停更,目前是不推荐使用的,但是为了弄清楚微服务的架构演进,以及不同组件之间的差异性,笔者感觉还是需要学习这些已经过时的技术的,循序渐进式的学习才是最好的学习方法。
184 0
SpringCloud Netflix学习从练气到化虚
|
UED 流计算
Netflix 是如何做决策的? | 1. Netflix 的决策制定
Netflix 是如何做决策的? | 1. Netflix 的决策制定
86 0
Netflix 是如何做决策的? | 1. Netflix 的决策制定
|
XML 缓存 NoSQL
恐怖!这份神仙架构笔记,简直把所有spring boot的核心技术都写出来了!
自从 structs2 出现上次的漏洞以后,对 spring 的关注度开始越来越浓。以前 spring 开发需要配置一大堆的 xml,后台 spring 加入了 annotaion,使得 xml 配置简化了很多,当然还是有些配置需要使用 xml,比如申明 component scan 等。Spring 开了一个新的 model spring boot,主要思想是降低 spring 的入门,使得新手可以以最快的速度让程序在 spring 框架下跑起来。
170 0
|
缓存 自然语言处理 负载均衡
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)
Dubbo 就是靠它崭露头角!(身为开源框架很重要的一点)(下)