什么是架构以及架构的分类

写这篇文章的目的是弄明白到底什么是架构,我们在开发设计过程中会遇到各种各样的图,到底哪些是属于架构图?别人让你画架构图的时候,你要知道你画的到底是不是架构图,怎么画架构图。

一、什么是架构

把一个整体(完成人类生存的所有工作)切分成不同的部分(分工),由不同角色来完成这些分工,并通过建立不同部分相互沟通的机制,使得这些部分能够有机的结合为一个整体,并完成这个整体所需要的所有活动,这就是架构。

  1. 边界划分:根据要解决的问题,对目标系统的边界进行界定。
  2. 能力划分:对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。
  3. 交互机制:并对这些切分出来的部分,设立沟通机制。
  4. 根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作

二、架构的分类

架构可以分为:业务架构、应用架构、数据架构和技术架构,整体逻辑关系如下:
什么是架构以及架构的分类

  1. 业务(逻辑)架构:使用一套方法论对产品(项目)所涉及到的需求的业务进行业务边界划分,简单的讲就是根据一套逻辑思路进行业务的拆分,总体原则是对业务进行业务边界的划分,比如做一个企业订购服务网站,你需要把商品类目、商品、订单、订单服务、支付、退款很清晰的划分出来,而业务架构不需要考虑诸如我用什么技术开发、我的并发大怎么办、我选择什么样的硬件等等。
    什么是架构以及架构的分类
  2. 应用架构:应用是介于业务语言与技术语言之间,是对整个系统实现的总体上的架构,他需要指出系统的层次、系统开发的原则、系统各个层次的应用服务,例如,上述系统中可以分为、数据层(资源层)、数据服务层、中间构建服务层、业务逻辑层、表现层,并写明每个层次应用服务。应用架构是要说明产品架构分哪些应用系统,应用系统间是如何集成的,考虑两个事情:第一、考虑的是子系统间的关系。第二、考虑将可复用的组件或模块进行下沉,沉淀到平台层,为业务组件提供统一的支撑。
    什么是架构以及架构的分类
  3. 数据(持久化)架构:对存储数据(资源)的架构方法论,其架构原则同应用架构大同小异,即考虑到各个系统应用场景、不同时间段的应用场景对数据进行诸如数据异构、读写分离、数据库或NOSQL的策略、缓存的使用、分布式数据(数据库)策略等等。 数据架构主要解决三个问题:第一,系统需要什么样的数据;第二,如何存储这些数据;第三,如何进行数据架构设计。
    什么是架构以及架构的分类
  4. 技术架构:应用架构本身只关心需要哪些应用系统,哪些平台来满足业务目标的需求,而不会关心在整个构建过程中你需要使用哪些技术。技术架构是应接应用架构的技术需求,并根据识别的技术需求,进行技术选型,把各个关键技术和技术之间的关系描述清楚。技术架构解决的问题包括:如何进行纯技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。
    什么是架构以及架构的分类

总体来看,首先需要熟悉业务,形成业务架构,根据业务架构,做出相应的数据架构和应用架构,最后通过技术架构落地实施。业务架构是战略,应用架构是承上启下,一方面承接业务架构的落地,另一方面影响技术架构的选型。如何针对当前需求,选择合适的架构,如何面向未来,保证架构平滑过渡,这个是软件开发者,特别是架构师,都需要深入思考的问题。

没有最优的架构,只有最合适的架构,一切系统设计原则都要以解决业务问题为最终目标,脱离实际业务的技术情怀架构往往是空中楼阁。

说明:以上图片来自下边参考文章中。

参考文档:
https://blog.csdn.net/u010486495/article/details/79650505
https://blog.csdn.net/weixin_37625953/article/details/80141430
https://blog.csdn.net/enweitech/article/details/80505082
https://mp.weixin.qq.com/s/FnyubN7IfPL4POrQYSbAyw
https://terrastruct.com/blog/10-tips-diagrams-system-design-interview/
https://blog.csdn.net/ITLearnHall/article/details/82985480
https://hyperj.net/note.data-management/data-architecture/
https://www.infoq.cn/article/ZzI05OBgks2kspUWa5y7
https://www.infoq.cn/article/RQDwWxDcwbxtwU8LBFSG