云技术开发:引入前必须了解的九大难题

原创
云计算
无论是在开发、测试或是将自己的应用程序部署到云环境的过程中,我们都必须抛弃一些旧有观念并重新学习,只有这样,云技术才能真正发挥其强大的实用功能。

无论是在开发、测试或是将自己的应用程序部署到云环境的过程中,我们都必须抛弃一些旧有观念并重新学习,只有这样,云技术才能真正发挥其强大的实用功能。

应用程序基于云技术的开发及测试目前正日益普及,越来越多的企业开始公布其基于公共云或是私有云的计算计划。云技术开发通常包括整合开发环境,应用程序开发周期管理组件(例如测试及质量管理、源代码及配置管理和持续提交请求工具等)以及应用安全性测试部分。

尽管技术人员和开发人员在以云技术为基础的开发方面已经很有经验,并坚信这类技术对开发环境的益处显而易见——例如节约成本并可让产品更快投入市场——但他们同样提出警告,称其中存在无数挑战及意外状况。

云技术在开发中究竟能普及到何种程度目前尚不明朗。但业内人士给出的分析结果表明,这一普及度无疑是在上升当中。在2011年2月的研究报告中,Gartner公司表示那些参加了该公司专题研讨会的客户们普遍认为,云计算项目对他们而言“越来越具有吸引力”,并打算以此来加强开发能力及优化现有的自定义网页应用程序维护手段。

“我更多地看到了其原型及并行分支的发展情况,但其在负载及性能测试领域的巨大塑造空间也极具前景,”Eric Knipp说,他是Gartner公司的首席分析师。

如果大家正在首次寻求云技术开发的起步方式,那么下面所列出的九项建议涵盖了那些大家可能面临的种种障碍,并指出如何从已经走过这段坎坷道路的成功开发商那里学到应对这些问题的方案。

云开发难题一:云技术并不总像“真实世界”那样简单

开发人员可能会发现他们在开发产品时,将其配置复制到云平台上是个很难操作的过程。例如,对于一个利用云技术开发,并打算在完成后基于本地主机运行的应用程序来说,大家可能需要对所有关于本地与云服务器端不同运行环境的遗留问题进行检测,而没法简单地将配置复制一下就指望能够解决问题。Knipp说:“这意味着开发人员可能不得不耗费更多的精力来寻找一款合适的测试工具来对自己的产品进行检测及核对。”

服务器虚拟化技术可以在这方面帮上忙,Knipp说道,而开发人员可以利用到目前市场上已经存在的、用以解决复数化/并行类开发问题的产品。就拿iTKO公司来说吧,它出品了一款名为Lisa的软件套装,帮助企业将自己开发的应用程序真正应用到云中。

那些习惯于在非云环境下开发程序的开发人员也可能会遇到麻烦,比如他们正打算在本地主机上制作一款将运行于云环境下的应用程序。举例来说,Greg Taylor,他在俄亥俄州建立了一套音乐教育协会网上登记申请系统,没想到,为了这样一款简单的应用,他却不得不深入了解数据库结构及用户们与他所制作的程序的交互过程。

这个应用程序所处理的内容是全州范围内各音乐学院的艺术表演登记,使用MySQL数据库作为后端,并利用Alpha软件公司出品的Alpha Five 10.5来制作前端。“我过去一直在使用FileMaker Pro,这款产品对于数据库结构方面的要求一向是非常宽松的,”Taylor说。“就算是设计本身很糟糕,仍然能够获得不错的成功工作效率。

但基于MySQL的开发工作迫使Taylor将其预案系统组织起来,以便网页应用程序能够发挥出最佳的性能表现。每当需要添加更多区域都依靠返回表格结构来实现是非常耗时的,因为它涉及到不同开发工具之间的切换作业。这时就可以利用Navicat来应对MySQL,而Alpha Five则用来处理网页页面的实际设计,他说。由前一款工具负责创建数据库主体结构,后一款工具为用户提供互动页面,以便输入及编辑数据库中的各项信息。

“这可能并不是关于开发人员费尽心思来改变既有数据库的问题,”Taylor说道。“一般来说开发人员可以利用Alpha Five轻松地制作用户访问的网页。但对于我来说,我需要同时开发数据库和网页,这样一来我必须要谨慎安排开发计划,因为开发工具之间的切换是非常实际的问题。”

