很少企业能够忍受将自己的应用开发实践同单一厂商绑定,但是很多企业又在不知不觉中将应用开发和唯一云提供商绑定在一起。 随着云越来越具有竞争力以及一些提供商具有长期稳定性风险,开发者必须理解如下的事情:即平台即服务(PaaS)是圈套,因为平台特性支持不均衡,一些PaaS提供商比其他的提供商造成了更大的风险,所有的PaaS选择通过正确的项目步骤都可以变得对于可移植性更加友好。 即便是在云应用的初期,PaaS服务用户提出了其应用的可移植性问题,而不是向PaaS提供商提问,而是在从第一个提供商转向不同的提供商时提问,或者甚至是迁回数据中心时才提问。在一些案例中,这种转换要求软件的主要改变,而且导……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
很少企业能够忍受将自己的应用开发实践同单一厂商绑定,但是很多企业又在不知不觉中将应用开发和唯一云提供商绑定在一起。
随着云越来越具有竞争力以及一些提供商具有长期稳定性风险,开发者必须理解如下的事情:即平台即服务(PaaS)是圈套,因为平台特性支持不均衡,一些PaaS提供商比其他的提供商造成了更大的风险,所有的PaaS选择通过正确的项目步骤都可以变得对于可移植性更加友好。
即便是在云应用的初期,PaaS服务用户提出了其应用的可移植性问题,而不是向PaaS提供商提问,而是在从第一个提供商转向不同的提供商时提问,或者甚至是迁回数据中心时才提问。在一些案例中,这种转换要求软件的主要改变,而且导致项目滞后,甚至生产力损失。主要是两个具体问题导致的,开发者必须在为PaaS创建可移植性应用时解决。
PaaS可移植性的第一个问题是缺少PaaS提供商之间一致的平台定义。使用基础架构即服务(IaaS),开发者同裸机共事,可以提供应用需要的所有系统软件。这种平台的问题就是可移植性,因为从一个IaaS提供商迁移到另一个时,甚至会移植到本地内部的虚拟机。使用PaaS,提供商选择自己支持的操作系统和中间件元素,如果提供商做出不同选择,随后应用在这些不同领域使用的性能就不能迁移。如果一些PaaS性能是提供商自定制的,将应用迁移会本地相同的平台甚至更难。
对于这个可移植性问题的最佳解决方案就是创建一个平台参照点。PaaS服务通常都是围绕一个操作系统提供的(比如,Linux、Windows),一群中间件用于通信和数据库服务,还有管理和开发工具。同时多种云提供商可能提供相同的基础平台,变换了中间件和工具,因此绘制你优先的平台类型性能图表很重要,高亮标出哪些不统一支持的性能/工具。避免这些性能和工具,就能避免可移植性问题。
第二个问题就是缺少可靠平台替代提供商。当今PaaS服务通常提供两种形式。首先,平台“所有者”(微软的Windows/Azure为例)可能会对有效的服务器平台提供一个云版本。在这种案例中,第一类PaaSi工商的优势可能也会阻碍竞争力,尽管平台提供商考虑到了(微软最近变更了Windows Server,促进非微软Windows PaaS产品。)
当一个支配性的提供商压制PaaS竞争力,云用户可用的唯一替代物就是使用IaaS服务,包括其机器映像中的PaaS“平台”部分。如果这样做,关键就是确保所有的PaaS性能对于本地服务器配置可用。主要平台提供商(比如微软、IBM、HP或者甲骨文)的风险就可能仅仅避免小型PaaS业务,但是在这些地方小型提供商就是PaaS唯一的选择,计划IaaS退路是个谨慎的过程。
第二个问题的解决方案就是适配器设计模式。云端应用必须参照可能不是所有提供商都可用的服务时,封装参照到更高层的软件元素中(遵循适配器设计模式原则,共有面向对象设计)并转换通用需求到PaaS服务需要的具体形式。
例如,假设一个应用为亚马逊的Redshift仓储服务开发。然而IaaS服务和广泛使用的亚马逊EC2兼容,其他的IaaS提供商不提供Redshift,且应用是为了“miniPaaS”编写,EC2/Redshift在不变更所有的项目参照到Redshift的情况向下就不能迁移。一个开发者编写了一个小型的软件对象,称之为“Warehouse”,用于代替Redshift应用程序接口(API)。Warehouse内部,代码可能改变数据库操作参数,成为Redshift格式,随后调用Redshift。如果应用随后转移到一个不支持Redshift的提供商,Warehouse就要变更来执行正确的数据库访问API需求来模拟。Warehouse对象单一的变更就可以进行应用迁移。
这种基于抽象的机制也适用于管理应用可移植性问题,即需要在一个平台性能上构建一个云应用,竞争分析显示并没有广泛的支持。关键在于确保至少要有合理的方式在多种平台上提供同样的性能/功能,即便相同的API不能跨平台工作,比如上面提到的Warehouse例子,在一个或者更多的替代平台上根本没有可比较的服务,然后适配器设计模式机制在它们之中并不能轻松的支持可移植性。
久而久之,PaaS最大的可移植性风险并不是正常的PaaS平台,比如Azure,但是随着IaaS服务通过增加一些性能发展成PaaS服务,比如亚马逊的Redshift或者缓存服务。这些平台的很多用户永远不会把自己看作是PaaS用户,可能在他们第一次尝试将应用转移到另一个提供商时就会被不可移植性攻其不备。少量的预先计划可以防止主要的问题,经验也能够协助云专家要理解可能让PaaS可移植性成为性能区别持久压力。
相关推荐
-
青云QingCloud PaaS六大升级:AppCenter应用生态更完善
企业级云服务商青云QingCloud(qingcloud.com)日前宣布,将对其官方运营的PaaS服务进行全 […]
-
PaaS现在与未来:容器技术如何演变成为PaaS框架
随着PaaS功能扩展支持更多的新技术(例如容器和微服务),IT团队和开发人员面临着诸如可见度、监控等新挑战。
-
ThoughtWorks技术雷达:直指四大趋势
今天随着智能硬件、 IoT、云计算等等新技术的兴起,使得产品与技术结合在了一起,如产品都嵌入也芯片传感器;另外,商业的创新也完全由技术驱动。
-
PaaS还初处于初级阶段:企业该如何应对?
IDC的调查显示,目前,基础架构即服务(IaaS)已经走上正轨,成为商业化的产品;而软件即服务(SaaS)将会占到未来五年云服务花销的大头;平台即服务(PaaS)也将持续增长。