跳到主要内容

离线环境定制开发和持续迭代

离线环境定制开发的痛点

在应用交付给客户后,客户看到效果后会反馈问题,再持续迭代,直到客户满意,过程中需要频繁升级产品。在这种场景下,又会遇到以下问题。

定制化交付迭代效率低

定制化交付场景中,针对客户反馈的问题,如果开发人员在公司定制开发,升级过程复杂,沟通低效。而如果开发人员在客户现场驻场开发,没有好的开发工具和环境,开发效率低,人力投入大;

后期维护难度大

应用交付完成后,后期需要保障应用运行的稳定性,离线环境远程没办法运维,报警没办法发出来,运维难度大;当产品有bug、一些预期内的变更或产品升级都需要出差客户现场,支持的成本比较高。

使用 Rainbond 实现定制开发和持续迭代

定制开发

如下图所示。开发人员在开发环境进行开发,可以通过源码、镜像以及应用市场沉淀的通用模块将业务拼装起来。经过测试人员验证完成后,即可以发布 1.0 版本。借助应用市场的能力,可以将该应用的能力沉淀下来。交付人员导出应用模版,在客户环境导入后。即可在客户环境一键部署起来。Rainbond 为你屏蔽了底层的差异,消除了环境的不一致性,使你的应用与开发测试环境的应用完全一致。这解决了开发人员驻场开发效率低以及后续升级困难的问题。

持续迭代

当应用交付到客户环境后,客户体验后往往会提出一些个性化需求,开发人员得到这些反馈后,只需要在开发环境继续创建新的业务模块D与原应用进行拼装即可。最后再次发布 2.0 版本到应用市场。交付人员导入到客户环境后,可以由用户来决定什么时候升级。升级时会展示出所有变更,并实现滚动升级。避免了业务中断,同时保证了业务应用的一致性。

其中,Rainbond 的应用模版具备版本控制机制,这意味着在同个应用模版的不同版本之间可以快速的升级与回滚。

  • 对于开发人员而言,在源应用一侧作出需要的变更,无论是代码的改动后构建,还是新加入其他组件,都会在下一次应用模版发布过程中叠加到新版本的应用模版中去。开发人员务必注意发布时定义的版本号,Rainbond 通过它来确定是否进行升级。

  • 对于交付人员而言,只需要将不同版本的应用模版导入到交付环境中,Rainbond 就会自动识别同个应用模版的不同版本,并可以进行一键升级操作。

offline-continuous-delivery

操作步骤

准备工作

  1. 拥有两套 Rainbond 集群,模拟开发环境及交付环境(开发环境为在线环境,交付环境为离线环境)。

  2. 开发环境安装,参考快速安装,交付环境安装,参考离线安装

  3. 已完成应用的第一次交付,可参考微服务架构离线交付

制作新的应用模版

  1. 完成第一次应用交付以后,可以按照客户需求继续在开发环境中开发。如上图所示,增加业务模块D,将该业务与原有应用继续拼装,当开发测试完成后,即可再次进行发布。

  2. 在应用拓扑图页面左侧,选择发布,此时发布记录中会展示出发布历史,继续选择发布到组件库, 即可进入模版设置页面。此时只需要选择之前发布的模版,再输入新的版本号,确认发布即可。各个参数详细说明参考附录1: 模版设置页面参数说明

  3. 接下来在 平台管理->应用市场->本地组件库,即可看到发布好的应用模版。点击进入,可以看到该模版下所有版本,如下图所示。

one-key-deploy-update-6.png

caution

注:仅有企业管理员可以看到平台管理按钮。

导出应用模版

  1. 平台管理->应用市场->本地组件库中,在刚刚发布完成的应用模版最右侧,选择导出应用模版,你可以选择需要导出的版本,和导出哪种类型的包。这里我们选择应用模型规范,以及刚刚发布的版本,点击导出。这个包将包含应用完整的运维特性,用于持续交付和升级。

  2. 导出完成后,将应用模版下载到本地,保存至U盘/光盘等移动存储设备中,带到离线交付环境中去。

离线环境中升级应用

  1. 在已经部署好 Rainbond 的离线环境中,我们先打开平台管理->应用市场,选择离线导入,上传刚刚下载好的应用模版。上传完成后,点击确认导入

  2. 等待导入完成后,会自动跳转回应用市场

  3. 此时我们回到微服务架构离线交付中已经交付完成,正在运行的应用页面中,在左侧边栏升级选项中。可以看到 Rainbond 识别到了最新的版本,而升级操作也是一键触发,非常好用。

one-key-deploy-update-7.png

caution

注:升级过程中不会变动环境配置类信息,环境变量的值、配置文件的内容、持久化存储需要人为改动才会生效。

一键回滚

  1. 在升级版本上线后出现异常情况需要回滚时,平台提供了一键回滚功能,在升级->升级记录界面选择对应记录点击回滚按钮即可对升级操作进行回滚。
caution

注:在回滚的过程中,新增组件并不会被删除,如需变更,需要人为操作。