前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过COLA看应用架构

通过COLA看应用架构

作者头像
春哥大魔王
发布2020-05-08 17:56:10
1.1K0
发布2020-05-08 17:56:10
举报

什么是架构?架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。

先来看一下软件架构的分类。

随着互联网的发展,现在的系统要支撑数亿人同时在线购物、通信、娱乐的需要,相应的软件体系结构也变得越来越复杂。

软件架构的含义也变得更加宽泛,我们不能简单地用一个软件架构来指代所有的软件架构工作。

张建飞将软件架构划分为:业务架构、应用架构、分布式系统架构、数据架构、物理架构和运维架构。

典型的应用架构又包括分层架构;CQRS(Command Query Separation),即命令查询分离;六边形架构,即端口 - 适配器架构;洋葱圈架构等等。

在 COLA 的设计中,他们汲取了经典架构的优秀思想,此外还补充了规范设计和扩展设计,并且使用 Archetype 的方式,将架构固化下来,以便可以快速的在开发中使用。

COLA 的分层是一种改良了的三层架构,主要是将传统的业务逻辑层拆分成应用层、领域层和基础实施层。

在扩展设计中,COLA 有两个重要的概念:

一个是业务身份,是指业务在系统唯一标识一个业务或者一个场景的标志。

另一个是扩展点,即每个业务或者场景都可以实现一个或多个扩展点(ExtensionPoint)。

将业务身份和扩展点组合,就形成了扩展坐标(ExtensionCoordinate),这样就可以从框架层面实现对不同租户,不同业务,不同场景的扩展定制了。整个阿里业务中台正是基于这个思想,实现多业务支撑的。

在规范设计方面,COLA 制定了一些列的规范:包括组件(Module)结构、包(Package)结构、命名等。

在架构思想上,COLA 主张像六边形架构那样,使用端口 - 适配器去解耦技术细节;主张像洋葱圈架构那样,以领域为核心,并通过依赖倒置反转领域层的依赖方向,最终形成如下图所示的组件关系。

纵观上面提到的所有应用架构,不难发现一个共同点,就是“核心业务逻辑和技术细节分离”。

六边形架构、洋葱圈架构以及 COLA 架构的核心职责就是要做核心业务逻辑和技术细节的分离和解耦。

试想一下,业务逻辑和技术细节糅杂在一起的情况,所有的代码都写在 ServiceImpl 里面,前几行代码是做 validation 的事,接下来几行是做 convert 的事,然后是几行业务处理逻辑的代码,穿插着,我们需要通过 RPC 或者 DAO 获取更多的数据,拿到数据后,又是几行 convert 的代码,在接上一段业务逻辑代码,然后还要落库,发消息等等。

再简单的业务,按照上面这种写代码的方式,都会变得复杂,难维护。

因此,应用架构的核心使命就是要分离业务逻辑和技术细节。

让核心业务逻辑可以反映领域模型和领域应用,可以复用,可以很容易被看懂,让技术细节在辅助实现业务功能的同时,可以被替换。

最后我们发现,应用架构的道就是:“让上帝的归上帝,凯撒的归凯撒。”

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档