《架构整洁之道》的第 22 章,整洁的架构
原文摘要
过去的几十年中,我曾见过一系列关于系统架构的方法被提出,例如:六边形架构(Hexagonal Architecture),DCI 架构,BCE 架构 等。
虽然这些架构在细节上各有不同,但总体来说是非常相似的。他们有同一个设计目标:按照不同关注点对软件进行切割。也就是说,这些架构都会将软件切割成不同的层,至少有一层是只包含软件的业务逻辑,而用户接口,系统接口属于其他层。
按照这些架构设计出来的系统,通常都具有以下特点。
- 独立于款框架:这些系统的架构并不依赖某个功能丰富中的某个函数,框架可以被当成工具来使用,但不需要让系统来适应框架。
- 可被测试:这些系统的业务逻辑可以脱离 UI,数据库,Web 服务以及其他的外部元素来进行测试。
- 独立于 UI:这些系统的 UI 变更起来很容易,不需要修改其他系统部分,例如,我们可以在不修改业务逻辑的前提下将一个系统的 UI 由 Web 界面替换成命令行界面。
- 独立于数据库:我们可以轻易的将这些系统使用的 Oracle,SQL Server 替换成 Mongo,BigTable, CouchDB 之类的数据库。因为业务逻辑与数据库之间已经完成了解耦。
图22.1 转换为文字,四个同心圆,由内而外依次为
- 系统级业务逻辑:业务实体
- 应用级业务逻辑:用例
- 接口适配层:控制器,网关,展示器
- 框架与驱动程序:Web,用户界面,外部接口,数据库,设备
自我思考
在实践中去理解整洁的架构
- 尝试在水平层面去分解我理解的业务,画出业务分组图
- 抽离出业务后从架构的四个层去垂直分解,画出每个业务分组的分层图
- 了解我们的微服务,弄清楚各微服务之间关系,画出微服务依赖关系图