移动云应用的开发与管理
云计算与移动性这两大技术的交叉必然是炙热异常的,而这也是应用程序开发人员和规划人员所面临的一大挑战。因为移动应用程序更具自发性和个性化,所以它们成为了云计算支持的最合适候选者,但是让移动云应用从一开始就在正确的方向上发展是非常重要的。为了做到这一点,就要从基于工作流的应用程序深度管理开始,以系统的方法引入BYOD支持,使用应用程序生命周期管理(ALM)来统一应用程序的发布。
移动用户是所有用户最具地域多元化的用户,而这一多样性也同时为云计算带来了机会和挑战。云计算允许开发人员把应用程序支持部署在与移动用户相同的广泛地域中,但是如果缺乏正确的管理,这也会为成本和性能带来不利的影响。
移动云应用开发中最显著的问题是如何把握将应用程序扩展至所谓的“自然分布”。就如同有着一定静态数据内容的网站主机一样,它们可以被很容易且低价地复制以提高性能。在云计算中,可以在用户较为集中的位置部署站点以供本地应用程序访问。但是,如果应用程序是依赖于托管在企业数据中心中的数据(有可能是出于安全性或成本管理方面的考虑)的,那么所有的应用程序最终将不得不返回数据中心以获取信息。
为了平衡成本性能与集中化数据存储处理两方面的关系,应试图抽取应用程序工作流程以说明用户是如何与应用程序进行交互并访问集中处理存储的企业信息的。一般而言,应用程序与用户的交互分为包含选择表现形式的一系列阶段,如收集信息、处理信息和返回结果。在云计算中的关键阶段是“处理”阶段,因为这是云计算外包最难以为应用程序进行定价、提升性能和遵守合规性的所在。应用程序设计的第一目标应当是确保处理阶段是工作流中的一个单一环节,这样就可确保应用程序的其他阶段可以被云计算外包、复制和分发。
应用程序阶段的概念引入了移动云计算的第二个问题,即如何支持BYOD。解决BYOD问题的一个常见方法是为应用程序开发多个前端以支持各种移动平台。这样做是与分布性原则相违背的,因为把每一个前端应用程序组件的副本分发至每一位移动用户可能出现的区域是一件相当不经济的做法。
为了更高效地在云计算中支持BYOD,可以有两个方法:把特定设备格式移至移动设备或者为用户的应用程序开发多个设备前端组件。如果前端处理是由集中化 “显示面板”反馈的,那么前者是有效的,因为这个“显示面板”是专为轻松实现目标设备重新格式化而设计的;而如果“设备-应用程序”的交互被限制于支持所有BYOD目标的归一化形式(以特定设备的方式),那么后一个方法也是有效的。实际上,开发一个具有基本功能的“虚拟移动设备”就可以在之后为每一个 BYOD目标进行定制。
为每一个设备进行格式转换的缺点在于,如果为应用程序开发了更多的功能就会造成对新设备支持工作的复杂化。用户可能可以通过一些“移动后端即服务”的工具来管理这一复杂性,所以在对虚拟移动设备进行架构设计之前审查工具的具体功能是非常明智的一件事。
移动云应用的最后一个问题就是应用程序管理流程。应用程序管理通常被视为移动应用程序本身的版本控制和根据用户需求和意愿向用户发布应用程序的组合。移动云应用由于其中的云计算组件而必须被更广泛地考虑,而更为复杂的结构让应用程序管理变得更像是ALM,在很多情况下这是最好的入手点。从某种意义上来说,移动云应用管理就是云应用生命周期管理和移动应用程序发布控制的组合。
由于变更因素的多样性,移动云应用产生了管理方面的问题。业务变更总是会造成应用程序的变更,所以操作系统和中间件元素也需实现有序升级。传统的ALM是通过为开发人员和操作人员制定“变更-测试-部署”的标准化程序来解决这一问题的。移动云计算不仅引入了另一类的变更(即移动平台的组合集),而且还至少带来了新版本交错部署的潜在问题,这是以往ALM实践所没有考虑过的问题。
因为大多数精心设计的移动云应用是多组件和分布式的,其独特前端处理集是随着移动设备的改变而变化的,所以是有可能把移动云应用的前端和后端当作两个独立应用程序来对待的。这一方法的风险取决于用户的“虚拟设备”是否真正地实现了两个应用程序组件的各自独立。
移动应用程序发布要求将版本控制纳入ALM流程中。如果用户对应用程序或移动设备进行了修改,其影响可能会跨越虚拟设备的边界,用户可能不得不更新应用程序组件的设备副本。请确保您的移动应用程序管理工具具有软件版本控制功能,并对按需更新设备组件有一个科学有效的升级机制。一般来说,您的应用程序管理软件应当能够验证任意被用于运行应用程序的新移动设备的设备型号和软件版本。