为了避免这种长期存在的切换问题,Taylor不得不改变了自己的数据库开发方式:“通过制作一幅清晰的ERD(即实体关系图),我将开发流程变得更为直观,这对网页应用程序制作是非常有益的,并使我的整体开发时间大大缩短。”

在某些情况下,云环境下的开发工具在使用时也是很类似于本地开发的——至少类似于一些过时的本地开发方式。Jeff Hensley,DaVita公司(一家在肾透析方面非常权威的专业医护公司)人力资源信息部门的高级分析师,对于开发人员们需要在云开发环境中用到命令行工具,XML以及SQL表示极为惊讶。“这些陈旧的开发工具让我感觉回到了DOS时代,”他同时对未来做出了预计,认为古董级的开发方式会导致程序制作周期大大延长。

DaVita公司在日常运维中同时使用了基于云技术的应用交付平台及基于本地服务器的开发工具、人力资源数据管理和商业智能应用程序。

云开发难题二:有些应用程序无法在云环境中发挥理想的作用

越是难以访问或是难以复制的系统应用集成体系,就越是难以将其开发及测试工作放在云环境下完成,Knipp如是说。

举例来说,Dan Stueck,Faith Educational Ministries(信仰教育部门)IT业务副总裁,一直尽量避免在那些高端应用程序的开发过程中涉及云技术,因为其中涵盖了一些难以处理的极端数据安全或规则限制以及类似Cobol这种传统编码项目所引发的问题。“高端开发和云技术最好别凑到一起,”他说。“一方面是出于明显的安全保障考虑,另一方面则是因为有些编程语言在云中‘玩不转’。”

当然Stueck也会在适当的时候运用云技术,比如他在Amazon.com的公共云服务器上建立了一套学生信息系统,能够保存学生的成绩单,并制作了一款能够远程进行教材销售的云应用程序。

云开发难题三:开发人员通常对不熟悉的云环境表示抗拒。

云计算对于很多机构来说仍然算是相对较新的领域,而且对于开发环境来说,它也可以被看作是一种颠覆性的技术。20/20集团,一家专门提供销售外包服务的供应商,利用Salesforce.com推出的Force.com云平台构建起了一款自定义应用程序,允许外包服务的销售代表利用它来完成从预订到开发票再到提供支出清单等一系列工作。

“最出人意料的情况是,我们的难题在于如何搞好整个【云开发】项目,以使其更容易为公司的管理及销售团队所接受,并明确同事之中谁来使用这套系统。此外,我们还需要考虑IT机构特别是开发人员到底愿不愿意为我们完善这样一套系统,”Mark Warren说道,他是20/20公司的总设计师。

IT人士习惯于使用微软的.Net,SQL Server,Java以及其它传统的开发平台,Warren说,而Force.com所使用的则是一套完全不同的模式。“如果你了解SQL和Java,那它们就是你的百宝箱,没人愿意丢掉自己擅长的工具而去使用一套完全陌生的平台,”Warren说。

作为应对,销售应用程序的开发主要由业务人员来完成而非IT开发人员。这一决定给我们自己带来了一系列挑战,Warren说道,而最大的挑战就是业务人员在变化管理及IT应对方面缺乏概念。“IT有自己的一套严格的规则,而商务人士往往不习惯于将其贯彻执行,”Warren说。“我们必须尽快将他们在变化管理方面的错误认识纠正过来。”

对于专业的技术人员不愿在云环境中进行开发工作的问题,能够帮助云计算迅速普及的解决方案也不是没有,Warren说。“培训当然是个不错的办法,至少很方便,”他说。“不过,除非IT文化本身能够变得更容易接受新方式及新技术,否则对机构进行革新重组(即招纳新的开发人员)恐怕是惟一的选择。”

云开发难题四:教材及说明的匮乏阻碍开发人员研究云技术

