我们把 Netflix 迁移到云端的旅程开始于 2008 年 8 月,那时我们正在经历一场主数据库错误,长达 3 天无法向会员发放 DVD。正是在那个时候,我们意识到必须从纵向扩展的单点系统失败模式——比如我们数据中心的关系数据库——转向高度可靠的横向扩展的云端分布式系统。我们选择了 AWS 云服务作为我们的云服务提供商,因为它为我们提供了最大的规模和最广阔的服务与功能。大部分我们的系统在 2015 年前就已经被迁移到了云端,其中包括全部面向客户的服务。从那时起,我们就开始为计费基础架构和客户与员工数据管理寻求安全且持久的云服务。我们很高兴地在 2016 年的 1 月份宣布,在长达 7 年的勤奋努力之后,我们终于完成了云迁移,并且关闭了流媒体服务使用的剩余数据中心!
迁往云端给 Netflix 带来了许多益处。我们现在拥有了 8 倍于 2008 年的流媒体会员数量,而且他们的参与度也更高了,整体看来在 8 年里这个数据增长了 3 个数量级。
Netflix 产品本身继续迅速发展,开启了很多新的消耗资源的功能,并且依赖于不断增长的数据量。对我们的数据中心来说,支撑如此迅猛的增长极端困难;我们根本不可能让服务器足够快。云的灵活性允许我们在几分钟内增加数千个虚拟服务器和 PB 级存储,从而使上述扩张成为可能。2016 年 1 月 6 日,Netflix 将它的服务扩展到 130 多个新国家,成为一个真正意义上的全球互联网电视网络。充分利用遍布全球的多个 AWS 云区域,使我们能够动态地变换并扩张我们的全球基础架构容量,从而为 Netflix 世界各地的会员创造出更好、更舒适的视频播放体验。
在所有的可扩展计算和存储需求方面,我们都依靠云计算。我们的业务逻辑、分布式数据库和大数据处理 / 分析、推荐、转码和数以百计构成 Netflix 应用的其他功能,都是如此。视频是通过 Netflix 开放连接来传送的,这个开放连接是一个全球分布式内容分发网络,可以有效地将我们的数据推送到会员的设备上。
云计算还使我们显著提高了自己的服务可用性。以前,我们的数据中心有非常多的运行中断,尤其是在云迁移的早期,我们重点解决了一些不可避免的云端问题。在整体可用性方面,我们的服务稳定提升,已经接近了期望中的目标—— 99.99%的服务正常运行时。在任何大规模分布式系统中失败都是不可避免的,即使基于云的系统也一样。然而,云计算却可以使一个基于不稳定的冗余组件建立高可用的服务。在架构设计中采取冗余和优雅降级的原则,加上通过 Simian Army 严控生产环境,即使云基础设施和我们自己的系统都出现问题,仍然不会影响用户的体验。
成本削减并不是我们迁移到云端的主要原因。然而,我们在云方面的花费最终只是那些数据中心花费的一小部分——这是一个令人欣慰的额外好处。这可能还是由于云的灵活性,使我们能够不断优化实例类型的配置,并几乎瞬时地增加和收缩占用的资源,而不用维持大量的备用资源。我们还能从规模经济中受益,而规模经济只在庞大的云生态系统中才成为可能。
鉴于云的益处如此明显,那为什么我们花了整整 7 年才完成迁移呢?事实上,迁往云端是件非常艰苦的工作,在前进的道路上我们不得不做出许多艰难的选择。毋庸置疑,最简便的迁往云端的方法就是复制整个系统直接放到 AWS 上。但是这样做,你最终就把数据中心所有的问题和局限一并带去了云端。作为替代,我们选择了云原生的方法,纵向重建所有的服务,从根本上改变我们运营公司的方式。在结构上,我们从一个单一庞大的 APP 转向了数以百计的微服务,转向非规格化,转向我们使用 NoSQL 数据库的数据模型。预算审批、集中发布的协调工作和多个星期的硬件置配循环,让位于持续的交付,让位于工程团队制作使用自助服务工具,并在松散连接的 DevOps 环境中独立决策,这些都加速了创新。我们必须建立许多新的系统,学习新的技能。把 Netflix 转变成一个云原生的公司需要时间和努力,但这也把我们置于更有利的位置,让我们继续增长并成长为全球化电视网络。
在过去的几年中,Netflix 的流媒体技术已经走过了漫长的道路。最终不被我们先前面临的限制所束缚,这感觉真是太棒了。对我们业界的很多人来说,云计算仍然是相当新的事物,还有许多问题要去解答,许多难题要去克服。通过 Netflix Open Souce 这样的开源举措,我们希望继续和伟大的科技头脑合作,共同应对所有这些挑战。
感谢魏星对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。
评论