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万服务器。 我也意识到很可能误差很大,可是也只能这样猜测了。