能够帮助开发人员理解云技术及其相关工具和资源,以使他们能够顺利在云环境中构建应用程序的书面材料极为匮乏,DaVita公司的Jensley对于这种现状表示惊讶。
“我当然希望这种状况能够得到改善,因为随着越来越多的公司开始接受云技术这一概念,此类需求无疑会大大增加,”Hensley说道。“我们能够通过与咨询公司合作的方式扭转这一不利局面。”

#p#

云开发难题五:网络问题可能对私有云环境造成困扰

在云环境中进行开发,有时候同时意味着我们要在自己的私有云下进行开发,因为在私有云中没有用户过多所带来的高负载影响,因此能为开发人员提供全天候稳定快速的工作环境。在私有云环境下,“挑战之一是如何预测并制定处理方案,来解决定期及不定期出现的各种服务器故障,以及如何顺利地进行设备切换,”David Intersimone说道,他是Embarcadero Technologies(一家数据库管理工具制作公司)的开发人员关系部门副总裁。

Enbarcadero公司正使用其虚拟化数据中心来处理应用程序的开发及测试。“对于内部的私有云,我们有两种选择:选择特定的日期或时间,并以一定的顺序安排各服务器的运作,”Intersimone说。“或者是自动构建故障检测机制,在运行过程中对我们私有云的主要相关设备及开发工作所处区域进行监控。”

如果要获得更多可用的开发空间,Intersimone表示他正在考虑采用由CohesiveFT公司提供的云容器以及虚拟专有网络。它们能够为公共云及私有云根据具体需求提供扩展、故障切换、灾难恢复及突发情况备份等服务。

其它可能会影响开发及测试的因素包括网络延迟、网络带宽等,这类情况在世界上的某些国家中尤为常见。Embaracdero公司的研究及开发中心遍布斯科茨谷、加利福尼亚州、加州蒙特里、多伦多、圣彼得堡、佛罗里达州及罗马尼亚的雅西,此外还在世界范围内分布着大大小小的团队及个人研发中心。

考虑到Embarcadero公司上述复杂的地理分布状况,开发环境也就“更难保证程序的构建、检查以及自动测试执行的同步完成,”Intersimone说。为了解决这一问题,开发人员决定在本地主机上进行开发工作,并正如代码核对一样,在虚拟服务器上将开发成果发布出来。而Embarcadero公司所要做的是借助Subversion(一款开源工具,用以控制源代码)来确保所有这些工作成果能够及时准确地与私有云中的版本进行同步。

“当一个阶段性成果被构建完成,它将自动由验证体系进行运行测试,”Intersimone说。“然后将通知发布到整个开发团队中,并且该成果将被立即上传到我们开发中心的虚拟机中去,以接受进一步的自动测试。”当自动及人工检测全部完成后,电子邮件会通知到每位开发人员。“上述所有步骤在应用程序的开发过程中不断循环,”他说道。

云开发难题六:在云环境中运行容易造成资源浪费

另一个潜在的问题是应用云技术会浪费资金。开发人员很容易就会忘记或者是忽视掉应该把不使用的虚拟机关闭。“我已经听到了一些客户的声音,如果让开发人员放开了去使用虚拟机资源,遇上周末的时候他们往往就把那些运行着任务的设备直接扔下了,”来自Gartner公司的Knipp说。“如果这些设备只是自己企业内部所购买并部署的私有服务器,倒也没什么大不了的,只是耗电而已。但当他们所使用的是计时租赁的公共云服务时,那就绝对是对金钱的极大浪费。”

Knipp说他希望这一问题会成为推动各企业部署私有云设备的动力。

尽管让开发人员使用私有云进行工作几乎不会导致过于高昂的支出,但是“在自架服务器上,私有IaaS(基础设施即服务)环境中,开发人员能够尽情玩转虚拟机而不必将其关闭,”Knipp说道。“这种习惯性行为会导致大量有效资源被虚开着的虚拟机所占用,进而使得整个企业机构不得不购买多于所需的硬件设备来应对这一局面。”

云开发难题七:云许可中那些莫名其妙的部署限制条款

在与云开发相关的非技术类问题中,影响最大的莫过于应用许可限制了。两年前Kelly Service这一国家级临时机构决定将Salesforce.com的Force.com作为平台载体,以使用其自主研发的应用程序来帮助进行云环境下的软件开发。

