猜猜亚马逊的云计算有多大
8年前,亚马逊发布了第一个云计算产品。亚马逊一直坚持云计算的目的,就是屏蔽底层的硬件,为开发者提供计算资源以运行应用程序。 对于AWS,还有其母公司亚马逊,硬件都是一个竞争优势。亚马逊一向不大愿意过多谈论自己的数据中心和系统。 但是那些竞争对手们,包括GOOGLE,MICROSOFT和IBM,则大肆宣传在云计算上的投入和创新。亚马逊也就不得不稍稍揭开一点自己的神秘面纱。
原因很简单。亚马逊的在线零售业务,是一个700亿美金的庞然大物,大虽大,但耗费现金并不多。Jeff Bezos,亚马逊的创始人兼CEO,对于利润的兴趣很小,对于改变世界的兴趣倒是很大。然而,云计算毕竟是这个世界上,资本最为密集的行业之一。Google可以在数据中心上花费几百亿美金而毫不心痛,背后有垄断性业务“搜索引擎”的支撑。Microsoft,则在桌面软件和数据中心软件方面有着垄断的地位,钱袋一样深不可测,自然也一样敢于一掷千金。
Google和Microsoft在烧钱上的本事,无人能及。 但他们的基础设施和平台服务,面对亚马逊时的竞争力,还是令人生疑。 但若从长期来看,亚马逊能否跟得上google和microsoft的脚步,却很成问题了。 于是,AWS的副总裁,卓越的工程师,James Hamilton透露了AWS云的规模和范围。目的自然为了告诉大家,亚马逊的领先地位以及对云计算的决心。
最重要的,永远是规模。做在线零售的亚马逊,当然清楚这个。 亚马逊很少谈及公有云,因为在亚马逊的理论中,云计算就不该是私有云。亚马逊认为,长期来看,公有云的巨大规模,意味着大部分的组织和机构都不需要运营自己的数据中心。
在AWS的Re:Invent大会上,jassy又一次强调,自云计算业务开始以来,他和亚马逊的CTO Werner Vogels就支持这个论点。(亚马逊为美国中央情报局建设过一个特殊的AWS私有云,签署了为期10年,6.6亿美金的合同。但那只不过是一个例外。云计算本质上还应该是公有的)。Jassy and Vogels的信念很简单: 只有覆盖了全区域,具备大容量,提供最丰富功能的云,才能胜出。会有一些例外,比如说金融服务云,或者那种100%运行特殊硬件和软件的巨型计算中心。 公有云的资源不仅足够好,而且一定会超越大部分的私有云。
AWS将底层的计算能力、存储和网络功能,抽象出来,这样开发者就可以专注于应用开发。抽象出来的资源,要么形成纯粹的基础设施,要么在其上继续抽象出一层平台服务,便于进一步实现自动化部署和对中间件、数据库和支持应用的其他服务的管理。但这并不是说底层的基础设施不重要。 实际上,亚马逊投入了巨大资金,用来设计和建设数据中心,并优化各方面的设施从内存条到数据中心的墙壁。基础设施确实重要,绝对能够形成竞争优势。
网络的事,比服务器还麻烦
和许多超级数据中心一样,亚马逊的服务器,刚开始也是从一线的服务器制造商那里购买。亚马逊成了rackable system(现在是SGI旗下公司)最大的客户。 后来,亚马逊决定自行制造系统,以便针对自己的工作性质进行精确调优。尤为重要的,是为了能够与其数据中心、电力、制冷系统严丝合缝的配合。数据中心在与时俱进的发展,系统也需要步调一致的前进。
过去,亚马逊在其基础设施的规模问题上,只含糊其辞,从不给出准确的数据。从2004年开始,AWS每一天都要安装足够多的服务器以支撑亚马逊的在线零售业务。那个时候,亚马逊的收入规模,仅为70亿美金,仅为现在的1/10。
“去年发生的那些变化?”Hamilton反问道,然后开玩笑说:“我们都执行过365次了。”
换句话说,去年AWS增添了足够多的容量,以支撑2.55万亿的在线零售业务。
那么,AWS到底容量多大? 答案是:比很多人想的还要大。
下面就是关于服务器的计算了。 亚马逊在全球11个地区拥有数据中心。 每一个地区拥有最少2个可用区,这样所有地区一共拥有28个可用区。 (包括两周前在德国法兰克福启动的新地区)这些可用区为本地的工作负荷,提供隔离的和冗余的能力。类似那种串联或者分层的容错系统,在数据中心和服务的层次上工作,而不是在两个系统之间严格步调一致。每个可用区最少有一个数据中心,有些则多达6个数据中心。 (2013年1月,Hamilton在Re:Invent会议上说,仅只美东地区便有超过10个数据中心,但在2014年的Re:Invent会议上他的演讲中,又说没有可用区拥有超过6个数据中心。)目的是为了让客户能够构建自己的应用,运行在不同的可用区上,以实现本地数据保护。更进一步,实现跨地区部署,达到更高层次的可用性。 亚马逊通过增加新的数据中心,以为每个可用区提升容量。
基本上,和企业客户增加的机架一样,数据中心实际上就是AWS的新机架。
好了,这一切都还是很有意思的。Hamilton说AWS的每一个区域都最少有两个可用区,每个可用区则最少有1个数据中心。然后他又补充说,一个典型的数据中心最少有5万台服务器,有的超过8万台。 另外,数据中心的规模效益在到达顶峰后便即下降。随着规模扩大,在某一个点,数据中心的边际成本开始上升,而不是下降。 更重要的是,在到达某一个数值后,一旦发生灾难型事故导致数据中心失效,则殃及的“爆炸半径”太大,使得过多的负载无法转移。
做一点计算吧。 假设AWS有28个可用分区,每一个数据中心只有5万服务器。这是AWS基础设施最小的容量了。这样,全球共有140万服务器。如果你不相信,说每个分区有8万台服务器(我们知道这不是真的,只不过设置一个错误的最高界线),那么就是224万机器。 为了更准确的猜测AWS基础设施的规模,你必须猜测可用区中,数据中心数量的分布情况。 我认为很少情况下,只有一个数据,大部分都是2个数据中心,拥有更多数据中心的情况则越来越少,直到到达最大值6个数据中心。我把数据摆弄来摆弄去,觉得28个分区,一共87个数据中心这样的估算还是靠谱的。 每个分区平均3个数据中心还要多一点。 如果假设每个可用区平均6万5千个服务器,那么你会看到数值很大:564万服务器。如果平均5万服务器,则降低到全球420万机器。如果假设每个可用区的数据中心少一些-比如平均2个-那么一共280万台机器。 由此,答案是AWS可能拥有280万到560万服务器。 我也意识到很可能误差很大,可是也只能这样猜测了。
总的来说,规模是巨大的。 还不止这些,亚马逊还投入了巨大资金,制造自有的网络设备,并建设了私有网络,从而把所有数据中心连接在一起形成一个巨大的全球集群。 这是Hamilton谈起来最兴奋的东西,因为网络是计算能力最大的瓶颈。
“对我们而言,网络互联是当前最大的危机”Hamilton解释道“网络建设的成本,与所有其它设备的成本都相关,不断攀升。在这方面是反摩尔定律的。我们所有的设备都在降低成本,我们也在压低价格,但网络成本则反向而行。这是个大问题。往前再看远几年,网络的问题越发严重。同时网络是反摩尔定律的,网络建设对计算能力的占比也在上升。”
Hamilton说,部分原因,是由于每一代的cpu都带来更多的计算能力,而每单元计算能力的成本则在下降。 越来越多的人,做越来越多的数据分析,而数据分析工作对网络的需求巨大,给网络带来巨大压力。(这是因为数据分析,和超级计算机的运作一样,在节点之间要进行大量通信,也就是所谓的“东西流量”。而另一种“南北流量”则是web应用从服务器上请求一点数据并在互联网上显示出来。二者区别很大。)
所以约五年前,当问题刚刚出现时,AWS设计了自己的网络路由器并去原厂制造硬件,并组建团队在硬件上开发网络软件。
亚马逊从定制网络设备中学习到的第一件事,和它很久以前从服务器和存储中学到的一样: 如果你用极简主义理念,自主制造所需的设备,那么就会便宜很多。“仅仅网络设备的服务合同,常常就要几千万美金。”
但即便对Hamilton而言,也是颇为惊奇的事:网络的可用性上升了,而不是下降。 这是因为AWS交换机和路由器只具备AWS在网络上所需的功能。 但商业网络操作系统,则必须覆盖所有可能需要的场景和协议,因而往往需要几千万行的代码,从而带来维护上的困难。 “我们的设备更可靠,因为我不需要面对那些更麻烦的问题。能完成任务的,就是好方法。”