COLA分为两个部分,COLA架构和COLA组件,参见:https://github.com/alibaba/COLA。
架构的意义 就是 要素结构:
- 要素 是 组成架构的重要元素;
- 结构 是 要素之间的关系。
而 应用架构的意义 就在于
- 定义一套良好的结构;
- 治理应用复杂度,降低系统熵值;
- 从随心所欲的混乱状态,走向井井有条的有序状态。
经过多次迭代,目前相对稳定、可靠的应用架构版本:COLA v4
好的应用架构,都遵循一些共同模式,不管是六边形架构、洋葱圈架构、整洁架构、还是COLA架构,都提倡以业务为核心,解耦外部依赖,分离业务复杂度和技术复杂度等。
COLA架构区别于这些架构的地方,在于除了思想之外,还提供了可落地的工具和实践指导。
为了能够快速创建满足COLA架构的应用,COLA提供了两个archetype
,位于cola-archetypes
目录下:
cola-archetype-service
:用来创建纯后端服务的archetype
。cola-archetype-web
:用来创建adapter
和后端服务一体的web
应用archetype
。
此外,COLA还提供了一些非常有用的通用组件,这些组件可以帮助业务开发提升研发效率。
这些功能组件被收拢在cola-components
目录下面。到目前为止,COLA已经沉淀了以下组件:
组件名称 | 功能 | 依赖 |
---|---|---|
cola-component-dto |
定义了DTO 格式,包括分页 |
无 |
cola-component-exception |
定义了异常格式, 主要有 BizException 和SysException |
无 |
cola-component-statemachine |
状态机组件 | 无 |
cola-component-domain-starter |
Spring 托管的领域实体组件 |
无 |
cola-component-catchlog-starter |
异常处理和日志组件 | exception 、dto 组件 |
cola-component-extension-starter |
扩展点组件 | 无 |
cola-component-test-container |
测试容器组件 | 无 |
应用代码结构:
- 需求分析和讨论
- 上下游方案讨论和对齐
- 系分方案设计和串讲
- 项目整体节奏统筹
- 开发、自测和联调
- 测试跟进
- 线上验收和发布
- 稳定性保障(事前、事中、事后)