平台即服务提供了管理企业自己的开发基础架构的优势,允许企业有更多时间关注于设计和编码。虽然PaaS可能是新项目的优先选择,但是对于现有、遗留开发工作可能并不合适。在将遗留开发项目转移到平台即服务(PaaS)之前,需要认真考虑如下五件事。
1、如何使用PaaS?
不同的公司对于PaaS有不同的使用,来适用其IT环境和目标。首先必须了解如何将PaaS合并到企业中。一些服务可以将一些计算轻松转移到云端,同时维护本地资源上的其他功能。比如,Pi Cloud提供了一种应用程序接口(API),可以复制本地的Python代码到云端,并在云端运行,同时开发工具和代码库则保留在本地。
另一种选择是用本地资源开发,用PaaS产品测试。在运行大型测试套件或者需要共享资源的单独实例进行适当的测试时,这种方法十分有用。也可以通过使用云集成开发环境(IDE)将所有的开发转移到云端。通过基于浏览器的IDE(一些是轻量级的)审核性能支持,可能会不适应所有的性能。
2、软件开发实践和工具是否适合PaaS?
如果使用Git、SVN、Ant或者Maven这样的工具开发软件,要考虑在PaaS中这些是否能够轻松使用。在一个PaaS版本控制系统中工作与本地资源工作并没有过多的区别。然而,重写构建脚本则是一种更加具体的工作。如果没有过多正式的实践或者使用自主研发的工具,要考虑这些工具如何适用于PaaS环境,且针对代码和文档,审核访问策略。检查PaaS提供商的访问控制机制,确保能够按照需要的方式控制访问。
3、是否需要集成本地资源?
应用通常需要整合其他的应用或者共享资源,比如企业数据库。在这样的例子中,理解如何从PaaS访问这些资源。如果使用通过Web服务API实现的内置应用,且已经服务于外部客户端应用,应该能够转移到PaaS。如果安全是关注要点,且只有在虚拟私有网络(VPN)上的客户端应用能够访问本地应用,就要在开发的早期测试PaaS API。如果需要实现VPN功能且PaaS提供商并不符合需求,可能需要考虑基础架构即服务(IaaS)云来代替。
4、开发堆栈是否完全支持?
从单一语言平台到支持大量语言、数据库和其他服务的平台,PaaS产品快速成熟。要找到能够支持全部应用堆栈的PaaS选择,减少采用PaaS开发的障碍。比如,如果用Java开发,用Jenkins进行持续集成,可能CloudBees会是个不错的选择。如果需要支持Ruby和Node.js,Engine Yard更适合。如果在NoSQL平台上构建,红帽的PaaS——OpenShift就是上佳选择。
5、开发期是怎样的?
处于开发期的那个阶段会严重影响从本地开发转移到云端开发的成本和好处。典型的,你的开发周期进行的越长久,就会在开发环境和工具中放入更多的投资。按照项目进度情况,需要创建更多软件且比如转移到一个PaaS平台上,增加了转换的成本。
把一个进行中的项目开发转移到PaaS平台,只有在PaaS成本权重优势高于迁移所需要的潜在时间时才有意义。在转移到PaaS之后,就可以释放服务器管理、操作系统和其他基础架构的管理了。如果需要扩展应用,避免时间消耗以及工程师问题,巨大的回报就出现了。
在云端运行应用,且以最小的技术介入进行扩展,就能节省时间,确实值得努力转移到PaaS。