云已经从开发人员的手中拿走了一些对应用程序开发的控制权。不幸的是,很多的开发人员还没有适应他们在云时代中的新角色,威斯康星州的高级顾问兼Agile教练DanPiessens说。这一转变将迫使开发人员转变他们对于应用程序开发的传统观念。他们还必须学习使用新的技能以便于为不断变化的平台开发弹性的应用程序。
“我们在运行的系统中发现,开发人员所使用的很多模式要么对系统有直接的控制要么对系统有一定的影响,”Piessens解释说。在云中,他们并不具有与之相同的控制权,而更新、服务位置和中断都完全处于开发人员的视野范围之外。
Piessens建议开发人员在基于云的应用程序开发中应用Agile实践以便于引入更多的灵活性,并能够快速地故障中恢复过来。“解释说明这些情况并将其与Agility原则联系起来的方法中有一些是比较简单的,”他说。
更多
云计算的研究报告
2014-2018年云计算产业深度调研及未来发展现状2014-2019年广东物联网云计算行业趋势分析及投2014-2018年云计算行业招商计划书2014年版云计算项目融资商业计划书2014-2018年中国云计算第三方软件行业市场深度2014-2018年中国政府云计算行业市场深度调研及2014-2018年中国云计算行业市场竞争格局分析与2014-2018中国云计算产业园区行业竞争格局分析 在Agile2014上,Piessens举办了一个名为“开发稳定、敏捷的云应用程序”的会议,在会议上他向与会者分享了一些开发更具敏捷性的云应用程序的基本策略。在讲座中,Piessens从瞬态错误处理、诊断以及把回落模式融入应用程序开发等问题入手。“我将与大家分享一些来源于现实生活的‘恐怖故事’来说明这些做法的重要性,”他补充说。
在会议上,Piessens介绍了应用程序开发是如何与敏捷性相关的,以及如何向外部专家“借脑”。他还讨论了谁最有可能从这些实践中受益。
开发一个变化的平台
“弹性云应用程序与敏捷性相关有两个核心领域:稳定的质量,以及响应变更的能力,”Piessens说。
他认为,云应用程序开发策略所带来的价值更多的在于问题恢复而不是回避问题。开发人员将不得不花费数月之久的时间来进行提前规划以求实现万无一失的部署。但是,无论是什么样的错误,云中终究还是会发生错误的。开发人员对它们研究的深入程度最终将决定云应用程序是否能够保持长期的成功。
第一步就是要把云视为一个不断变化的有机体,而不是一个静态的平台。“有些开发人员可能并没有意识到云的底层基础设施是在不断变化的,他们可能需要把响应和常见瞬态故障结合起来。”这方面的一个例子就是可扩展性。如果云应用程序得以普及,而流量突然飙升,那么将会发生些什么呢?在此之前,开发人员需要对这个情况有所了解以便于执行一个高效的可扩展性预案。
当涉及云时,质量并不是一个最终的结果。这是一个持续不断的过程,而云应用程序的设计需要开发人员拥有一个面向过程的概念。换而言之,云应用程序的设计并不需要是防弹的。它只需简单地具有弹性。
收集资源
这个过程是从选择云供应商开始的,但它并没有止步于此。一旦应用程序被托管,那么企业用户仍然需要在定义托管方法中发挥积极的作用。这样一来,他们就能够最大限度地发挥不同功能的优点。“让主要云供应商托管你的项目显然是必须的,但是你还要确保你充分地利用了供应商的优点,而这些优点有可能是被其他人所忽略的。”
具有讽刺意味的是,一些企业用户往往过于追求避免受制于厂商而放弃了那些有助于增加其灵活性的特性和功能。“虽然今天选择了亚马逊网络服务(AWS)明天选择微软公司的Azure有可能会为用户带来一些好处,但是你有可能正在牺牲某些关键的性能以及可靠性,而这些指标往往是影响你目前业务价值的决定性因素,”Piessen解释道。
简单地做好研究则是实现灵活性和避免常见陷阱的另一个关键步骤。如果你愿意,那里有着大量的研究材料可供你使用。“这一领域的专家和相关组织(例如微软模式与实践)可以提供有益的指导。他们可以提供大量的材料来帮助开发人员理解何为常见的陷阱、为什么开发人员应当关注这类问题以及如何解决这些问题等等。”
也有些诸如Centare这样的咨询公司能够从一个新的视角来诠释企业的应用程序开发过程,尤其是特别强调了他们正在进行的正确工作以及那些需要做出改变的事情。
Piessens认为,敏捷开发战略是多种类型云应用程序的必然选择,其中包括了移动后端以及SaaS企业。这些策略有可能会让所有的人都能够得益。“在私有数据中心中的两台服务器上运行的应用程序就可以利用到这些技术,”Piessens说。