大白话聊聊系统架构设计

一直想出一篇通俗的系统架构设计文章,我看很多系统架构设计的文章,要么讲的非常专业,要么讲一大堆的设计概念或列出一堆技术栈,看完之后只是觉得好厉害好专业好高深,然后没有办法在实际应用中落地,到了功能模块或系统设计的时候还是惯性思维的去做一些常规或通用的设计,在系统架构设计思考上缺乏深度。因此,针对这个痛点,结合我在日常系统架构中的实际体验与感悟,今天和大家来聊聊我理解的系统架构设计。

要讲清楚系统架构设计,首先需要知道什么是系统,什么是架构,什么是设计。因此,我会花一定篇幅进行介绍。理论的东西总是比较枯燥的,大家多谅解一下。最后才会聊聊为什么需要系统架构设计以及我对于系统架构设计的理解。

什么是系统

先来看一下百度百科的定义:

系统(钱学森)定义:系统是由相互作用相互依赖的若干组成部分结合而成的,具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。

系统(一般系统论创始人贝塔朗菲)定义:“系统是相互联系相互作用的诸元素的综合体”。

定义如果对象集S满足下列两个条件:

(1)S中至少包含两个不同元素;

(2)S中的元素按一定方式相互联系;

则称S为一个系统,S的元素为系统的组分。

系统,是内部各个要素、变量之间相互关系、相互作用的整体,关注的是各要素之间的关系。

那究竟什么是系统?大白话,所谓系统,就是一组相互连接的要素。

系统 = 元素 + 连接关系。

图片

一个手表就是一个精密的系统,普通的人观察一只手表,而优秀的人洞察几百个零件之间的连接关系。大小不同、位置不同,层次不同的齿轮之间通过有机的连接,从而相互作用转动起来,来带动时针、分针和秒针的转动,提供准确的时间。

人体也是一个系统,而且是一个多层级的系统,系统里面包含了子系统,子系统中还包含了更小维度的小系统。人体系统包括了:运动系统、消化系统、呼吸系统、循环系统、神经系统等,例如:消化系统里面包含了大肠、小肠、胃等器官等等。

从以上我们可以得出系统其实分不同层次的,不同层次之间都会存在不同的连接关系。

因此,系统 = 元素(多层级)  +  连接关系(多层级)。

那何为元素呢?元素在生活中像氢,氦,氮,氧,氟,氖,氯,氩,氪,氙,氡一样,都是同一类型的化学元素(气体元素),属于化学元素的一部分,如几何学的组成部分是点、线、角、圆、面、体。元素就是组成整体的部分。

大白话:所谓系统,就是把处于同一层次的多个元素按一定的连接关系组合起来形成一个有机的整体,不同的层次的元素是相互包含关系。例如,人体系统,就是由若干个子系统组成。消化系统又包含了大肠、小肠、胃等等。

什么是架构

架构(百度百科)定义:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

IEEE(电气和电子工程师协会)的定义:架构描述了一个系统的基本组织结构,包含了组成系统的组件、组件之间的关系、组件与环境之间的关系,以及指导上述内容进行设计和演化的原则。

图片

大白话:架构就是整体与部分的关系,部分与部分,部分与环境之间的关系的抽象描述。因此,架构的本质是一种描述且是抽象的。例如:上图就是山西五台山佛光大雄宝殿的建筑架构图。

什么是设计

设计(百度百科)定义:设计,是一个汉语词语,指“把一种设想通过合理的规划、周密的计划、通过各种方式表达出来的过程”。

根据工业设计师Victor Papanek 的定义,设计(Design)是为构建有意义的秩序而付出的有意识的直觉上的努力。更详细的定义如下:

第一步:理解用户的期望、需要、动机,并理解业务、技术和行业上的需求和限制。

第二步:将这些所知道的东西转化为对产品的规划(或者产品本身),使得产品的形式、内容和行为变得有用、能用,令人向往,并且在经济和技术上可行。(这是设计的意义和基本要求所在)。

大白话:设计是理解需求,为达成目标,寻找一种方法,表达出来的过程。设计的本质是解决问题和创造价值。

什么是系统架构设计

图片

从上面我们可以看出,系统是一组元素之间连接关系有机整体,而架构本质是一种抽象的描述,设计是表达出来的过程,因此所谓的系统架构设计定义如下:

系统架构设计定义:对元素之间连接关系有机整体,进行抽象描述,通过理解需求,为达成目标,寻找一种方法,表达出来的过程。

系统架构设计就是在理解需求,达成目标基础上,对于系统抽象描述的表达过程。它是一个创造性的过程,涉及到理解用户需求、环境条件和技术限制,然后构思和实施解决方案。

