Amazon CTO:我在打造AWS的10年里学到的10条经历
2022-02-07 11:05:09
Amazon的CEOJeffBezos前几天在致股东的信中表明,亚马逊云服务AWS现在现已有超越100万的用户,2016年的营收也将打破100亿美元。Amazon的AWS服务是在2006年3月推出,距今已有整整10年的时刻了。AWS最早推出的云服务是简略贮存服务Simpl
Amazon的CEOJeffBezos前几天在致股东的信中表明,亚马逊云服务AWS现在现已有超越100万的用户,2016年的营收也将打破100亿美元。Amazon的AWS服务是在2006年3月推出,距今已有整整10年的时刻了。AWS最早推出的云服务是简略贮存服务SimpleStorageService(S3),后来又连续推出了Amazon弹性核算网云ElasticComputeCloud(EC2)、亚马逊简略数据库(AmazonSimpleDB)、亚马逊简略行列服务(AmazonSimpleQueueService)以及AmazonCloudFront等云服务。现在,不计其数的创业公司在AWS的数据中心和服务基础上构建了自己的在线事务。不只许多小公司依靠于AmazonAWS的云核算服务,许多比方Adobe、GE、Netflix和Pinterest这样的大公司也都在运用Amazon的AWS服务。在Amazon的AWS服务上线10周年之际,推进AWS服务开展的核心人物、Amazon的CTOWernerVogels在本文中专门总结和同享了他在AWS上线运营10年进程中的学到的10条经历,期望对咱们有所启示和学习。
1、从第一天开端,就要打造一个可以继续演化的体系
从第一天开端,咱们就十分清楚地认识到,咱们所开发的这套软件是一个必定需求继续改进的软件,现在开发的软件或许并不是一年今后运转的软件。咱们其时是这样预期的,跟着数量级的添加,咱们就需求去从头检视和修正咱们已有的架构,保证可以处理扩展性的问题。
但是,由于全国际不同当地的许多公司都依靠着咱们渠道所供给的7x24小时全天候不间断的服务,因而咱们无法选用曩昔一般选用的经过维护停机、进行体系晋级的办法来到达这一方针。因而,咱们从开端就需求打造一个在引进新的软件构件时不会迫使服务暂停的架构。Amazon的一位十分超卓的工程师MarvinTheimer有一次曾恶作剧说,AmazonS3服务的继续演进和下面这个场景十分像:咱们最开端开的是一架单引擎的赛斯纳飞机,在开了一段时刻后晋级成了一架波音737飞机,之后又换成了一支波音747飞机编队,咱们现在开的则更像是由空中巨无霸空客A380组成的一支大型飞机编队。从最开端到现在,咱们都是经过空中加油的办法保证飞机的正常飞翔的,与此同时,咱们直接将AWS的用户在空中从一架旧飞机上转移到另一架新飞机上面,而AWS用户在这整个进程中乃至没有意识到他们被悄悄地转移到另一架更先进的飞机里了。
2、为意料之外的失利和问题做好充分准备
失效是难以防止的的,跟着时刻的推移,任何东西都有或许会呈现这样那样的问题:从路由器到硬盘,从操作体系到存储单元损坏的TCP数据包,从瞬间差错到永久失效等等。不管是运用高质量的硬件仍是低本钱的组件,这些问题都将无可防止地呈现。
跟着服务规划的扩展,懂得这个问题将变得越来越重要:举个比方,当AmazonS3的服务处理数亿的存储买卖时,即便是或许性最小的过错也会变成实际。这些失利和出问题的场景中的一部分是可以被事前料想的,但是许多问题在规划和构建进程中是无法被事前考虑到的。
所以说,咱们需求打造一个将失利和毛病视为自然会发生的体系,即便咱们不知道毛病和问题或许会是什么。这个体系需求在即便屋里现已失火的情况下仍然可以保持正常运转的情况。其间很重要的一点是,要可以在不让整个体系宕机的情况下就能处理好受到影响的组件。咱们现在现已把握了一套可以操控毛病发生后所触及规模的根本技能,这样一旦呈现任何问题,体系的全体健康情况是可以继续保持的,不会呈现服务停机的情况。
3、要供给基元,而非仅供给一个大而全的一致结构
很快,咱们就发现许多用户喜爱在AWS供给的服务上继续构建自己的事务的。在离开了传统旧国际里备受捆绑的IT硬件和数据中心之后,他们开端以一种全新风趣的运用办法来开发自己的体系。正由于如此,咱们就需求做到满意地灵敏性去满意用户各种不同的需求。
咱们供给的最重要的机制之一是为用户供给一系列基元功用和东西,他们可以挑选自己喜爱的办法来运用AWS服务,而不是供给一个逼迫用户有必要运用的包含一切的大而全的一致结构。这个办法让咱们的用户获得了巨大的成功,乃至AWS后来供给的的许多服务都运用了相同相似的服务机制,而这个服务机制是咱们的许多用户都现已习惯了的。
此外,在用户真实开端运用咱们的服务开发产品和服务之前,咱们很难去猜测对用户自己的优先级终究是什么,意识到这一点十分重要。这也是为什么咱们后来推出新服务最开端只配有最小的功用集,这样一来,咱们可以经过用户的反应来对扩展咱们服务的新功用,以更好地满意用户的需求。
4、自动化是要害
开发一个需求去检测维护的软件服务和开发一个终究交付给客户的软件是有着十分大的差异的。为了满意用户对产品牢靠性、功用以及可扩展性等方面的等待和需求,办理AWS这样的规划化体系是需求一种不同的心态和办法的。
要想完结上述方针,一个要害的机制便是尽或许地将办理作业悉数自动化,这样就可以防止手工操作或许带来的任何简单发生的差错。为了完结这一方针,咱们需求打造一套可以操控操作中各项主要功用的办理API。此外,AWS也可以协助用户相同完结这个方针。经过把你的运用分解成一个个根本的构建模块,每个模块都有自己的办理API,这样你就可以运用自动化规矩进行大规划牢靠、可猜测的的运营。自动化作业终究做得怎么,有个很简略的查验办法便是看你是不是还需求SSH登陆到服务器进行操作,假如需求的话,阐明你的自动化的作业还有待加强。
5、API是永久的,一旦上线便无法改变
其实之前在Amazon零售事务中现已吸取了相似的经历和经验了。但是关于AWS这种以API为中心的服务而言,API是永久的这个准则明显就变得更为重要了。一旦用户开端运用咱们的API开发他们的运用和体系后,咱们就不或许再去对那些这些API做任何变化了,由于变化API会严峻影响到用户的事务。咱们现已意识到,规划API是一个十分重要的使命,有必要要一次性成功。
6、重视和了解自己的资源运用情况
在你为一项服务拟定适宜的计费形式的时分,必定要保证你有一份关于这项服务的各项本钱和运营费用的具体数据,当你运营一个事务量大、利润率低的事务时更需求如此。AWS作为一个服务供给商,咱们有必要对服务本钱十分一目了然,这样咱们就能清楚地了解根据这一本钱,咱们是否可以承当得起为用户供给这项服务。此外,咱们还可以借此找到那些可以经过进步运营功率而下降本钱的一些办法,并经过这种办法进一步下降服务价格,然后让用户从中获益。
举例阐明一下,在咱们开展前期,咱们一开端对AmazonS3服务所需求的资源本钱其实并不是十分清楚。咱们其时是这样想象的,存储和宽带本钱是咱们首要需求考虑的收费点。不过后来在AmazonS3运转了一段时刻之后咱们开端意识到,恳求数量其实和存储与带宽是相同重要的。假如有用户有许多的小文件,在这种情况下,即便这个用户恳求上百万次,其实都不会占用太多的存储和带宽资源,占最多资源的其实是恳求数量。因而咱们有必要对收费模型进行调整,将恳求数量也放进了资源本钱中去,这样才干保证AWS有一个可以继续开展的事务。
7、从一开端就要将安全问题考虑进去
维护用户的安满是一个你永久都要排在第一位的优先级问题,在AWS当然也是这样,这不管从运营的视点来看,仍是从东西和机制的视点来看都是如此。因而,咱们在安全方面的投入将一直是咱们的第一大投入。
咱们很快就学会的一个办法是,为了打造愈加安全的服务,这就要求咱们在服务规划的开端阶段就将安全问题考虑进去。安全团队的作业不是在一项服务开发完结之后再去查看验证它的安全性问题终究怎么。安全团队应该在开发作业开端后的第一天就参加到产品开发中去,保证安全问题在刚开端开发时就被考虑进去,并且贯穿于整个项目的开发的全进程。在任何触及安全的问题时,你都不能做任何退让。
8、数据加密太重要
数据加密是让用户保证他们对谁能获取自己的数据具有肯定操控权的一个要害机制。在10年曾经,用于数据加密的相关的东西和服务的运用体会十分差,直到AWS开端运营后的开端几年里,咱们渐渐知道了怎么最好地将数据加密功用整合进咱们的服务里。
AmazonS3开端供给的是服务器端的加密。假如你想查看咱们数据中心的任何磁盘,你是无法拜访到任何数据的。后来,咱们连续推出了AmazonCloudHSM和AmazonKeyManagementService,这些服务答应用户运用自己的加密秘钥对数据进行加密,这样就不需求AWS再去协助用户去办理他们的加密密钥了。
现在,在AWS一切新推出的服务中,对数据加密的支撑现已在服务的原型规划阶段就被整合进去了。例如在AmazonRedshift这项服务里,每一个数据模块都是经过一个随机的密钥进行加密的,而一切这些随机密钥最终又都是由一个主密钥进行加密的。用户是可以自己自主界说这个主密钥的,这样就保证了用户自己是仅有可以加密和拜访这些要害事务数据或个人隐私信息的人。
数据加密在咱们的事务中一直都是一个优先级比较高的作业。咱们会继续不断地对数据加密改进,让数据加密可以更方便地运用,这样用户能更好地维护自己和自己的客户。
9、网络的重要性
AWS事务现已支撑了许多不同品种的负载,从大容量事务处理到大规划视频转码,从高功用并行核算到巨大的网站流量等等,一切这些负载对网络都有十分共同的需求。
在数据中心布局和运维的立异方面,AWS现已开发出了一种共同的新技能,这让咱们可以供给愈加灵敏的网络基础设施去满意不同用户的不同负载的需求。咱们在这个进程总学习到,为了可以让用户完结本身的方针,咱们有必要开发自己的网络硬件处理方案。这也让咱们可以满意咱们一些定制化的需求,例如,为了保证最高等级的安全性,咱们可以在网络大将不同的用户互相阻隔开来。
另一个AWS经过自己规划的网络硬件和软件处理方案去进一步协助用户改进功用的比方便是处理虚拟机之间的网络拜访。由于网络拜访是一个同享的资源,用户之前经常会遇到网路拥堵的问题。AWS后来开发了可以支撑单根IO虚拟化技能的NIC,它可以让咱们给每个虚拟机虚拟出自己的NIC,这个做法有用下降了网络推迟两倍以上。
10、不设守门人
为了给用户供给一个愈加宽广和深度的服务渠道,AWS团队连续开发和供给了越来越多的服务和功用。不过AWS远不限于咱们现在现已供给过的这些功用和服务,咱们的许多合作伙伴根据AWS供给的服务进一步扩展和丰厚了整个AWS生态体系。
比方,咱们的合作伙伴Stripe运用咱们的服务供给的付出服务,以及Twilio运用AWS服务供给的网络电话事务等。咱们的许多用户根据AWS服务开发出自己的渠道,以处理各自笔直范畴的一些问题。例如飞利浦开发了用于健康数据办理的数字渠道HealthsuiteDigitalPlatform,Ohpen在AWS基础上开发了一个零售银行渠道,EagleGenomics开发了基因处理渠道,这样的比方还有许多。
在AWS渠道上,咱们是不设守门人(gatekeeper)的,因而咱们不会告知咱们的合作伙伴他们在AWS渠道上什么可以做、什么不可以做。没有守门人这一点可以激起更多、更好地立异。
部分文章来源于网络,如有侵权,请联系 caihong@youzan.com 删除。