Netflix在持续扩大其基础设施,无论是在Amazon Wed Services还是在世界各地的数据中心。由于这种扩张,我们开发了Chaos Monkey和Chaos Gorilla的新伙伴:Chaos Kong。
Edberg在Netflix领导着一支可靠的团队,同时也是Raddit第一个有偿职工,他就Netflix公司如何管理其庞大的经营和这个过程中开发人员的作用做了一次广泛的会谈。
到Netflix请求视频首先经过API,API每天接受20亿次请求,API将这些请求路由到Netflix后端服务。系统记录这项活动每天产生约70到80亿个数据点。
“我们喜欢说我们的日志系统也可以播放电影”,Edberg说,“关键的是,我们几乎一切都是自动化,当有一个操作任务时,我们试图找出如何自动化”。
Simian Army持续发展
这包括Chaos Monkey,可以随机关闭Amazon云平台虚拟机的一个弹性工具。我们的目标是设计出能允许在运行时偶然出错的应用程序,这就是被我们熟知的Simian Army,Netflix的套件之一。同时也包括可以禁用整个可用区的Chaos Gorilla。每一个Amazon地区都包含了一个可用区,允许用户创建本地停机的故障转移选项。
自从Netflix在Amazon三个不同的地方(Virginia, Oregon and Europe-West in Dublin)运行后就开发出了Chaos Kong,一个能模拟影响整个Amazon地区停机的工具,并能将业务转移到其他地区,Netflix公司使用了Amazon的预留实例,以确保有能力从一个地区到另一个地区的大规模流量转移。
以下是Edberg谈话重点的总结:
采用云技术(和一个巨大的CDN):Netflix已经成为Amazon Web Services和云驱动公司的典范,很多内容通过数据中心来服务。“我们在云上运行任何服务,但那仅仅是表面上的控制”,Edberg说,“所有的视频来自于我们的CDN上”。Netflix的CDN部署在全球21个数据中心。代理服务器将数据中心和AWS的“对话”。Netflix设计了自己的4U服务器,这些服务器的供应商包括Supermicro、Intel、日立和Seagate。
Netflix的DevOps:Netflix的开发团队每天发布的部署超过100个更新,公司遵循的“DevOps”模式,开发人员都要编写和部署代码,谁开发,谁负责。“我们聘请负责人的成年人,相信他们能够做好自己应该做的”,他说,“它工作的很好,当他们需要的时候开发商会部署生产,如果有东西坏了,你也必须要解决它,即使是凌晨4点”。
并不是说这个过程有时候很乏味,“开发人员善于了解他们服务的惊险性”,Edberg说,“这种分布式基础设施的缺点之一是,你可能并不知道你的改变将影响上下游的依赖性”,虽然很多服务都受其范围的限制,因此我们可以创建一个像Fast Properties一样的配置工具允许开发者扩大他们的系统变化范围,“我们正在努力使其变得更好”。
冗余三原则:“我们从来没有将数据只保存在一台机器上”,Edberg说,“我们确信我们掌握着三个区域的一切,我要求在三个可用区运行,因此他们在三个数据中心中运行”。公司的Cassandra数据库架构在三个不同的区域中运行。
对于所有的Netflix的技术成就,Edberg的商业模式迎来了挑战:停机时间的实际成本很难计算,公司的收入是基于月度订阅,而不是每天或每小时的交易,撤销是关键的指标,不能全部归因于停机时间。(编译/张磊 审校/包研)