尽管Netflix是全球***的云用户之一,但这家大型在线影片租赁服务商还没有把所有的东西都放在云上。
Netflix不仅是一家大型公司,同时也是一家大型的云用户。该公司在全球40多个国家中拥有3800万名会员,每月传送的视频内容长达数十亿个小时。Netflix所有面向客户的服务,例如根据浏览记录向用户推荐个性化内容的庞大数据库,几乎都在亚马逊Web服务(以下简称为亚马逊AWS)的公有云上运行。
Netflix云解决方案总监Ariel Tseitlin
该公司拥有一个名为“开放连接”( Open Connect)的内容交付平台。这一平台用于管理与Netflix合作的ISP(互联网服务提供商),以更好地将电影视频流传输给用户。作为全球***的云用户之一,Netflix从其自身的业务运营中总结了许多经验和教训。在近期于美国马萨诸塞州召开的技术***云峰会中,Netflix 的云解决方案总监Ariel Tseitlin总结了关于企业如何使用云的三大经验。
经验1:创建微服务
Netflix的一个目标是尽可能地为每个应用创建一个极短的摘要,以***程度地降低云服务宕机和服务失败所造成的影响。目前Tseitlin主要负责组建Netflix自己的云并确保这些云的可靠性。Tseitlin称,如果这一举措取得成功,那么将可极大地降低云服务中断的“杀伤半径”。
比方说,如果Netflix的个性化服务发生了故障,那么公司将默认提供一个涵盖范围更广的推荐电影列表,为用户推荐当下最为流行的电影。但是对于用户来说,这些推荐列表未必是个性化的。这将***限度地降低滚雪球效应,防止一个服务影响到其他服务。
经验2:设置冗余
将应用和服务的功能部署至云上是一回事,对应用和服务进行扩展,并确保它们24小时运行则是另外一回事。这也是Netflix在全球水平地扩展其服务的原因。每一个服务都被部署到至少三个“可用区域”(简称为AZ)。在亚马逊AWS上,这些可用区域都是相互孤立的区域。为了防止发生故障,亚马逊AWS在服务水平协议中建议每个服务都要部署到至少两个可用区域内。Netflix不仅将他们的服务部署在三个可用区域内,而且每个服务还都被独立地进行扩展。一旦某个可用区域出现故障,负载均衡器可以将流量迁移至工作正常的可用区域内。
除了扩展至多个可用区域外,整个Netflix服务还在亚马逊云中的两个地区中进行了备份,其中一个是在“美国东部”区域,另一个是在“欧盟西部”区域。为了防止出现问题,两个备份为异步进行。Netflix的想法是,如果亚马逊云的某个区域服务整体出现了问题,那么其他地区的亚马逊云服务仍然可以确保Netflix的服务正常运行。
经验3:保持弹性
即使监控和警报覆盖了Netflix的整体运营,仍然有可能会出现故障。这也是它为什么要创建一个监控服务和纠错平台的原因。Netflix在内部开发了一套名为Simian Army的开源工具,专门用于测试企业服务的容错能力。其中,Chaos Monkey可以随机杀死多个服务以在应用层进行故障测试;Chaos Gorilla可以关闭整个可用区域,以对高可用性进行测试;Chaos Kong则是一项正在开发中的服务,Netflix希望通过其测试当亚马逊AWS整个地区服务发生故障时企业服务的运行情况。Tseitlin开玩笑称,Netflix非常关注测试和监控工作,以致于它更像是一家监控公司,提供电影反而成为了副业。
另一方面,保持弹性也影响了企业对员工责任的分配。Netflix依赖开发人员创建的Simian Army和云服务,在创建了相关应用后,开发人员还必须负责后续的运维工作。尽管这听起来有点像“开发运营”模式,即由开发人员准备他们自己的基础设施资源,但是Tseilin将这称为“分布式运营”模式。开发人员需要对自己创建的代码和应用的整个生命周期负责。他们不仅负责编写和运行相关程序,还负责这些程序的更新工作。
尽管Netflix已经几乎将所有面向客户的服务迁移至了公有云上,但是他们仍然有许多工作要做。根据路线图,Netflix将要把该公司所有的本地后端服务迁移至云端。Tseitlin称,目前Netflix已经将电子邮件业务由Exchange迁移至了谷歌Apps上,将开销管理由Concur迁移至了Workday上。此外,传统的内部文件共享也转到了Box上。
为了遵守支付卡行业(PCI)标准,目前Netflix的计费与支付业务仍在由其控制的数据中心上运行。如果一切顺利,这种局面也可能会在短期内发生改变。Netflix希望将所有的业务都迁移至云端。Tseitlin说:“我们的目标是不再运行数据中心”。