应用架构的核心使命是什么?
极客时间编辑部
讲述:初明明大小:3.50M时长:03:49
什么是架构?关于架构这个概念很难给出一个明确的定义,如果,硬是要给一个概述,阿里巴巴高级技术专家张建飞认为架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。日前,张建飞在公众号阿里技术发文,谈了谈应用架构的核心使命,以下为重点内容。
在介绍应用架构之前,我们先来看一下软件架构的分类。
随着互联网的发展,现在的系统要支撑数亿人同时在线购物、通信、娱乐的需要,相应的软件体系结构也变得越来越复杂。软件架构的含义也变得更加宽泛,我们不能简单地用一个软件架构来指代所有的软件架构工作。张建飞将软件架构划分为:业务架构、应用架构、分布式系统架构、数据架构、物理架构和运维架构。
典型的应用架构又包括分层架构;CQRS(Command Query Separation),即命令查询分离;六边形架构,即端口 - 适配器架构;洋葱圈架构等等。
而目前陈建飞团队正在用的应用架构是其团队自主研发的 COLA 应用架构,现已开源。在 COLA 的设计中,他们汲取了经典架构的优秀思想,此外还补充了规范设计和扩展设计,并且使用 Archetype 的方式,将架构固化下来,以便可以快速的在开发中使用。
COLA 的分层是一种改良了的三层架构,主要是将传统的业务逻辑层拆分成应用层、领域层和基础实施层。
在扩展设计中,COLA 有两个重要的概念,一个是业务身份,是指业务在系统唯一标识一个业务或者一个场景的标志。另一个是扩展点,即每个业务或者场景都可以实现一个或多个扩展点(ExtensionPoint)。将业务身份和扩展点组合,就形成了扩展坐标(ExtensionCoordinate),这样就可以从框架层面实现对不同租户,不同业务,不同场景的扩展定制了。整个阿里业务中台正是基于这个思想,实现多业务支撑的。
在规范设计方面,COLA 制定了一些列的规范:包括组件(Module)结构、包(Package)结构、命名等。
在架构思想上,COLA 主张像六边形架构那样,使用端口 - 适配器去解耦技术细节;主张像洋葱圈架构那样,以领域为核心,并通过依赖倒置反转领域层的依赖方向,最终形成如下图所示的组件关系。你可以点开文档查看此图。
纵观上面提到的所有应用架构,不难发现一个共同点,就是“核心业务逻辑和技术细节分离”。六边形架构、洋葱圈架构以及 COLA 架构的核心职责就是要做核心业务逻辑和技术细节的分离和解耦。
试想一下,业务逻辑和技术细节糅杂在一起的情况,所有的代码都写在 ServiceImpl 里面,前几行代码是做 validation 的事,接下来几行是做 convert 的事,然后是几行业务处理逻辑的代码,穿插着,我们需要通过 RPC 或者 DAO 获取更多的数据,拿到数据后,又是几行 convert 的代码,在接上一段业务逻辑代码,然后还要落库,发消息等等。
再简单的业务,按照上面这种写代码的方式,都会变得复杂,难维护。
因此,我认为应用架构的核心使命就是要分离业务逻辑和技术细节。让核心业务逻辑可以反映领域模型和领域应用,可以复用,可以很容易被看懂,让技术细节在辅助实现业务功能的同时,可以被替换。
最后我们发现,应用架构的道就是:“让上帝的归上帝,凯撒的归凯撒。”
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- 张建飞COLA的开源地址是:https://github.com/alibaba/COLA17
- 高大强真好¥听了三遍,请问开源地址在哪1
收起评论