当前位置:首页 > 会议 >  正文信息

Amazon CTO:我在打造AWS的10年里学到的10条经验

  2016-07-03 16:05:46  来源:中国站长  我来投稿  我要评论

 

文章摘要:Amazon CTO在打造年营收100亿美元的AWS业务过程中,他都有哪些心得体会呢?

  

7

  Amazon 的 CEO Jeff Bezos 前几天在致股东的信中表示 ,亚马逊云服务 AWS 目前已经有超过 100 万的用户,2016年 的营收也将突破 100 亿美元。Amazon 的 AWS 服务是在 2006年3月 推出,距今已有整整 10年 的时间了。AWS 最早推出的云服务是简单储存服务 Simple Storage Service (S3),后来又陆续推出了 Amazon 弹性计算网云 Elastic Compute Cloud (EC2)、亚马逊简单数据库(Amazon SimpleDB)、亚马逊简单队列服务(Amazon Simple Queue Service)以及 Amazon CloudFront 等云服务。目前,成千上万的创业公司在 AWS 的数据中心和服务基础上构建了自己的在线业务。不仅大量小公司依赖于 Amazon AWS 的云计算服务,很多诸如 Adobe、GE、Netflix 和 Pinterest 这样的大公司也都在使用 Amazon 的 AWS 服务。

  在 Amazon 的 AWS 服务上线 10 周年之际,推动 AWS 服务发展的核心人物、Amazon 的 CTO Werner Vogels 在本文中专门总结和分享了他在 AWS 上线运营 10年 过程中的学到的 10 条经验,希望对大家有所启发和借鉴。

  1. 从第一天开始,就要打造一个可以持续演化的系统

  从第一天开始,我们就非常清楚地认识到,我们所开发的这套软件是一个一定需要持续改进的软件,现在开发的软件可能并不是一年以后运行的软件。我们当时是这样预期的,随着数量级的增加,我们就需要去重新检视和修改我们已有的架构,确保能够解决扩展性的问题。

  然而,由于全世界不同地方的很多公司都依赖着我们平台所提供的 7 x 24 小时全天候不间断的服务,因此我们无法采用过去通常采用的通过维护停机、进行系统升级的方式来达到这一目标。因此,我们从开始就需要打造一个在引入新的软 件构件时不会迫使服务暂停的架构。Amazon 的一位非常出色的工程师 Marvin Theimer 有一次曾开玩笑说,Amazon S3 服务的持续演进和下面这个场景非常像:我们最开始开的是一架单引擎的赛斯纳飞机,在开了一段时间后升级成了一架波音 737 飞机,之后又换成了一支波音 747 飞机编队,我们现在开的则更像是由空中巨无霸空客 A380 组成的一支大型飞机编队。从最开始到现在,我们都是通过空中加油的方式确保飞机的正常飞行的,与此同时,我们直接将 AWS 的用户在空中从一架旧飞机上转移到另一架新飞机上面,而 AWS 用户在这整个过程中甚至没有意识到他们被悄悄地转移到另一架更先进的飞机里了。

  2. 为意料之外的失败和问题做好充分准备

  失效是难以避免的的,随着时间的推移,任何东西都有可能会出现这样那样的问题:从路由器到硬盘,从操作系统到存储单元损坏的 TCP 数据包,从瞬间误差到永久失效等等。不管是使用高质量的硬件还是低成本的组件,这些问题都将无可避免地出现。

  随着服务规模的扩大,懂得这个问题将变得越来越重要:举个例子,当 Amazon S3 的服务处理数亿的存储交易时,即使是可能性最小的错误也会变成现实。这些失败和出问题的场景中的一部分是可以被事先预想的,然而很多问题在设计和构建过程中是无法被事先考虑到的。

  所以说,我们需要打造一个将失败和故障视为自然会发生的系统,即使我们不知道故障和问题可能会是什么。这个系统需要在即使 “屋里已经失火” 的情况下依然能够维持正常运行的状态。其中很重要的一点是,要能够在不让整个系统宕机的情况下就能处理好受到影响的组件。我们现在已经掌握了一套能够控制 故障发生后所波及范围的基本技能,这样一旦出现任何问题,系统的整体健康状况是可以继续维持的,不会出现服务停机的状况。

  3. 要提供基元,而非仅提供一个大而全的统一框架

  很快,我们就发现很多用户喜欢在 AWS 提供的服务上持续构建自己的业务的。在离开了传统旧世界里备受束缚的 IT 硬件和数据中心之后,他们开始以一种全新有趣的使用方式来开发自己的系统。正因为如此,我们就需要做到足够地灵活性去满足用户各种不同的需求。

  我们提供的最重要的机制之一是为用户提供一系列基元功能和工具,他们可以选择自己喜欢的方式来使用 AWS 服务,而不是提供一个强迫用户必须使用的包罗一切的大而全的统一框架。这个方法让我们的用户获得了巨大的成功,甚至 AWS 后来提供的的很多服务都使用了同样类似的服务机制,而这个服务机制是我们的很多用户都已经习惯了的。

  此外,在用户真正开始使用我们的服务开发产品和服务之前,我们很难去预测对用户自己的优先级到底是什么,意识到这一点非常重要。这也是为什么我 们后来推出新服务最开始只配有最小的功能集,这样一来,我们可以通过用户的反馈来对扩展我们服务的新功能,以更好地满足用户的需求。

  4. 自动化是关键

  开发一个需要去检测维护的软件服务和开发一个最终交付给客户的软件是有着非常大的区别的。为了满足用户对产品可靠性、性能以及可扩展性等方面的期待和需求,管理 AWS 这样的规模化系统是需要一种不同的心态和方法的。

  要想实现上述目标,一个关键的机制就是尽可能地将管理工作全部自动化,这样就可以避免手工操作可能带来的任何容易产生的误差。为了实现这一目 标,我们需要打造一套可以控制操作中各项主要功能的管理 API。此外,AWS 也能够帮助用户同样实现这个目标。通过把你的应用分解成一个个基本的构建模块,每个模块都有自己的管理 API,这样你就可以利用自动化规则进行大规模可靠、可预测的的运营。自动化工作究竟做得如何,有个很简单的检验方法就是看你是不是还需要 SSH 登陆到服务器进行操作,如果需要的话,说明你的自动化的工作还有待加强。

关注创业、电商、站长,扫描中国站长网微信二维码,定期抽大奖

    图文推荐

    1 2 3 4
     
     

    信息推荐

    文章推荐

    分类排行榜

    专栏文章

    更多>

    服务推荐

    扫一扫关注最新创业资讯