Amazon的云业务规模已经今非昔比,而它发展新功能、新服务和新选项的速度比其他竞争对手都要快。近日,InfoWorld撰稿编辑Peter Wayner撰写了一篇 评论文章 ,他认为通过为复杂、高扩展性、数据丰富的应用提供最简单的创建方式,AWS正在蚕食互联网。
Amazon提供了许多分析大数据集的复杂工具的云版本,如Hadoop、Spark和Elasticsearch,藉此不断上移堆栈。而这些工具正在改变程序设计员和数据分析师的游戏规则——与其不停编写新代码,不如将Amazon的各种高端服务连接在一起。当原始计算能力仍然还是传统的关注焦点时,Amazon的这些新工具、新服务已经在强制推行自身的价值主张。这无疑将程序设计员和数据分析师们带到了一个难以抉择的十字路口——编写代码赋予他们畅行无阻的自由和能力,但将越来越多的堆栈托付于Amazon明显更便宜,而且更快。
Peter Wayner从以下几个方来阐述以支持他的判断。
Amazon云的核心仍然是被称为亚马逊弹性计算云(EC2)的虚拟服务器的集合。如果你想有一台机器,你可以去AWS的网站获取权限。然而,越来越多的人,甚至机器人(云变得越来越自动化)都在使用API。如果你不只是要启动单个试验实例,你最好停下写代码,启动你的机器。这里有针对各种语言的SDK,Java、 .Net、PHP、Python,甚至 Google的Go语言 。
Amazon出租的机器范围越来越广,也越来越复杂。至少有9个通用类别的可用实例——这还只是考虑了列在“当前阶段”的机器。如果你的软件出于某种理由似乎有需要,你仍然可以租用早期硬件系列的实例。机器的每个通用类别在配置不同内存和本地磁盘存储的不同模式下都是可用的。
(点击放大图像)
当配置一个Amazon EC2实例,你会得到一个迅速增长的可选项名单。
Amazon实例类型名单的可选项实在太多了,我们凡人无法一一检查和探讨。比如i2.8xlarge,自带224GB内存和32核虚拟CPU,可以提供104个弹性计算单元(ECU)——Amazon用来测量机器功率的度量标准。d2.8xlarge则自带224GB内存和36核虚拟CPU,可以提供116个ECU。
这些实例使用不同的英特尔Xeon版本,而且它们还仅仅是几十个选项中的两个。那到底该如何做选择呢?如果你有一个重大的项目,你会想用一系列实例类型来基准测试你的代码,并计算出你的应用程序到底运行得有多快。如果你只是为偶尔的工作租用几台机器,就没有必要考虑太多。但是如果你是为了多个大型项目同时运转上百台机器,基准测试则是最佳方案。毕竟,ECU的度量只是一个使用了某些标准基准测试的平均值,实际的情况可能会有所不同。
对硬件的选择才刚刚开始。随着Amazon越来越多地了解到哪个点会出错,它逐渐增加了可选项的数量,而API反映了这个经验。现在可以藉由一个点击按钮“启动终止保护”,当你在正在运行的机器上删减实例名单时,这个安全开关可以防止你误删。这多少让Amazon云生活变得稍微轻松点儿——不是简单点儿。
在你决定要怎样支付的时候更加棘手的问题就来了。你可以立刻租用,全款支付,或者开始钓鱼,等待更低的费率。Amazon提供了一个现货市场,你可以在这里出价竞买多余的容量,而市场会随着需求的涨落而波动。通常一些大的视频流业务会在周五和周六的晚上取代云业务,这会让波动相当具有戏剧性。
节省的钱可能多得惊人,等待过程中的价格也可能远低于标价,但你没办法知道最终的成交价会是多少。但如果中标价高于你的最高报价,你的机器就停工了。
(点击放大图像)
Amazon为软件开发者提供自动化创建、测试和部署周期的工具。它也通过为正在着手部署的代码提供存储与GitHub竞争。
你可以为了质保多付一点钱,但价格仍然可能远低于正常价格。
拍卖并非唯一的定价模式。如果你看重稳定性胜于弹性,还有其它更多选择。如果租用一年,或者甚至三年,只要锁定价格,并全款预付,便可以轻松节省30%、40%或多达60%以上的费用。
这一切意味着你的会计师和你的程序员一样重要。你会希望他们都坐下来设计架构,以最低的成本达成对资源最有效的利用。
很多云服务都源自Amazon,如MapReduce、数据库存、流处理。直到现在,竞争者们才开始模仿 Lambda——Amazon的无服务器事件驱动计算服务 。没有哪个云竞争者拥有可以匹敌Aurora——Amazon改装后的MySQL服务,或者Amazon数据库范围服务的对手。
即便是模仿竞争者,Amazon也在持续创新,Elastic Beanstalk——Google App Engine的Amazon版本,是一个软件包集合,可以自动化创建根据需求增加或减少的机器集群。这是一个更加通用的系统,用以支持一些常见的用Java、.Net、Python、PHP、Node、Ruby与Go写成的应用程序的服务器平台。脚本会自动设置负载平衡器和机器,根据需要开始或停止基础的EC2实例。
Amazon主持了几十个公共数据集,包括气候数据、地理数据、人口普查数据、维基百科流量统计,乃至Enron邮件。上面的Nexrad雷达图像来自Amazon公共数据集,捕获于美国政府天气雷达系统。
Beanstalk与其说是一个像Google App Engine一样的单独的全方位架构,倒不如说它更像是一个看门人。它在通用EC2实例上运行你的代码,而通用EC2实例会出现在你的机器列表上——如果你注意到有新的实例启动,一定要留心,这很重要。如果你不小心误删了实例,可以信任Beanstalk,它一定会忠实地帮你找回来。所以,当你真的决定删除什么的时候,一定要记得关掉它。
Elastic Beanstalk名义上是免费的。你不用为它的服务支付任何额外费用,但需要为你启动的EC2实例付费。
Amazon EC2容器服务采取了和Docker容器同样的方法。Amazon有自己的小代理,可以为你的容器启动EC2实例,然后安装Docker容器。除了底层资源,你无需为容器服务付费。
不是所有的工具都会为了租出更多的机器而免费提供。Elastic MapReduce的集群实例是Amazon基于Hadoop的工具包,花费就要比基本EC2的标价贵上大概25%。Amazon已经创建了一个相当标准的主流工具包(Spark、Hadoop、Presto、Pig、Hive),并将它们与Amazon的S3存数系统整合。如果你正在Amazon云计算平台的其它部分生成日志或处理数据,使用一个Elastic MapReduce群集进行分析就十分合乎情理。毕竟,将原始数据导出AWS既需要时间,又耗费宽带。
Amazon也在通过提供答案而不是计算资源在堆栈中走高。当微软Azure在为数据科学家提供 一套更完整的机器学习工具 时,Amazon已经让开发者或业务分析师的 机器学习变得更为简单 。最终, Amazon也会将分析数据卖给你。
云最有意思的新增元素之一是Amazon正在为我们收集的公共数据。举个例子,你可以从 一个由160个高分辨率多普勒雷达站组成的网络 中反复咀嚼雷达图像——这些雷达站每5分钟提供一次降水和大气运动数据。Amazon正在建立一些大型公共数据集,希望它们可以吸引租用EC2实例提问的项目。
类似这样的服务显示了Amazon计划如何构建未来的云。这家公司已经掌握了提供产品的过程,而且在为解决广泛用户群的需要持续改进服务。现在有如此之多的选择,以至于它可以在你准备按下按钮租用机器——或者非机器产品之前,花费数个小时进行研究。
Lambda和Amazon Machine Learning这样的新服务是洁净层,旨在将租赁的复杂性和配置EC2实例提取出来。毕竟,没有人真的想运行服务器。我们想要部署代码、收集数据和找出答案。可以预计,Amazon将继续提高堆栈自动化,以提供可以屏蔽实际服务器的更高级别的服务。同时,Amazon将继续提供最庞大的实例类型系列,以及最丰富的服务与选择,以使它们发挥最大效用。
感谢陈兴璐对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们。