模块化工程构建系列(一)

  本系列主要解决的问题:针对一个功能庞大的企业应用 + 应用面对不一样区域的众多客户,如何作好应用的多版本管理、各区域线上模块的快速更新及系统的稳定性保障,能够采起对应用进行核心模块按模块化方式进行管理。前端

  产生背景:spring

  2017年接手一个已经维护了7年多的老项目,项目经历了几波人的维护,混杂了各类开发技术(JSP、Hibernate2.x、jdbc、spring、springmvc、Jquery1.x、Jquery2.x、bootstrap等),项目的结构也很混乱,依赖Jar的版本也很老(大部分是7年度的版本)。入驻项目的时候,主要待解决的问题:系统数据库常常死锁,客户端响应十分慢,各地版本发布混乱差别化功能可能是硬编码。sql

  虽然项目已经举步维艰了,市场前景却很好,已经为公司攻城拔寨全国好多区域了。为了快速响应客户的需求,势必每周要有线上版本更新,项目经过GIT进行版本控制,接手时GIT已经有50多个分支版本。看着头就痛!数据库

  初步解决方案:bootstrap

  一、数据库卡顿问题(项目使用sqlserver)后端

    优化关键业务的SQL(对查询增长 WITH (NOLOCK)),优化数据库关联字段的类型(保持类型一致、长度一致),升级hibernate4.x版本缓存

  二、GIT版本合并成一个开放版本(开放一个版本 + 各地发布前生成测试版本)架构

    对各版本的差别化功能,经过配置文件进行控制,配置文件采用 一主文件配置 + 多文件各地差别配置,发布的时候经过修改主配置文件的差别配置文件进行控制。mvc

  三、统一开发技术框架

    前端采用:Vue + Elment-UI,后端采用:Spring4.3.x + SpringMVC + Mybatis

  四、制定开发规范

    团队开发要高效,你们必须遵循必定游戏规则,才能解决没必要要的沟通成本。

  五、经过敏捷的开发方式重构关键业务模块。

  存在问题:

  一、由于整个项目依旧在一个工程里,版本发布没法作到基于模块版本更新,发布前的测试也没法针对更新模块独立测试(没法保证更新模块与其余模块的边界问题)

  二、团队的组员平常工做没有重点,各个模块穿插着开发。没法保障系统的稳定性。

  为了解决这些问题,尝试采用模块化拆分项目,创建模块领域模型,将整个项目划分红多个模块,各模块完成本模块的全部业务功能,同时提供对其余模块的服务,发布时经过组装子模块的方式对外发布;测试人员只需针对更新的模块进行测试。对团队按模块进行人员划分,保证核心模块开发人员的稳定性。

  模块化主要实现方式:

  一、架构图:

   

   二、模块化主要分层 4层 构建:

    1)基础技术框架层:提供先后端开发资源及其版本的控制,提供能力:缓存服务、系统配置服务、工具类(字符、日期、文件等);

    2)系统管理模块层:基于基础框架,实现各项目的基础管理模块,提供能力:字典、图标、菜单、用户、角色、权限管理、机构管理等;

    3)业务领域模块层:基于基础框架,实现本业务模块的全部业务功能及对外的服务;

    4)应用发布层:经过Maven构建方式组织应用须要的模块,构建发布应用。

相关文章
相关标签/搜索