跳到主要内容

模块化个性化交付

info

上一篇文章介绍了对于标准化产品,通过一键安装交付到客户环境,但对于大多数2B的软件交付场景,不同客户环境和需求都会有差异,个性化需求是常态,这些个性化需求增加了2B软件交付难度,那么又该如何提高个性化需求的交付的效率呢?

个性化交付的难点

对于企业产品交付,个性化程度越高,交付成本也就越高,交付的成本不仅有人力成本,还有时间成本,只有解决了个性化交付的效率问题,产品的利润率能大幅度提高,同时实现规模化交付。

个性化交付主要由交付环境的个性化和产品功能的个性化组成:

个性化环境面临的交付难题

  • 基础设施个性化,适配难度大 不同客户提供的基础设施资源多种多样。私有化场景下,不同的客户有自己独有的基础设施,比如不同的硬件,有的客户拥有自建机房,有的采购了阿里云、华为云等这样的公有云服务。操作系统也是各有不同,例如在企业内部常见的操作系统有 CentOS/Redhat/Ubuntu/Debian/麒麟OS 等等。对于CPU 架构来讲,有 x86 的服务器,也有 ARM 的服务器。不同的基础设施,软件都需要进行适配,提升了软件交付部门的工作量。

  • 离线环境,交付效率极低 一些客户环境考虑到安全因素,不允许连接外网,导致软件交付后期维护难度极大。售后人员由于网络离线无法及时收取异常告警信息,需要用户收取到告警反馈给售后人员,可能由于技术的差异导致问题定位和修复过程不顺利。由于离线,一些预期内的变更或升级需要出差客户现场,支持的成本比较高。

  • 由于交付环境变化,测试工作量大 由于交付环境个性化,不能保证功能都能正常工作,所以部署完成后,为了保障交付质量会有测试验证的流程,对于自动化测试无法覆盖还需要人工手动回归来保障交付的环境质量。交付产品越复杂,测试验证也就会越复杂。

个性化功能需求面临的交付难题

  • 缺少模块复用,定制开发后期维护困难 对于需要定制化开发的交付,通常基于现有代码直接修改,这种方式看起来复用了代码,但需要全量测试,而且每个客户一个分支,交付客户越多,管理会比较混乱,产品有新的版本需要花大力气给每个客户升级,在交付不同客户时开发的新功能,也不能快速积累到标准产品中。如果客户需要持续迭代,交付客户这个版本需要长期维护。
  • 无法建立从开发环境到客户环境的持续交付流程 为了让产品满足客户的个性化使用效果,通常需要有一个持续迭代的过程,这个过程中,客户会经常反馈,修改完后也希望能快速看到效果,这对交付的敏捷性提出很高的挑战,如果无法达到客户时效性的要求,就需要驻场开发,驻场开发会耗费更多人力物力。

Rainbond的解决方案

Rainbond是云原生多云应用管理平台,提供应用的全生命周期管理:应用开发、应用编排、应用交付、应用运维;用户在软件开发阶段利用 源码构建应用复制应用市场 功能搭建开发环境,快速构建一体化开发平台,业务系统的运维包括由平台进行管理(弹性伸缩、健康监测、异常预警),用户只需专注于业务代码,其他问题平台进行解决,有效解决开发过程中效率问题。

Rainbond从四个方面解决个性化交付的难题:

1、通过应用模版交付各种客户环境

在软件交付过程中Rainbond将业务系统抽象为应用模板,企业产品只要在Rainbond能够正常运行,即可通过应用模板发布至应用市场,应用模板中包含服务运行态所需的全部资源,通过应用发布至应用市场或导出离线安装包的形式,在任何已连接该应用市场的Rainbond集群中均可一键安装,完成应用交付。

  • 屏蔽客户环境差异,一套产品模版交付所有客户 Rainbond支持对接和管理各类公有云、私有云、物理服务器、边缘设备,企业产品的模版运行在Rainbond之上,所以交付客户将Rainbond 连同产品模版一同交付给客户,产品的模版是应用级包装和抽象,基于应用模板进行应用交付时,模板中包含了产品运行所需的全部资源,与底层操作系统隔离,只需关注自身业务,业务之外的技术问题:资源管理、运维、架构、治理、环境等,Rainbond平台一站式解决。

  • 无需单独适配,支持国产化CPU 在国家提倡国产化和信创的大背景下,最终客户的运行环境也在逐步使用国产化CPU,国产化CPU种类多,比如飞腾、鲲鹏、龙芯、申威等,适配这些CPU需要独立编译和打包,要全部适配工作量很大,Rainbond支持国产化CPU平台的自动编译和打包。国产化CPU编译和打包参考文章:x86架构应用如何向Arm架构低成本迁移

  • 离线环境自动化交付 在离线环境下基于应用模板进行交付,交付人员无需考虑众多的离线资源,只需将应用模板导入已安装的Rainbond平台,一键安装即可完成交付过程,规避了传统模式下需要导入大量的离线资源、下载更新文件以及交付遇到问题时寻求远程协助的不畅。离线交付可参考文章: 使用Rainbond实现离线环境软件交付

  • 保证环境一致性,避免重复测试 通过Rainbond的应用模版交付客户,应用模版包含企业产品运行环境的所有要素(软件包版本、环境变量、操作系统、配置文件、端口、依赖关系等等),这样能保证最终软件交付运行环境与开发测试环境的一致,减少了由于底层环境不同而需要的重复测试工作。