云开发带来了种种益处,例如缩短应用程序开发周期以及降低开发成本,Joe Drouin说,他是Kelly Services的CIO。但该公司也在应用许可方面遇到了一些意料之外的麻烦,尤其是在反馈哪类用户将会使用这款软件以及其所能负载的访问对象数量上。最终,在开发的“某些层面上我们惊讶地得知了自己能做或不能做哪些事情,有些条款实在是让人费解,”Drouin说。

云开发难题八:高集成度架构使故障排查更难实施

将新应用程序与现有的程序整合起来可以说是开发过程中的关键性步骤,而云技术的引入从集成角度来说带来了更多的挑战,Drouin说道:“利用云计算时,企业用户一般都不具备可以将其云服务供应商的基础设施进行开放式接入、应用和整合的平台。”

Kelly公司在基于云的应用程序与其内部部署系统以及多个云应用程序之间的协作性能问题方面交出了令人满意的答卷。这类问题真的很难解决,因为公司通常来说只能对自己的基础设施进行排查,Drouin说道。

为了尽量减少高度整合所带来的问题,Kelly的开发人员们尽可能尝试利用云供应商的API(即应用程序编程接口)来解决问题;这种方案相当容易,因为多数云服务供应商都会公开其API,Drouin说。

云开发难题九:云技术迅猛发展,前进步伐难以跟上

IT服务供应商Avanade使用的是部分归属于微软的Azure云平台,并利用微软提供的开发工具来对企业内部及客户端的业务进行开发和测试。

该开发工具与旧有工具较为类似,开发速度与测试环境在稳定性方面进行了强化,Graham Astor说道,他是Avanade公司的全球解决方案总监。但是“在不断发展的云技术领域,要保持开发平台的同步高速发展意味着必须对其进行频繁更新,”他说。

Azure平台需要每两个月就对其性能及功能进行改进,因此Avanade每个月都需要与微软的产品团队成员进行会谈,以获取最新的变更信息。其它公司也面临相同的境况吗?“我不知道,”Knipp说,“但微软肯定会全力支持Azure的咨询管理工作,以推动其大规模普及。”

尽管路途坎坷,云开发仍然大有可为

尽管对于许多尝试摆脱传统开发方案而转向云技术应用开发的企业来说,都面临着大量潜在的新挑战。然而无论如何,云技术还是使开发的资源及成本投入变得更为灵活、操作复杂性得以降低,而这两点都使得应用程序的开发周期大大缩短。

原文名:Cloud development: 9 gotchas to know before you jump in 作者:Bob Violino

【本文乃51CTO精选译文,转载请标明出处!】

【编辑推荐】

  1. 使用Microsoft Azure 让云迁移变得简便的5种方法
  2. VMware的混合云迁移工具:vCloud Connector
  3. 企业CRM等业务系统迁移到 "云"中的最佳实现 
  4. 云计算该“迁移”还是“自建”? 
  5. 云迁移全攻略:哪些应用适合迁移
  6. 云迁移≠云转型 先迁移还是先转型?
  7. 实战系列 Windows Azure开发者之任务

 

责任编辑:王勇 来源: 来源:51CTO
相关推荐

2012-04-25 15:57:57

Android

2022-03-01 14:12:22

区块链技术安全

2016-06-28 09:36:04

运维DevOps实践

2021-08-13 11:30:07

大数据数据分析据中心

2010-03-09 17:23:12

python开源

2018-04-25 15:50:50

2012-02-03 08:47:48

2018-07-13 05:04:08

物联网IoT网络

2009-08-12 18:14:00

C# WebServi

2020-09-04 15:07:54

网络威胁情报CTI网络攻击

2013-01-21 10:46:34

公有云IaaS云计算

2019-03-15 10:25:00

技术研发指标

2011-12-15 09:48:07

2009-10-29 09:32:51

宽带接入网

2018-01-25 10:02:30

云计算区块链人工智能

2020-10-13 09:28:51

vue开发

2018-07-20 14:41:15

数据中心迁移管理运维

2011-07-25 10:42:47

2013-07-18 09:38:26

2021-03-01 19:20:32

多云IT架构
点赞
收藏

51CTO技术栈公众号