拥抱Node?最新的AWS云提供Node.js应用服务

最近,Amazon Web Services(AWS)团队在Elastic Beanstalk服务中加入了对Node.js的支持,使它所支持的平台的集合处于行业领先地位。除了Node.js,AWS Elastic Beanstalk还支持开发者打包、部署和管理使用Java、PHP、.NET、Ruby和Python开发的应用。AWS加入了“青睐Node.js的云服务”这个竞争激烈的领域,并将尝试通过整合其他顶级AWS服务来让自己与众不同。

在一篇关于向AWS Elastic Beanstalk添加Node.js的博客文章中,AWC的首席技术官Werner Vogels解释了将这个日趋流行的平台纳入支持范围的一些原因。

我花了大量的时间与许多在游戏和移动领域工作的AWS开发者沟通,他们中的大部分都在寻找适合自己的Web应用的Node.js。凭借其异步的事件驱动编程模型,Node.js允许开发者们处理大量并发连接并保持低延迟。这些开发者们一般使用与我们的一个数据服务相结合的EC2实例来创建Web服务,这些Web服务可用于数据检索或创建动态的手机界面。

针对Elastic Beanstalk中的Node.js,AWS团队的Jeff Barr列出了一些他喜欢的特性:

  • 开发者选择Nginx或Apache作为自己Node.js应用的反向代理。如果应用的客户端需要建立起直接连接,开发者甚至可以选择不使用任何代理。
  • 根据应用需要,配置HTTP和TCP的负载均衡。如果应用使用WebSockets,那么对应用的工作负载而言,TCP负载均衡可能更加适用。
  • 使用应用需要的特定版本的Node.js,或提供用于启动Node.js应用的命令,以配置Node.js栈。开发者还可以使用npm管理依赖关系。
  • 当使用Nginx或Apache时,通过配置gzip压缩和静态文件以帮助提升性能。使用gzip压缩,开发者可以减少面向客户端的响应的大小,从而加快传输速度。使用静态文件,开发者可以让Nginx或Apache快速提供静态资源(例如图片或CSS),而不必与Node.js应用在执行的数据密集型处理争抢时间。
  • 将应用与Amazon RDS无缝整合,以便在相关的数据存储中存储和检索数据。
  • 定制自己的EC2实例,或使用Elastic Beans配置文件将应用连接到AWS资源(访问 AWS Elastic Beanstalk开发者指南以进一步了解配置文件)。
  • 在Amazon虚拟私有云中运行Node.js应用以获得额外的网络控制。

除了以上列出的特性,Elastic Beanstalk还支持Git整合、高可用性集群以及使用针对特定环境的变量。2012年12月,AWS初次尝试涉足Node.js领域,并为Node.js开发者发布了一套SDK。该SDK支持使用绝大多数AWS服务,包括Amazon DynamoDB、Amazon Simple Storage Service (S3)、Amazon Relational Database Service (RDS)、Amazon Simple Queue Service (SQS)和Amazon Elastic Compute Cloud (EC2)等。

AWS与其他许多提供Node.js应用服务的云服务建立了连接。除Google App Engine外,几乎每个主流平台即服务(PaaS)厂商都提供了基于Node.js的fabric(注:fabric计算,指的是由松散耦合的存储、网络、高速宽带连接所组成的并行处理高性能计算系统。),包括Heroku, Windows Azure, Open Shift, Engine Yard,以及众多Cloud Foundry的提供者。这些厂商也都在与Nodejitsu竞争,它是Node.js领域的精神领袖并提供专用的平台。那么这些厂商如何体现自己的独特性?一种方法是通过工具来体现。Werner Vogels指明了Elastic Beanstalk是如何与众多顶级平台的开发工具紧密结合的。

开发者可以在除GovCloud外的任何AWS域中部署和管理应用。有许多工具适用于应用的部署和管理,开发者可以选择自己喜好进行选择。Java应用的开发者可以使用用于Eclipse的AWS工具包;.NET应用的开发者则可以使用用于Visual Studio的AWS工具包;如果开发者希望在命令行中工作,可以与Git一起使用一个名为“eb”的命令行工具。诸如eXoCloud IDE等合作伙伴也提供与Elastic Beanstalk的整合。

Codenvy从exoCloud中独立出来,它针对用于Node.js部署的Elastic Beanstalk,为开发者提供一个基于云的开发环境。

云服务提供商为了在同类对手中寻求差异化竞争,除了为开发者提供构建和部署Node.js应用的工具外,正在整合额外服务并提供应对应用管理中的“困难”问题的解决方案。在Elastic Beans上运行Node.js的一个有吸引力的因素,是能够轻松地整合AWS提供的许多应用服务。Node.js应用在AWS环境里运行,将能够以低延迟使用数据库、存储、计算、队列、缓存以及其他许多服务。诸如Windows Azure这样的云也拥有相似的价值主张,在其上部署Node.js应用的开发者同样能够使用不同的本地服务集合,包括数据库、存储和消息传递。如Heroku和Nodejitsu这样的供应商则没有自己的额外应用服务集,但它们维护了一个策划管理的目录,列出了能够与其上运行的应用整合的服务。

除了提供额外服务作为差异化竞争手段外,云服务提供商还兜售自己具有让应用部署和管理变得更容易的能力。这意味着支持基于Web的源代码管理仓库——像AWS、Windows Azure和Nodejitsu这些云所做的那样——并提供持续部署服务,例如Nodejitsu通过TravisCI支持这一服务。高质量监控和响应系统,让开发者和管理员的容量管理工作变得简单了许多。AWS拥有用于监控云的使用情况并自动调整应用环境大小的产品,而Werner Vogels描绘了Elastic Beanstalk如何帮助提供具有全部管理能力的应用。

Elastic Beanstalk能够自动化提供、监控和配置许多AWS基础资源,例如Elastic负载均衡、自动扩展和EC2。Elastic Beanstalk还提供了用于部署应用、处理日志并自定义EC2实例的自动化工具。

请密切关注这一领域。云服务提供商正在提高其平台的应用管理能力,并提供本地的或整合的服务以提升其平台上运行的应用有效性。

查看英文原文:Got Node? AWS Latest Cloud to Offer Node.js Application Services

感谢崔康对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(拥抱Node?最新的AWS云提供Node.js应用服务)