相比于管理你自己的发展基础设施,平台即服务提供了很多优势,你可以有更多时间专注于设计和编码。然而对于新项目来说,PaaS可能是首选,但是PaaS可能不适合现有的、遗留的开发工作。
将遗留的开发项目转移到平台即服务(PaaS)之前,需要考虑五件事。
如何使用PaaS?
不同的公司,PaaS起到不同的作用,来适应他们的IT环境和目标。首先,你必须找出如何将PaaS融入到你的组织中。对于一些服务,你可以轻松地将计算移动到云,同时保持当地资源的其他功能。例如,Pi云提供应用接口(API),将你的本地Python代码复制到云,并在云中运行,而你的开发工具和代码存储库可以保留在本地。
另一种方法是开发本地资源与测试PaaS产品。当你运行大型测试套件或者需要单独的共享资源实例来进行测试时,这种方法很有用。你也可以通过使用云集成开发环境(IDE)来开发云。基于浏览器IDEs所支持的功能——一些功能无足轻重,并且可能不包括所有功能,你可能已经习以为常。
软件开发实践和工具与PaaS是否匹配?
如果你使用Git、SVN、Ant或者Maven等工具开发软件,想一想,在PaaS使用这些工具有多么容易。PaaS的版本控制系统与本地资源的版本控制系统,没什么不同。然而,重写构建脚本的任务尤其重要。如果你的通常做法不那么正式,或者使用国产工具,那么就要考虑如何适应PaaS环境,并且审查你的代码和文档的访问控制策略。检查你的PaaS提供商的访问控制机制,以确保你可以控制你需要的访问方式。
需要整合本地资源吗?
应用通常需要与其他应用或共享资源整合,如企业数据库。在这种情况下,需要了解如何访问这些PaaS资源。如果你使用一个内部应用,该应用实现Web服务API,并且服务于外部客户端应用,你就能转移到PaaS。如果安全是一个关注的问题,并且只有虚拟私有网络(VPN)的客户端应用允许访问本地资源,就要尽早测试PaaS的API。如果你需要实现VPN功能,并且你的PaaS提供商无法满足你的需要,你可以考虑用基础设施即服务(IaaS)云代替它。
开发堆栈是否完全支持?
PaaS从单一语种的平台到支持一系列的语言、数据库和其他服务的平台,快速发展。找出一种PaaS,能够支持你全部的应用堆栈,并且减少PaaS采用的阻碍。例如,如果你用Java开发,使用Jenkins来持续集成,那么,CloudBees可能是一个不错的选择。如果你需要支持Ruby和Node.js,可以考虑Engine Yard。如果你正在构建NoSQL平台,Red Hat's PaaS,OpenShift,可能是个不错的选择。
开发阶段是什么?
你在开发进程中所处的位置,对本地开发转移到云开发的成本和效益有重大影响。通常,项目越到后期,在开发环境和工具上的投资也就越多。随着项目的进展,你需要创建更多的软件,必须移动到PaaS平台,该平台增加了打造一个开关的成本。
PaaS的优势大于完成转移所需的成本和时间时,将正在进行的项目开发,转移到PaaS平台合乎情理。转移到PaaS后,你的管理服务器、操作系统和其他基础设施将如释重负。如果需要扩展应用,最大的回报在于可以避免耗时且具有挑战性的工程问题。
在云中运行你的应用,可以节省更多的时间和成本,转移到PaaS值得一试。