本文开始前,问大家一个问题,你觉得一份业务代码,尤其是互联网业务代码,都有哪些特点?
我能想到的有这几点:
-
互联网业务迭代快,工期紧,导致代码结构混乱,几乎没有代码注释和文档。
-
互联网人员变动频繁,很容易接手别人的老项目,新人根本没时间吃透代码结构,紧迫的工期又只能让屎山越堆越大。
-
多人一起开发,每个人的编码习惯不同,工具类代码各用个的,业务命名也经常冲突,影响效率。
-
大部分团队几乎没有时间做代码重构,任由代码腐烂。
每当我们新启动一个代码仓库,都是信心满满,结构整洁。但是时间越往后,代码就变得腐败不堪,技术债务越来越庞大。
这种情况有解决方案吗?也是有的:
-
小组内定期做代码重构,解决技术债务。
-
组内设计完善的应用架构,让代码的腐烂来得慢一些。(当然很难做到完全不腐烂)
-
设计尽量简单,让不同层级的开发都能快速看懂并上手开发,而不是在一堆复杂的没人看懂的代码上堆更多的屎山。
而 COLA,我们今天的主角,就是为了提供一个可落地的业务代码结构规范,让你的代码腐烂的尽可能慢一些,让团队的开发效率尽可能快一些。
COLA 是什么
COLA 是由阿里大佬张建飞所提出的一种业务代码架构的最佳实践,并且已经在阿里云脚手架代码生成器中作为一个可选项,可见其已经拥有了一定影响力。
阿里云 Java 工程脚手架地址:https://start.aliyun.com/bootstrap.html 。
COLA 是 Clean Object-Oriented and Layered Architecture 的缩写,代表“整洁面向对象分层架构”。
在 COLA 4.0,也就是目前最新的版本中,作者将 COLA 拆分为 COLA 架构(Archetype)和 COLA 组件(Components)两个部分:
-
COLA 架构:COLA 应用的代码模板。
-
COLA 组件:提供一些非常有用的通用组件,这些组件可以帮助我们提升研发效率。
两者互不干扰,可以独立使用。
COLA 整体架构
首先主要谈谈 COLA 架构,COLA 的官方博文中是这么介绍的:
在平时我们的业务开发中,大部分的系统都需要:
接收 request,响应 response;
做业务逻辑处理,像校验参数,状态流转,业务计算等等;
和外部系统有联动,像数据库,微服务,搜索引擎等;
正是有这样的共性存在,才会有很多普适的架构思想出现,比如分层架构、六边形架构、洋葱圈架构、整洁架构(Clean Architecture)、DDD 架构等等。
这些应用架构思想虽然很好,但我们很多同学还是“不讲 Co 德,明白了很多道理,可还是过不好这一生”。问题就在于缺乏实践和指导。COLA 的意义就在于,他不仅是思想,还提供了可落地的实践。应该是为数不多的应用架构层面的开源软件。
COLA 提供了一整套代码架构,拿来即用。 其中包含了很多架构设计思想,包括讨论度很高的领域驱动设计 DDD 等。
注意:每个人对于架构设计都有着自己的理解。所以对于 COLA 的架构,本篇文章也仅仅只是我自己对于 COLA 的粗浅理解,大家可以批判看待。
COLA 分层架构
先来看两张官方介绍图