2、将产品功能模块化,按需交付和模块化拼装

Rainbond的模块化可参考文章: 使用Rainbond打包业务模块,实现业务积木式拼装

  • 根据客户需求,按模块选择性交付一个完整企业产品的拓扑 一个完整的企业产品会包括很多功能,对于不同客户根据费用和场景选择的功能也会有差异,通过Rainbond可以将产品功能实现模块化,类似上图,每一个六边形块都是一个模块,整个产品的所有模块可以通过应用模版一键交付到客户环境,然后删掉不需要的功能模块,就完成了模块化交付。
  • 以模块化业务拼装为基础,然后定制开发

当积累了可复用的模块化组件后,交付客户先以已经积累的模块化组件为基础,拼装基础架构,然后再开发需要定制的服务,新开发的服务有复用价值,又可以一键发布到应用市场,为后续交付助力。

3、面向功能定制的开箱即用开发环境

Rainbond提供的开发环境整合代码仓库、Web IDE、制品库、源码编译、持续构建、开发测试环境管理、发布和回滚等功能,并提供多种适合2B定制化交付的功能。 Rainbond的开发环境可参考文章: Rainbond整合GitLabRainbond集成Web IDE

  • 定制化环境快速搭建 要定制化交付客户,需要基于标准化产品定制开发,而搭建定制开发环境需要新建代码分支、安装数据库服务、配置编译和构建流程等、建立测试环境等,如果交付的项目比较多,后期管理会更加复杂。Rainbond通过应用复制功能可以一键搭建针对某个客户的开发测试环境,每个客户环境可以配置不同的开发人员,并设定相应权限,交付完成后,依然保留定制交付过程中的所有历史何上下文环境,即便人员有变动,其他人可以快速接手。

  • 复杂项目的一体化集成环境 对于复杂一些的项目,通常涉及业务集成和软件厂商的软件集成,以前通常的做法是,先各自完成自己的功能,再集成和联调,但由于业务边界、开发语言、运行环境等差异,集成过程会花费很长时间,甚至会把之前做的事情推倒重来。在敏捷开发里倡导尽早集成,Rainbond提供一体化集成环境,在项目开发就为集成做准备,每个厂商在Rainbond有各自的环境,不同厂商的接口通过Rainbond的提供微服务架构集成,Rainbond的微服务架构支持跨语言、跨协议服务编排,并通过拓扑图了解项目整体架构和依赖关系。

  • 在客户现场的离线开发环境 通常情况下,使用Rainbond在公司内部环境进行开发,基于应用市场或离线包完成交付,后续产品更新或bug修复可完成持续升级,但涉密场景或用户数据隐私场景,客户要求在他们服务器上搭建环境开发,而且通常不能上网,也就是需要离线的开发测试环境, 此时开发人员需要准备大量离线资源,包括IDE工具、maven/npm依赖包,导致开发环境搭建异常麻烦,而Rainbond在离线环境能够提供全套的离线开发环境,即开即用,包括IDE工具、依赖包一站式解决,解决离线环境开发难的难题。

4、远程持续交付和运维

客户交付是一个持续的过程,定制开发的过程需要持续迭代,新版本发布或bug修复需要给客户升级,功能交付完成需要保障运行稳定性,通过Rainbond可以实现在公司完成上述过程。

  • 远程持续迭代和交付 通过Rainbond在公司开发测试产品,并发布到应用市场,应用市场管理产品的所有版本,包括各种定制化客户版本。针对客户环境是否可以上网,支持两种流程:

    1. 客户环境可以联网,客户通过分配的token连接到应用市场,并一键安装指定版本的产品和版本,如果发布新的版本,客户环境可以自动发现,客户可以自助升级。
    2. 客户环境不能联网,从应用市场导出离线软件包,发给客户,客户自助导入,并一键安装或升级。
  • 远程客户环境运维 Rainbond提供应用自动化运维的能力,并可以通过Web界面监控和管理,对于可以联网的客户环境,远程就可以完成所有后期运维。Rainbond实现应用管理和运维参考:云原生应用管理和运维

总结

对于2B的软件企业的个性化交付,Rainbond实现交付过程自动化,并最大限度少写代码,能大幅度减少人员投入,通过应用市场积累的模块化组件,还能提高企业面对市场的响应速度,随着业务逐渐模块化,Rainbond逐步成为2B软件企业全流程的PaaS平台,是扩展市场和提高企业竞争力的利器。