因此,对于企业来说,最重要的是要进行充分考虑,不仅包括移动功能的开发、还有如何部署,以及如何随着时间的推移对其实施变更时确保功能的持续性。本文包括 DevOps(开发 & 操作)如何帮助处理向不同设备部署不同版本应用程序的问题。
移动应用程序:新思维过程和行为
在移动空间中,有大量潜在的部署平台。在某种程度上,这类似于许多年前存在多个竞争性标准时的传统桌面开发情况。移动方面的不同之处是不仅存在多个竞争性操作系统(比如 Android、iOS、BlackBerry 和 Windows),还存在多个不同的设备特征:屏幕分辨率、处理器、图形处理功能、网络处理功能等。其中每一个特征都为向移动环境中部署的复杂性添加了一个潜在层。
因此,在为移动进行开发和设计时,企业需要使用不同的思维过程和行为。例如,许多企业目前使用的一种方法是专注于启用 Web 的移动应用程序。已经致力于 Web 门户和 Web 功能的开发团队仅仅将其扩展到使用 HTML5 的移动应用程序。
然而,这种方法的缺陷是不可能利用各同移动平台的所有能力和特性。用户必然会要求在移动设备(比如日历应用程序)上使用现有本地功能进行更 好的集成。如果平台不向访问特性公开 API(当您开始提出有关将要支持哪些平台以及何时支持的问题时),那么满足这些需求就需要本地应用程序。此外,您将支持多少种 版本 的平台?考虑到大多数客户只会将一台设备保留几年时间,排除某个版本和不选择支持这些客户会涉及多大的风险?您支持还是排除整个平台(比如 iOS)?一个 Android 版本(比如 3.2)?您是扩展为 Jelly Bean 的全部功能(Android 的最新版本)吗?
对移动应用程序开发和部署所添加的困难,称为 “IT 消费化 (consumerization of IT)”。越来越多的员工和客户将自己的设备带到企业环境中。例如,在 IBM,仅 1 月份就有将近 10,000 台 iPads 和 30,000 多台其他 iOS 设备在该企业中运行。这就意味着企业不再拥有一个共同的标准,声明他们将只支持 iOS 版本 4,因为客户购买更新的 iPhones 或 Samsung Galaxies,同时还有平板电脑和智能手机。尽管企业在使用员工的设备时有优势,消费化还是创建了一个大型的目标环境集,这同时也增加了开发 和管理成本。
移动应用程序部署的误区
开发和部署移动应用程序的一个最主要的误区是向一个大型的部署中打包了太多的更改。这种传统的瀑布式部署方法在企业应用程序开发中也很流行。企业花费 6 到 8 个月的时间来解决需求,6 到 8 个月的时间来进行开发,6 到 8 个月的时间来进行测试,然后再将其大量应用程序投入生产。问题是,在这段时间内,丢失了组件跟踪,甚至中断了部分构建。因此为了降低这种风险,企业实现了一种严格且复杂的治理流程。
企业通常希望对移动开发和部署采用同样的方法,因为无论是对其用户群还是员工来说,他们都希望自己进入市场的移动功能的第一个发行版能够完美。事实上,应用程序并不需要做到完美,它只需要有用且直观就行。然而,大多数企业并未认识到这一点,因此他们为实现代价高昂的应用程序花费了大量的时间和精力,而且,通常是最晚的一个。瀑布式开发所产生的大多数应用程序进入市场较晚,而且最后通常无法解决其用户的需求。
DevOps 是解决部署挑战的一种方法,包括多操作系统、多设备和消费化,该消费化是通过扩展敏捷开发方法来快速部署成功的敏捷应用程序所需的功能而实现的。
DevOps 的力量
主要解决的需求是:在任何给定的时间点,使用最新的特性将运行的应用程序部署到生产环境中。这是一种敏捷方法,瀑布式开发方法在此不适用。定义需求并在小型业务值的功能性部分进行开发,这很重要。每个晚上,或每隔 15 分钟,或变更调查源代码管理系统的每一次,您都需要确保可以构建产品或业务功能。这是 DevOps 的持续集成性能。此外,考虑到企业移动应用程序的复杂性,这不仅仅是关于为移动设备编译代码的问题。企业应用程序利用后端系统,该系统也需要包括新功能。
通过各种环境捕获构建和部署需要一个强健的持续交付功能集,该功能可以推动应用程序:
从开发人员的桌面起,使用运行 Android、iOS、或另一个移动平台的模拟器
到测试环境,该环境可能涉及测试不同手机的第三方
到后端系统,该系统公开由移动设备使用的服务
进入生产环境,此处交付到各种设备
每个平台从部署角度来看都具有不同的特征;但是,无论是什么平台,要想交付成功,都必需识别、跟踪、捕获和测试每一次变更。这就需要一种规范的方法,可以将开发和操作团队集合在一起,确保实现频繁、可靠、高质量的软件交付。开发和操作团队共同工作来实现一个共同的目标:可用移动应用程序的持续交付,无需任何人追究责任或找借口。自动化是关键。
这就是 DevOps 对于移动应用程序开发和部署的强大之处所在。DevOps 可以:
捕获变更
自动化变更方式
自动化测试
将变化保持在足够小的范围内,在业务移动到生成环境时降低风险
在流水线的每一个阶段,确保适当打包的业务功能可以复制且向前推进
有了 DevOps,您可以使用一种规范的自动化方法,部署小型的功能增强,久而久之,可以变成大型的复杂功能。它可以通过配置的功能,将应用程序和更新推向移动生命周期中的各种终端设备。DevOps 还意味着对变更的透明性,因而所有利益相关者都能认识到新功能如何处理,从而降低业务风险。度量和测量在仪表板上捕获并公开,这增加了透明性和责任性。
当您考虑到用于交付移动应用程序的时间段比用于企业应用程序的时间段更短时,DevOps 则是一种理想的方法。因此,花时间将团队和流程集中在移动应用程序发布和更新上,帮助每个人理解目标并不完美且有待改善,这很重要。这使得每件事情以正确的方式开始,而且进展又快又好。在效率和流程实现自动化的同时,也产生了高效率且改进了流程。
结束语
全世界的企业都希望通过向客户和用户提供使移动计算更简单的应用程序,从而开发移动市场。要实现这一目标,最重要的是要充分考虑功能的开发、如何部署、如何随着时间的推移对其实施变更时确保功能的持续性。DevOps 有助于确保实现成功的移动应用程序生命周期,该生命周期将所有这些都考虑在内。它带来的不仅是自动化,还有业务成果,因为 DevOps 紧缩了开发人员和操作之间的反馈环路。开发人员可以更迅速地进行更改,而且操作可以加速其应用程序的优化和更新。