作者:人月神话,新浪博客同名
简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践
今天介绍下组件化开发方面的内容,在前面我讲解微服务的时候就已经谈到,实际上微服务本身就是传统的业务系统组件化开发的一个升级。懂得基础的组件化开发和技术架构设计是也是过渡到当前主流的微服务架构思想的基础。
组件化开发概述
在这里先介绍和说明下基于组件化开发带来的优势。
首先,原有到系统级的粗粒度控制细化到了组件级别的细粒度控制,一个复杂系统的构建就是组件最终集成后的一个结果。每个组件都自己独立的版本,组件可以独立编译、独立打包和部署;
其次,产品组件化后可以真正实现完整意义上的按组件进行产品配置和销售,用户可以选择购买哪些组件,组件之间可以灵活的进行组装。另外,包括诸如配置管理、开发、测试、打包、发布完全控制到组件层面,会带来其它很多好处,如果一个组件进行小版本升级,提供给外部的接口没有任何变动,其它组件完全可以不用做任何测试。
组件化开发思路在SOA之前已经有成熟的组件化开发方法,只是在SOA出现后,SOA咨询、需求分析、设计实现方法论进一步融入到组件化开发中。各种底层基础技术框架的发展和完善,为组件化开发提供了根据完整的支持,推动组件化开发的发展,特别是在B/S架构下的组件化开发。
回到软件生命周期,我们再来阐述下组件化开发的核心思路和逻辑。
业务建模和业务组件阶段
流程驱动IT以及SOA思想的进一步融合,再次改变原有的组件开发重点关注技术组件层面的问题。业务建模阶段重点包括了业务架构和数据架构,其导入点仍然是端到端流程分析为主线导入。业务架构分析重点就是形成业务组件,也可以叫业务模块。
在这里重点还是业务组件的形成,要知道业务组件来源于流程分析和流程分解。业务组件本身就是高度内聚的多个业务功能的一个集合,业务组件之间本身就是松耦合,业务组件通过交互和集成可以完成一个更大的端到端流程。业务组件的识别仍然回归传统的流程分析加面向结构下面的CRUD矩阵分析等方法来分析高内聚性。矩阵分析包括了业务功能和业务数据之间的CRUD关系,也包括了业务功能和业务功能之间本身的关联和依赖性分析。
对于粗粒度的数据建模我们把它划归到业务建模阶段,该阶段的数据建模偏概念模型,后续在设计阶段再转化到物理模型和数据实体组件。同时该阶段的数据建模需要梳理出业务和流程中核心的基础主数据和核心业务单据,分析业务单据关联映射关系,协助前面谈到的CRUD矩阵分析。
在这个阶段最终需要输出的涉及到组件层面的产出物包括软件系统的业务组件,每个业务组件包含的业务功能或叫业务用例。