前言
Thoughtworks作为一家全球软件及咨询公司,每天需要面对各行各业的客户,接触各种各样的系统,因此我们经常需要对新的系统进行架构的设计、对遗留系统进行架构的分析和改造,本文就架构设计这一块,聊一聊架构设计通常都包含哪些内容,并通过一些示例分享,方便大家更加直观的感受。
架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计,通俗一点说就是“构建一个架子”。
一个架构是系统的基本结构,它由多个组件以及它们彼此间的关系而组成,并且在一定环境和原则下进行设计和演变。
当我们谈到架构的时候,一般是指两种类型的架构:业务架构和IT架构,业务架构关注于业务侧,IT架构关注于技术侧。IT架构和技术架构必须紧密联系,通过业务架构来指导IT架构的设计,IT架构最终也必须服务于业务。本文会就业务架构和IT架构,以及IT架构中常用到的应用架构、数据架构、技术架构、基础设施架构等内容给出具体的设计方法和示例分享。
业务架构
业务架构用于定义商业策略、管理、组织和关键业务流程,它可以用来告诉业务人员我们的系统可以支持哪些业务,也可以用来指导技术人员针对这些业务设计出相应的技术方案。
业务架构包括业务规划、业务模块、业务流程,对业务进行拆分,对领域模型进行设计,最后把现实的业务抽象出来。
因此设计一个良好的业务架构不但能够减少业务人员和技术人员之间的沟通成本,还能够让业务人员大致了解到未来进行大的业务变更时需要付出的成本,在需求侧进行更加合理的规划。
如何设计
通常可以使用一套方法论(如:DDD领域驱动模型)对项目需求进行业务边界划分,总体原则是对业务进行拆分、划分出业务边界,比如做一个电商网站,你需要把商品、订单、会员、仓库、采购、支付等业务边界很清晰的划分出来,然后规划出这些业务的周边支持。另外,在设计业务架构的时候不需要考虑技术方案的实现,诸如使用什么技术栈、怎样划分微服务、如何搭建基础设施等。
示例分享
下图是一个虚构的电商平台业务架构示例,包含的主要模块有“运维基础设施”、“三方服务依赖”、“基础服务”、“核心业务”、“运营支持”和“销售平台”,其中“核心业务”是重点,需要对业务进行拆分、划分出业务边界。
IT架构
IT架构是支持企业业务运营的一整套信息系统的架构,用于指导IT投资和设计框架,因此它不是特定的一种架构,而是一整套架构的集合。IT架构包含的内容有很多,一般项目上常用的有: