您当前的位置是:  首页 > 新闻 > 文章精选 >
 首页 > 新闻 > 文章精选 >

云端教父是怎样让Netflix成为第一家完全上云大型企业

2018-07-16 16:01:16   作者:   来源:CTI论坛   评论:0  点击:


  在2010年10月之前,几乎没有人相信,大型企业真的可以全靠云端,彻底取代数据中心。当时担任Netflix云端架构长,而现在是AWS云端架构策略副总裁的Adrian Cockcroft,他的一场演讲,从此改变了许多人的想法。而且,那是他第一次完整揭露Netflix的上云之旅
  一手设计出Netflix云端架构的云端教父Adrian Cockcroft,目前是AWS云端架构策略和开源发展的推手
  关於这趟旅程,起点是2008年8月的一次SAN储存设备故障事件,足足让Netflix的关键数据库系统当机2天,当时因为无法查询订单数据,一连3天,没有寄出任何一片顾客租借的DVD影片。大家都在问Netflix怎麽了!Netflix是全美最大的DVD租片服务公司,顾客透过网站租片,过两天就会在自家邮箱收到,看完再用回邮信封寄回。
  这次事件让Netflix开始反省,就算砸大钱,买来业界最高阶的Oracle数据库系统,搭配最顶级的硬体设备设备,为何还是会出错?当时Adrian Cockcroft是网站工程团队的总监,他开始意识到:「服务可用性的主角应该是应用程式,而不是硬体。」而顺着这个思路进一步发现,其实,Netflix不见得需要昂贵的硬体,而是可以考虑租用便宜的云端环境,也许就够了。
  这并不是Netflix独到的经验,很多企业资讯主管遇到当机事件时,都会有同样的反省。但是,「得等到出现外在危机的压力,企业才会真的愿意采取行动,我们也是。」Adrian Cockcroft事後回忆。
  Netflxi在2010年4月公开上云计划,所有人都不看好,直到年底公开了这张AWS架构图後,才让大家意识到,大型企业真的也可以上云。
  全球布局的外部压力浮现,才下定决心上云端
  这个来自外部的压力,出现在2009年。Netflix除了租片服务,从2007年也开始在美国提供线上影片串流服务,当年2月,Netflix宣布累计出借了10次亿份DVD,但他们的串流服务人数,迟迟没有突破1千万用户。
  之後,Netflix在2010年进军国际市场,而为了解决DVD全球寄送的问题,Netflix决定改变,开始主推线上串流服务。这也让Adrian Cockcroft开始思考,新业务带来的挑战有多大。
  原有的DVD出租生意,顾客大约每周使用一次Netflix网站来租片,须等到DVD寄到顾客手上看完後,顾客才会再次上站来租片,寄送的时间,往往决定了顾客下次何时再上线挑片的频率,而这个频率大约是每人每周一次。
  但是,线上串流服务的挑战完全不同,Netflix串流服务顾客每天大约可以可以观赏5到6段影片,租片量是DVD租片的10倍以上,而影片还提供个人化浏览服务,顾客会花更多时间上站选片,甚至顾客看到一半停下来,网站还要记住他当时所看到的进度,下次再继续播放。根据Adrian Cockcroft估计,串流顾客与Netflix官网的互动(浏览)频率,大约是租片顾客的100倍。
  换言之,租片量10倍成长,顾客互动次数增加100倍,两者相乘,租片顾客改用串流服务後,每周带来Netflix数据中心的流量成长,是过去的1千倍。只要有0.1%的用户改用串流服务,Netflix数据中心承受的流量规模,就要翻倍。
  转移前端系统时,Netflix的策略是,先从最简单的网页开始转移,一次只将网站上的一页服务搬上云端。这是Netflix第一个搬上AWS的网页。(数据来源:Adrian Cockcroft)
  IT未来要考虑全球顾客的参与度
  从IT营运模式的改变来看,Adrian Cockcroft指出,过去IT只需考虑到,以员工人数来决定系统的扩充规模,但未来IT要考虑全球顾客的参与度,以此决定扩充规模。这个数字转型压力是根本性的变革,从服务数百、数千人,到服务全球顾客,而且要提供24小时服务。
  2009年时,Netflix有两个选择,第一是雇用一个世界级数据中心维运团队,未来需要多少用量,就预先建置多少数据中心。第二个选择是使用Netflix竞争对手AWS提供的云。当时的Amazon Prime影片串流服务,是Netflix最大的竞争者。「选择自己盖数据中心,还是租用竞争对手的服务,改把钱花在内容和开发者身上。」Adrian Cockcroft表示,这是当年经营高层最头痛的抉择。
  还有一个难题,促使Netflix最後决定上云端。那就是进军全球市场後,Netflix串流服务也会整合到多种播放装置上,不只是电脑,还增加了iPhone、Wii、PS3和Xbox的版本,未来的成长规模几乎难以预测。如何满足至少是1千倍的扩充需求?Netflix决定开始认真评估,了解搬上云端的风险。
  首先,考虑AWS业务和Amazon Prime服务的关连,後来Netflix高层也直接联系Amazon创办人,确定两者各自独立运作。其次是要测试AWS的能耐,评估AWS的扩充能力,能否胜过自行建置数据中心的速度。後来,Netflix签署AWS 第一个企业授权契约,直接上网用信用卡刷卡就完成这件事。
  直到2010年4月,Netflix开始公开即将上云的消息,Adrian Cockcroft表示,大家都觉得他们疯了,因为他们是第一家这麽做的大企业。不过,早在2009年,Adrian Cockcroft率领的网站工程团队,就展开上云转移的作业。而这个过程的第一步,是先检视那些不会直接面对顾客的系统,决定先将影片编码(Movie Encoding)伺服器放上AWS的EC2。因为,这类影片编码服务需要大量机器来运算,但现有数据中心的空间并不足以扩充。
  选定搬迁的目标後,下一步就是要测试EC2的扩充能力,Adrian Cockcroft表示,那次一口气向AWS提出要求,想在一小时内要取得3千台EC2虚拟机器,後来,真的拿到了,也才让Netflix相信,云端真的可行;接着,就真的把影片编码的实体主机关了,全部搬上EC2。影片编码的处理,租用了数千台EC2实例来组成运算农场,当时还用了不少Windows环境的影片转码软体,处理了上万部影片,而为此而储存在S3的数据量,已经高达PB级。
  除了影片编码,第二步则是改将大量的网站存取日志放上云端,尤其是所有串流服务的日志。Netflix有太多想纪录追踪的资讯,都改用S3来储存,这些日志数据每天的成长量也是TB级。最後,利用Hadoop来分析,还和AWS合作整合Hive SQL来设计数据超市,再整合到Netflix内部数据中心的BI系统上。
  2010年初,Netflix就决定不再盖数据中心了,并且在年初开始也把串流服务的後端系统搬上云,例如像是DRM金钥管理、用户重播书签服务、高可用设计的「播放」按钮服务等。
  Netflix还决定要在2010年底前,要把前端系统和用户端设备的API服务,也都搬上云端。当时,多数後端系统仍部署在数据中心内,不过,前端上云後,机房就可用於扩充後端系统。
  “过去IT只考虑服务员工数,来决定系统规模,但未来IT要考虑全球顾客的参与度,来决定扩充力道,这个数字转型压力,是根本性的变革”。
──云端教父 Adrian Cockcroft
  2010年底官网前端系统全面上云
  「我们没有备案!一定要在年底前将网站前端搬上AWS。」那时,Netflix每次经营会议时,都会秀出一张图,上面有一台准备起飞的飞机,代表着Netflix,轨道尽头就是树林,「到了年底,没有飞上云端,就会撞上树林。」Adrian Cockcroft强调。在2010年12月初,完成官网最後几页的转移,过程没有发生任何一次当机,Netflix顺利飞上了云端。
  原本,Adrian Cockcroft一开始设计了一个渐进式转移的作法,但他的老板直接指示:「全部砍掉重练!顶多留下你觉得有用的10~20%,你不要的程式码,一行都不要留。」他希望趁着重新设计的机会,要求Adrian Cockcroft设计可符合未来5年需求、兼顾效率和生产力的新架构。「因为,我们不想成为一味节省成本的公司,而要追求业务速度。」Adrian Cockcroft表示。
  除了重新打造新架构,在转移前端系统时,Adrian Cockcroft的策略是,先从最简单的网页开始转移,逐次将网站上的一页服务搬上云端,并且先从最简单的API服务开始转移,其次是转移对应的页面,然後再进行下一个API和下一个页面。同样的作法,先套用到其他服务页面,再来,才是转移其他不同数据来源的页面。
  因为是一页一页地转移上云端,因此,他们也采取双轨系统并行。用户先登入位於数据中心的旧版官网网页、後端系统和登入服务,再挑选合适网页,切换成由云端提供服务的版本给顾客。一旦出现问题,可以马上切换回来,因为采取标准HTTP转址来切换,因此,顾客不会察觉。
  在数据转移的策略上,原有系统数据都储存在Oracle数据库中,先利用Oracle远端副本功能,在云端建立一份副本数据库,多数用户只是需要查询数据,就先由云端数据库来提供,只有用户需要更新记录时,才连回数据中心的Oracle数据库来修改。
  2011年决定全面上云端後,新的挑战是如何备份。过去,Netflix采用磁带进行离线备份,来保存系统记录。上了云端後,Adrian Cockcroft不想把数据再运回本地端数据中心来备份,因此,改而不同的服务区域,建立不同的AWS帐号,利用不同帐号的S3服务,来提供另一个备份。
  此外,所有系统记录数据不会删除,而是采取每90天自动执行清除程式,将数据压缩备份到归档区的S3帐号,因为可预期这些数据存取频率不高,压缩数据的时候,也以缩小容量为主,而不用考虑解压缩速度来节省空间。後来AWS推出了超便宜的归档服务Glacier,就有更弹性的备份策略可用。
  後来,Netflix发现,上云的决定是正确的作法。因为拓展到全球市场後,光是2009年第三季到2010年第三季,一年内串流服务就成长了145%,从原有的1千万名用户,增加到1,600万人。更大的挑战是,到了冬天,大家都待在家里看电视,从感恩节到圣诞节期间的串流影片需求,将会大爆发。2011年时,Netflix就决定,全面上云,连後端和全部数据都要搬上去,不过,仍有少数数据转移不易,例如,当时有些支付法规遵循的要求,规定数据必须落地。结果,他们花了7年时间,直到2016年1月,Netflix才完成所有云端转移工作,并且关闭了数据中心的最後一台机器。
  数字转型三阶段:速度、规模,以及策略
  从Netflix上云的经验,Adrian Cockcroft归纳,企业数字转型的途径可分成三阶段。第一,是先追求速度,采用新架构,例如将所有JAR元件都微服务化,就不用每隔两周得关机10分钟来更新,或是统一服务设计模式,而不是共用一套标准程式码,同时,还将复杂纠缠的服务API,改为功能分明的分层式架构。这些设计,後来让Netflix的云端架构,成为微服务架构的经典参考范本。
  「有了速度,下一步才追求规模。」他解释,例如,透过水平式扩充架构,满足越来越多服务上云後的运算需求,还要提高利用率。数字转型的最後一个阶段,就是策略性转型,目标是彻底取代数据中心,将关键应用搬上云端。
  Netflix租用了超过10万个EC2虚拟机器,来服务遍布全球130多国市场的上亿名用户。根据Netflix统计,从2007年12月到2015年12月为止,每月串流服务播放总时数,成长了1千倍以上。正是因为当年上云端的决定,才能支撑起这样的千倍的发展速度。
  Profile
  云端教父 Adrian Cockcroft
  1982年:进入剑桥顾问公司担任软体工程师,一待就是6年,专责开发即时嵌入式讯号处理和控制系统,後来还兼职担任Unix系统首席管理员。
  1988年:进入昇阳电脑,任职长达16年,直到2004年才离开昇阳,他不只熟谙云端技术和软体技术,更是高效能电脑技术的专家,最後成为昇阳高效能工业计算(HPTC)部门的首席架构师。在昇阳期间,也有多本高效能电脑的相关着作,例如他是《Sun Performance and Tuning:Java and Internet》第二版一书的第一作者,这是畅销的HPC调校参考书之一。
  2004年:离开昇阳後,9月转而进入eBay工作,主要参与多项创新计画,也是eBay Research Lab创始团队成员之一。早在iPhone和Android问世之前,Adrian Cockcroft就开始研发自制手机和先进行动应用。
  2007年:进入Netflix,担任网站工程团队总监,负责Netflix首页开发,以及打造个人化选片服务,尤其是研发背後的演算法,也参与了Netflix Java系统重构计画,也就是SOA架构的导入。
  2008年8月:一场SAN储存设备大当机,Netflix开始考虑采用云端。Adrian Cockcroft是关键评估者之一。
  2009年:Netflix开始展开云端转型之旅,先将内部系统搬上云端AWS,例如影片编码。
  2010年:进一步将网站前端系统全部放上AWS。
  2010年4月:Netflix开始宣布上云端计画。
  2010年12月:正式完成官网上云端转移。
  2011年:开始将後端系统搬上云端。
  2013年:Netflix也大方公开了这套转型上云端的经验,甚至打包自己开发的工具和架构设计范本,开源推出了NetflixOSS平台,这也成了设计云端原生架构的最佳实务参考之一。
  2014年:Adrian Cockcroft离开Netflix,转而进入Battery Ventures创投担任技术院士,从更宏观的角度,来观察科技产业、网路新创、创新技术的发展。
  2016年1月:Netflix最後一批数据搬上云端,完成了为期7年的云端之路。
  2016年10月:Adrian Cockcroft进入AWS担任云端架构策略副总裁,不只带领AWS的开源推动工作,也开始到各国分享自己一路参与云端架构发展的经验。
  2018年6月:Adrian Cockcroft首次来台分享数字转型经验和云端发展策略。
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

相关阅读:

专题