一、 开端
软件行业看起来从无到有发展了几十年,完成了传统行业需要上千年的演进才能达到的高度,同时也给传统行业生产力带来革命性飞跃。而这种飞跃式的发展,也暴露出软件行业的基础薄弱的问题。就像系统架构这个基础的名词一样,现在没有形成一个行业的标准。但它又是如此的重要,因为每一个项目都必须经历架构设计过程,且对项目是否成功有着最为直接的影响。
要知道什么是系统架构,那么最简单的方式就是按字面拆开。要知道什么是系统,什么是架构,什么是系统架构,这三个问题。。。
二、什么是系统?
世界上存在很多的“系统”(非指软件系统),一个系统可以很简单,也可以很复杂。并不仅仅是一些事物的简单集合,而是一个由一组相互连接的各种要素构成的、能够实现某个目标的整体。
任何一个系统都包括两种核心构成要件:要素、连接。
例如:人就是一个很复杂的系统,外部看是由头、躯干、四肢等组成,再往细一层看的话,就由骨骼和各个脏器组成。他们由各种软件组织和神经连接在一起,整体目标就构筑了一个完整的,有着自由思想的人类。
除了生物,一个学校,一个医院,一个国家,太阳系也都是一个系统。
一个系统可以包含子系统,而它也可以嵌入到其他更大的系统之中,成为那个更大的系统中的一个子系统。
三、那么,什么不是一个系统?
那么,问题来了。有什么事物不是一个系统吗?没有任何内在连接或功能的随机组合体就不是一个系统。举例来说,随机散落在路边的一个石头,就其本身来说就不是一个系统,因为它没有什么特定的功能,没有什么系统目标。
一个系统应该有一些自我特征,例如具有内在机制、自组织、适应性、连接性、目的性,并可以自组织、自我保护与演进。
四、什么是一个良好的系统?
一个成功的系统,需要实现个体目标和系统总目标的一致性。一个良好的系统,只要不触动系统的内在连接和总目标,即使替换掉所有的要素,系统也会保持不变,或者只是发生缓慢的变化。
然而,系统目标的变化却会极大地改变一个系统,即使其中的要素和内在连接都保持不变。因此,系统中最不明显的部分,即功能,才是系统行为最关键的决定因素,虽然内在连接也是比较重要的。例如一个客户画像的系统,突然将系统目标改成构建产品画像的系统。那这个还能说什么呢?什么都得变了。
五、什么是架构?
当系统规模膨胀,人类认知面临极限时,架构应运而生。它是系统的顶层设计决策框架,回答三个核心问题:
1.核心要素是什么?
2.这些要素如何组织与交互?
3.如何去满足系统目标?
架构的核心价值
1.应对复杂性:通过抽象和分解,管理大规模系统的设计难度。
2.指导演进:提供长期演化的约束和原则,避免系统腐化。
3.风险控制:提前识别设计冲突(如性能瓶颈、单点故障)。
架构的本质是“设计决策”(Design Decisions),包括:
1.结构决策(如分层架构 vs 微服务)
2.技术决策(如 SQL vs NoSQL 数据库选型)
3.质量决策(如为高可用性设计冗余节点)
4.约束决策(如“所有服务必须无状态”)
六、什么是系统架构?
系统架构=系统 X 架构。
系统架构(System Architecture) 是:“针对一个复杂系统,定义其要素构成、要素间关系,以及要素与外部环境交互方式的顶层设计框架,以确保系统整体能够高效、可靠地达成目标。”

一个终极比喻:系统架构如同城市规划
系统 = 一座城市(包含建筑、道路、水电管网等元素)。
架构 = 城市规划图(定义功能区划、交通流向、基础设施布局)。
无架构的后果:
道路突然中断(接口不一致)
电厂建在住宅区(组件冲突)
无法扩建新城区(扩展性差)
结论:系统架构是复杂系统成功的“第一性原理”。
七、什么是软件系统架构?
那么什么又是软件系统架构呢?软件系统架构属于系统架构的一个子集。目前虽然暂无统一的标准,但是个人认为目前比较有权威性的定义主要有两类,一类是ISO,另一类是TOGAF。
★ISO将架构定义为:一个系统的基础组织,体现在系统组件、组件之间及组件与环境之间的相互关系,以及对系统设计和演进进行治理的原则中。
★TOGAF中,根据背景环境,设定了两种含义:
1、一个系统的正式描述,或指导系统实施的组件层级详细计划;
2、组件结构、组件之间相互关系,以及对这些组件的设计和随时间演进的治理原则和指南。
软件架构的基本要素包含:系统的结构,系统必须支持的架构特征、架构决策以及设计原则。
四者之间的关系:为满足「高可用性」(特征),决策「采用微服务架构」(决策),设计「服务独立部署+熔断机制」(结构),并遵守「故障隔离原则」(原则)——任一服务宕机不影响全局。
在TOGAF中,架构分成了四种架构域:
1.业务架构,定义业务战略、治理、组织和关键业务流程。
2.数据架构,描述组织的了逻辑与物理数据资产及数据管理资源的结构。
3.应用架构,提供包含待部署的独立应用及其之间交换作用和与组织的核心业务流程间的关系的蓝图。
4.技术架构,描述支持业务、数据和应用服务部署所需的逻辑的软件与硬件能力,包括IT基础设施、中间件、网络、通信、处理和标准等。
这些架构域是软件系统架构的核心,这个可以算是现在的标准了,后面再逐个说明。
八、涌现,一个必须提到的词。
在系统架构中,“涌现”(Emergence)是一个最近提的比较多的词,其实没啥特别多。就是指系统整体表现出其组成部分单独存在时无法实现的特性、行为或能力。这是一种典型的“整体大于部分之和”的现象,源于组件间复杂互动的质变结果。其次,也可以说是一种意外获取的能力。
涌现可以分为有益的,也可以私活有害的。
涌现是复杂系统的灵魂所在。优秀的架构不是事无巨细的控制,而是构建能激发有益涌现的规则场域——当简单、清晰的局部互动规则被精心设计,系统便能在动态变化中自组织、自适应,最终展现出超越设计的生命力。哈哈。
九、后记
做了很多年的架构,开始想慢慢梳理了。一天天,一步步的来吧。看看能系统化的搞一番不。
十、 参考资料:
1. 《TOGAF标准9.1》
2. 《系统之美》
3、《系统架构》