为什么需要系统架构设计

图片

从上图可以看出,框架、骨架也可以理解为架构设计的具象化表现方式,从而可以看出,什么样的骨架或框架,其实就在一定程度决定了一个系统的功能性(外观、造型、支撑)性能(跑的更快、行的更远、建的更高)。同样是动物,人的骨骼结构和猎豹的就不一样,不同的骨骼结构,虽然都拥有奔跑的功能,但是很显然,猎豹奔跑的速度是远超人类的,这是由于两者为了适应自然选择,长期人类和猎豹各自进化形成的结果。这就是:大自然的系统架构设计的结果,本质上是人和猎豹各生存诉求上不一致。

因此,我们得出来一个结论:骨架是长期演化的一种结果,骨架难以改变,骨架决定了动物基本功能和性能上限。

因此,在软件系统架构设计中,不同的业务诉求会导致系统架构设计也会不同,需要了解业务真实的期望、诉求和动机。根据工业设计师Victor Papanek 的定义,“理解用户的期望、需要、动机,并理解业务、技术和行业上的需求和限制。”

因为设计首先需要,理解用户的期望、需要、动机,因此,你如何理解用户需求就在很大程度上决定了你如何去进行系统架构的设计。系统架构设计的核心在设计,设计的核心在用户需求的深刻理解。

我突然想到,张一鸣曾经说过:“你对一个事情的认知才是关键,你在事情上的理解就是你在这件事情上的竞争力。”其实,我觉得系统架构设计也是这样的道理,所谓大道至简。

理解业务需求是第一步,深刻理解业务需求能够使我们了解到需求表象下的本质目的是什么。为什么呢,因为绝大多数业务的实际诉求并不是真实的或阶段性的,而是当下问题或当下诉求,这个是由业务发展阶段所决定的。

图片

如果业务是在不断的发展,业务也充满的这未知,到了一定发展阶段,业务诉求需要将帆船慢慢的改造为建议的游艇,当游艇发展了一定阶段,需要一个功能强大游轮。在这个过程中其实架构也是需要不断的演进的,但是有很多时候,这样的架构是无法进行演进,必须要推翻了现有架构才行。

图片

就像纸船一样,足够简单,其实不需要什么架构,简单的随手一折,就像我们随手做的设计,写的代码一样,就可以完成。同时,其实也就限定了,你不要要求太高,功能不能太复杂,性能要求不能太高。否则,系统架构就会出现支撑的极限值,从而推倒之前系统架构,重新构建新的架构。一个好的架构本质上就是为了解决业务一段时间内的系统诉求,系统在功能和非功能上满足业务快速发展的诉求。

业务是一点点不断发展的,业务诉求是不断变化的,而因为系统架构难以改变,或改变成本非常大,因此就成为了矛盾点,而系统架构设计本质上就是为了解决这个矛盾点。这也说明了我们会什么需要系统架构设计的最根本原因。

写在最后的话

因此,处于一定的业务发展阶段,架构既面向现在,更是面向未来。过于简单的系统且不会发生大变化的系统,本质上不需要所谓的架构设计,架构设计存在是为了解决复杂和变化,使系统变得更简单、可控和稳定。如果简单和不变,没有必要过度设计。

系统架构设计的核心是设计,设计的核心是对于系统或业务本身理解的深度,理解的深度决定了对于业务认知的深度,认知的深度决定了你对于业务长远的看法,长远的看法就决定你对于业务诉求那些是变的,那些是不变的理解。对于不变的理解,需要有抽象能力,找出业务发展的规律,这样才会最终看到业务发展的可能的形成终局形态,从而能够在架构设计中表现出来,用最小的架构设计代价,实现业务终局的功能和性能状态。当然以上只是一种理论状态,架构设计的本质都是平衡,平衡设计成本与最终目标的代价。

系统架构设计,是一个架构师主观思考的结果产物,因此,存在很强的主观性,为了让主观更为客观,为了让架构更能够贴合客户的业务,需要架构师对于业务有着非常深入的了解,并能够通过架构不断去抽象出业务本质的东西,并通过设计的过程,进行输出,从而指导后续整体系统架构的演进。

如果后续大家有兴趣,可以在评论区告诉我,我可以出一篇如何进行系统架构设计的文章,一起和大家相互进行学习和探讨。

图片

作者简介

17年软件行业从业经验,12年供应链系统设计与研发,10年汽配行业供应链数字化落地经验,善于思考业务本质,对于供应链业务以及数字化落地有着深刻的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值