基于业务单元的开发与部署模式

简介:

许多的人注重开发效率,但是老鸟们不仅关注开发效率,更关注维护与技术支持效率,因为他们深深知道,一个有生命力的产品,维护与技术支持成本占整个产品开发运维成本的70%以上,也就是说开发成本只占不到30%的成本。

对于一个传统的MIS系统来说,别的不说,光数据库表结构的维护脚本就够受的了,设你的用户有几十家,或上百家,他们使用的版本可能是1.0到m.n中间的任何一个版本,设总共有x个版本。

这个时候一般有两种升级方法,一种是每做一个版本,就编写从前面任意一个版本到当前版本的升级脚本,这样脚本就有x套脚本,还要进行测试,如果这个时候还要跨数据库,比如:mysql,oracle,ms sql,informix,sybase,...,开发人员和测试人员无法承受之重,所以,按这种方法,工作量是越来越大,包袱越来越重。

那就说第二种方法,就是每次只做从上一个版本到当前版本的升级脚本。这种情况下,开发成本,测试成本可以相对得到较好的控制,但是升级的时候,就很麻烦了,需要识别当前用户的是哪个版本,然后再一个一个版本升上来,如果有自动化升级工具还好,如果没有的话,现场支持人员估计够受的,中间只出出现一点问题,可能就不知道后续应该如何处理了。

上面只说了数据库脚本,那么再说说程序,一般来说有个主线,还会有许多分支,根本不同用户购买的License不同,可能集成的内容也不一定相同,如果再有一些客户化开发,这里带来的问题,比数据脚本带来的问题还复杂。

曾经看到过某一团队,开发了一个系统,全在一个war工程中,结果就是开发效率低下,测试调试困难,没有人对整个系统全部熟悉。所以最后开发维护都无法维系,后续扩展无法继续,等待的结果就是一个,什么时候没有人能坚持的时候,它就可以死掉了。

所以,Tiny框架在设计之初,就在深入的思考这个问题。为此提出了业务单元的概念,就是把一个相对独立的模块合并为一个业务单元,一个业务单元包含了所以服务及界面展现以及数据初始化,数据库结构的各种资源及程序文件。

当然,业务单元也可以依赖其它的业务单元,如此就可以构建更大的系统及平台。在程序运行时,框架会读取BU中的数据库定义,初始化数据,等等,然后进行处理,保证不需要人工干预,就可以正确的运行。

这个时候,就实就引入了一个相当严重的问题,就是这些文件包含js,css,class,各种配置文件等等都放在java包,程序是怎么访问到它们的呢??为此我们做深入的扩展,使得各种资源都可以分散到jar包文件中,由此才得以实现模块化的需求。实际上模块化的想法很早就有,但是一直没有落地,就是因为资源文件方面的问题无法解决。

因此,解决了数据库初始化,菜单初始化,程序分解与集成等各种问题,程序员们要做的事情就是:我只要保证自己运行是正确的,整个系统就是运行正确的。不会因为是开发期、维护期,版本数多少影响到工作量。


相关文章
|
6月前
|
存储 容灾 Serverless
函数计算产品使用问题之如何实现跨区域协同工作的需求
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
|
存储 开发工具 Android开发
代码协同模式使用问题之创建特性分支,如何解决
代码协同模式使用问题之创建特性分支,如何解决
|
7月前
|
开发者 Windows
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决
三类代码协同模式问题之判断项目的协同规模决定采用集成分支问题如何解决
|
9月前
|
前端开发 Nacos 微服务
平台设计-部署模式
平台有多做部署模式
|
存储 数据库 开发者
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
|
架构师 测试技术
【业务架构】如何构建业务能力图?
【业务架构】如何构建业务能力图?
「业务架构」定义业务能力-备忘单
「业务架构」定义业务能力-备忘单
|
测试技术
【业务架构】通用业务能力列表
【业务架构】通用业务能力列表
|
数据挖掘 微服务
业务架构映射为应用架构
业务架构映射为应用架构
业务架构映射为应用架构
|
存储 边缘计算 人工智能
边缘计算系统逻辑架构:云、边、端协同,定义及关系
边缘计算系统逻辑架构:云、边、端协同,定义及关系
9621 0
边缘计算系统逻辑架构:云、边、端协同,定义及关系

热门文章

最新文章