上个月,平台即服务(PaaS)提供商Engine Yard发布了“盒中云(cloud in a box)”,开发者可以使用它在把应用程序发布到公有云中之前进行本地测试。现在,已经有多家云提供商采用了这种部署模型,不仅可以加快开发速度,而且更易于在提交应用程序之前在特定的云中测试。
他们以一种虚拟机的形式提供了Engine Yard Local,其中包含了核心组件以及展现在Engine Yard公有云中的界面。据Engine Yard公司所说,它模拟了“与Engine Yard Cloud和Engine Yard托管实例相同的操作系统、系统结构、准备系统和软件包树。” 在声明发布产品的博客中,Engine Yard还描述了产品的价值定位。
Engine Yard Local是一种很棒的方式,能够让你不需要进行注册账户、配置、部署应用程序、为实例支付的繁琐过程,只需要找到出了问题的地方。使用Engine Yard Local,你可以持续测试你的应用程序,就像它们真的在云上一样,唯一例外的就是这是免费的模拟,而且没有限制。
Engine Yard Local的使用离不开Vagrant,那是一种开源的工具,用于在虚拟机中创建和分发开发环境。只要开发者安装了Ruby和Oracle Virtual Box,那么就可以运行Engine Yard Local,并从开发环境中向上面部署应用。一种叫做Engine Yard Live的相关产品(暂时还没有发布)使开发者能够通过公共互联网共享对Engine Yard Local实例的访问。
很多PaaS提供商现在都提供了这种类型的开发虚拟环境,帮助开发者在把软件发布到云中之前提前试验。微软的Windows Azure SDK会安装一台计算机和存储模拟设备,开发者可以使用它们在本地计算机上模拟Microsoft的云。然而,和Engine Yard Local不同,在模拟器中的权限和行为与公共的Windows Azure云有很大的区别。VMware的Cloud Foundry PaaS的模型和Engine Yard Local非常类似。Micro Cloud Foundry是作为完整的虚拟机发布的,它很好地模拟了任一种与Cloud Foundry兼容的PaaS提供商兼容的服务、行为和接口。
想要试用Engine Yard Local,你可以查看这篇知识库文章,其中描述了安装和测试产品的所有步骤。关于产品的问题可以在他们的Q&A论坛上提问。InfoQ想要了解更多关于这个版本的信息,所以我们向Engine Yard提出了几个问题。
InfoQ:你们支持哪些操作系统和平台,是如何做出选择的?
Engine Yard:Engine Yard持续评估了流行的技术,并听取了客户的反馈,了解对满足他们的业务和开发需求来说,哪些更重要。
Engine Yard Local 1.0当前支持Engine Yard默认栈,其中包括Gentoo操作系统、Ruby 1.9.3、Nginx、Passenger 3和PostgreSQL。Engine Yard Local将来的版本不仅会提供更多组件选择,还会提供更新的版本。Engine Yard Local可以在Windows、OSX和Linux上运行。
Engine Yard PaaS支持各种各样的操作系统、语言、中间件和数据库。我们的技术栈的完整列表可以在https://support.cloud.engineyard.com/entries/21009842-engine-yard-technology-stack找到。
InfoQ:你们认为,对于使用Engine Yard Local的用户来说,一般的工作流程(例如:创建、提交、构建、部署等等)是怎样的?
Engine Yard:Engine Yard Local让开发者可以在本地计算机上拥有Engine Yard Cloud环境。开发者可以在Engine Yard Local虚拟机上开发和测试他们的Rails应用程序,当他们做好部署准备的时候,可以提交变更并部署到Engine Yard Cloud上。一般的工作流程是开发、测试、提交、部署。
一旦开发者安装了Engine Yard Local,就可以从任意Rails应用程序的目录中使用它。例如,我们可以创建新的Rails应用,然后转到这个应用程序以启动它:
$ rails new myapp
$ cd myapp
$ ey-local up
这会启动运行Engine Yard栈的虚拟机,并启动你的应用程序。你可以转到http://127.0.0.1:8080/,以看到运行在你本地计算机上的应用程序。你可以与应用程序交互,确保它满足了你的需求。
如果变更满足了你的需求,那么你就可以把它们提交到Git repo上,并推送给GitHub(或者其他程序库):
$ git add -A && git commit "It works"
$ git push origin master
完成了这些之后,你可以触发其他任务,像你的持续集成工具,或者把变更后的代码部署到Engine Yard Cloud上。
InfoQ:你认为这会是对开发者当前如何构建本地或者云应用的逻辑扩展吗?
Engine Yard:开发者现在可以在本地测试他们的应用程序,并且(或者)在云提供商的开发环境中测试它们。Engine Yard Local让开发者可以在本地开发和测试他们的应用程序,这使得过程更有效率。他们可以为内部或者云应用程序使用Engine Yard Local。
InfoQ:哪些情况(例如:性能测试)不适合Engine Yard Local呢? 什么时候你需要在Engine Yard上运行你的应用程序,从而获得某些内容的完整效果?
Engine Yard:Engine Yard Local现在还支持多个虚拟机。而且最好是针对运行在开发环境而不是生产环境中的应用程序。一旦一个应用程序准备扩展到多台虚拟机的生产环境,那么就应该部署到Engine Yard Cloud上了。
InfoQ:你认为这个工具会加快本地应用的迁移吗,因为它让潜在的客户能够在推送到云中之前先“试用”?
Engine Yard:的确如此。Engine Yard Local会加快迁移到云中的过程。它会提供更容易的方式来排查部署中的故障。用户可以像在Engine Yard Cloud环境中一样支持拥有同样技术栈组件的实例。当他们准备好部署的时候,就可以点击按钮,然后他们的应用程序就会部署到云中。
查看英文原文:Engine Yard Continues Trend of Local Fabric for Public Clouds