何为“框架”
我们这边的“框架”指的是软件开发框架,百度百科对软件框架的定义如下:
软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。
框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。
简而言之,框架就是制定一套规范或者规则(思想),大家(程序员)在该规范或者规则(思想)下工作。或者说使用别人搭好的舞台来做编剧和表演。
复用:降本提效的首选路径
以Java语言举例,spring/springboot简化应用层编程、mybatis简化数据库层编程、netty简化网络层编程等等,这类框架通过屏蔽技术细节、抽象通用能力或者流程、制定开发规范或者思想以及非常高的灵活性和扩展性,降低了开发者在项目开发过程中的技术复杂度。我们也都听过,复杂度本身不会减少,只会转移,本质在于复用。
作为非研究型或者重技术型项目,基本不会自研一套新的技术型框架,更多的还是考虑如何基于已有的技术降低常规项目开发过程中的业务复杂度,虽然业务各种各样,但是同类型或者相近业务仍然存在交集,所以要想降低业务复杂度,也可以基于复用的原则,沉淀那些交集的业务模块,然后再提供一种机制,快速组装这些模块完成构建交付,实现降本提效的目标。
实现能力复用的常见方式
1.配置化
2.模块化
3.抽象和沉淀通用能力
4.fork/copy
模块化复用
一、提供模块化体系(分)和集成能力(合)
开发框架提供的核心能力:
1.微应用注册
2.基础功能模块注册
3.微应用和基础功能模块集成
二、已经开发过的微应用和基础功能组件按需交付不同项目时
开发框架提供的核心能力:
1.OEM SaaS功能组件隔离
2.微应用实例化
3.基础功能组件实例化
三、当交付的项目有微应用和组件之外的自定义需求时
开发框架提供的核心能力:
SaaS自定义配置
配置化复用
功能雷同的微应用,但是在不同场景下存在少量差异的时候,通过配置进行交付
开发框架提供的核心能力:
微应用/主应用自定义配置和配置实例化
抽象通用能力
一、多个微应用或者基础功能组件都依赖的能力通过抽象并沉淀复用
此时通用能力输出的形态云端是云服务,应用层是SDK。
二、抽象并沉淀高频的微应用,并通过配置化实现业务零代码的方式复用,更进一步降低业务方研发成本
这类微应用属于优质微应用,应用场景更加灵活,但是前期开发成本也要高不少,但是不断的通过收集类似场景来抽象和沉淀,并逐步引导业务方开发同学往这个方向去开发,这类微应用也是后续各垂直业务方的核心业务资产之一。
复制
直接通过复制的方式实现复用,Github的fork就是典型,这种方式虽然low了点,但也是最灵活的。开发框架也尝试开源了一些基础通用的微应用,开放给开发者自行fork进行二次开发。